美文网首页
XcodeBuild 命令行打包

XcodeBuild 命令行打包

作者: 看个客人 | 来源:发表于2018-04-24 11:53 被阅读19次

最近看了下命令行打包,发现网上文章不全,所以总结了下。

  • 1 进入项目路径
    cd /Users/chentao/Desktop/safeBoxApp/DamoApp
  • 2 清除
    xcodebuild clean -project /Users/chentao/Desktop/safeBoxApp/DamoApp/DamoApp.xcodeproj -configuration ${CONFIGURATION} -alltargets
  • 2 archive 生成xcarchive文件
    xcodebuild archive -project /Users/chentao/Desktop/safeBoxApp/DamoApp/DamoApp.xcodeproj -scheme DamoApp -archivePath bin/DamoApp.xcarchive
  • 3 根据相关配置的plist文件导出相关的ipa包
    xcodebuild -exportArchive -archivePath /Users/chentao/Desktop/safeBoxApp/DamoApp/bin/DamoApp.xcarchive -exportPath /Users/chentao/Desktop/safeBoxApp/DamoApp/DamoApp.a -exportOptionsPlist /Users/chentao/Desktop/safeBoxApp/DamoApp/ExportOptions_adoc.plist

上述内容中 DamoApp是我项目的名字,ExportOptions_adoc.plist 是相关的配置内容。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>compileBitcode</key>
    <false/>
    <key>method</key>
    <string>enterprise</string>
    <key>provisioningProfiles</key>
    <dict>
        <key>com.safeBox.keychan</key>
        <string>SafeBoxInhouseCer</string>
    </dict>
    <key>signingCertificate</key>
    <string>iPhone Distribution</string>
    <key>signingStyle</key>
    <string>manual</string>
    <key>stripSwiftSymbols</key>
    <true/>
    <key>teamID</key>
    <string>37DS582758</string>
    <key>thinning</key>
    <string>&lt;none&gt;</string>
</dict>
</plist>

打包的方式基本有四种,对应的plist文件的一些参数也会不一样

上架appstore:
method = app-store, compileBitcode = YES, uploadSymbols = YES;
企业证书包(企业内部使用):
method = enterprise,compileBitcode = NO;
adoc包;
method = enterprise,compileBitcode = NO;
develope 包:
method = development,compileBitcode = NO;
请注意:项目证书所需手动配置。

随后发现一行行敲打指令很麻烦,就写了个python脚本代码如下:

 #!/usr/bin/env python
import  subprocess

def arriveProject():
    archiviCmd ="cd /Users/chentao/Desktop/safeBoxApp/DamoApp";
    process = subprocess.Popen(archiviCmd,shell = True);
    process.wait()

    archivieReturnCode = process.returncode;
    if archivieReturnCode != 0 :

    else :
        cleanProject();

def cleanProject():
    archiviCmd ="xcodebuild clean -project /Users/chentao/Desktop/safeBoxApp/DamoApp/DamoApp.xcodeproj -configuration ${CONFIGURATION} -alltargets";
    process = subprocess.Popen(archiviCmd,shell = True);
    process.wait()

    archivieReturnCode = process.returncode;
    if archivieReturnCode != 0 :

    else :
        buildWordSapce();


def buildWordSapce():
    archiviCmd = "xcodebuild archive -project /Users/chentao/Desktop/safeBoxApp/DamoApp/DamoApp.xcodeproj -scheme DamoApp -archivePath /Users/chentao/Desktop/safeBoxApp/DamoApp/bin/DamoApp.xcarchive"
    process = subprocess.Popen(archiviCmd,shell = True);
    process.wait()

    archivieReturnCode = process.returncode;
    if archivieReturnCode != 0 :

    else :
        exportIpa();


def exportIpa():
    archiviCmd ="xcodebuild -exportArchive -archivePath /Users/chentao/Desktop/safeBoxApp/DamoApp/bin/DamoApp.xcarchive -exportPath /Users/chentao/Desktop/safeBoxApp/DamoApp/DamoAppIpa  -exportOptionsPlist /Users/chentao/Desktop/safeBoxApp/DamoApp/ExportOptions_appstore.plist";
    process = subprocess.Popen(archiviCmd,shell = True);
    process.wait()

    archivieReturnCode = process.returncode;
    if archivieReturnCode != 0 :

    else :
        cleanArchiveFile()
        cleanArchiveBin()


def cleanArchiveFile():
    archiviCmd ="rm -r -f /Users/chentao/Desktop/safeBoxApp/DamoApp/build";
    process = subprocess.Popen(archiviCmd,shell = True);
    process.wait()

    archivieReturnCode = process.returncode;
    if archivieReturnCode != 0 :
        print ("555555")

    else :

        print ("00000")

def cleanArchiveBin():
    archiviCmd ="rm -r -f /Users/chentao/Desktop/safeBoxApp/DamoApp/bin";
    process = subprocess.Popen(archiviCmd,shell = True);
    process.wait()

    archivieReturnCode = process.returncode;
    if archivieReturnCode != 0 :
    else :
def main():
    arriveProject()
if __name__ == '__main__':
    main()

最后,因为有些项目使用了cocapods,在这里面打包命令有些修改,如下:

cd /Users/chentao/Desktop/ehDEMO/DamoApp 
rm -r -f  build/
xcodebuild -workspace DamoApp.xcworkspace  -scheme DamoApp -archivePath build/DamoApp.xcarchive archive

xcodebuild -exportArchive -archivePath build/DamoApp.xcarchive -exportPath build -exportOptionsPlist ExportOptions_enterprise.plist

相关文章

网友评论

      本文标题:XcodeBuild 命令行打包

      本文链接:https://www.haomeiwen.com/subject/qkndlftx.html