iOS自动打包脚本会用到的相关命令

iOS自动打包脚本相关命令

xcodebuild

终端执行man xcodebuild或xcodebuild -h查看具体使用方法。

xcodebuild命令详解

Plist 文件操作

终端执行 /usr/libexec/PlistBuddy -h 查看使用方法。

PlistBuddy简单使用

一、批量出包所需的物料

从事游戏行业的开发者一定深知行业内马甲包的乱相,吃这一碗饭,在此不做评判。下面简单整理一下整个出包过程。

1.一个完整xcode工程

2.相关参数,存在在info.plist中的系统参数或自定义参数

3.p12证书与distribution描述文件

4.需要替换的资源文件,icon等

二、获取信息

用一个xcode工程出包,图形化界面的Xcode只需要点一下archive,选择导出类型,证书,然后export即可。同理,命令行出包的步骤也是如此。相关命令如下:

a.导入p12证书到keychain

security import p12证书路径 -k ~/Library/Keychains/login.keychain-db -P p12证书密码 -T /usr/bin/codesign

//1 identity imported.

b.获取friendlyName eg:iPhone Distribution:Zeng Yang (49P4585YSG)

openssl pkcs12 -nodes -in p12证书路径 -info -nokeys -passin 'pass:bingniao' 2>/dev/null | grep 'friendlyName'

//friendlyName: iPhone Distribution: Zeng Yang (49P4585YSG)

c.输出mobileprovision相关信息

openssl smime -in .mobileprovision的描述文件 -inform der -verify

写入信息到临时plist文件,方便后续读取
openssl smime -in .mobileprovision的描述文件 -inform der -verify >~/tmp_provisionProfile.plist

d.读取相关信息 UUID、mobileProvision、team id等

//获取UUID  eg:acc104c7-ccf6-402e-92cd-4db3eb7c5c78
/usr/libexec/PlistBuddy -c 'print UUID' ~/tmp_provisionProfile.plist

//获取mobileProvision文件名 eg:Distribution_dblfk
/usr/libexec/PlistBuddy -c 'print Name' ~/tmp_provisionProfile.plist

//获取team id  eg:49P4585YSG
/usr/libexec/PlistBuddy -c 'print TeamIdentifier:0' ~/tmp_provisionProfile.plist

e.获取xcode版本

获取xcode 版本

xcodebuild -version | head -n 1 | awk '{print $2}'
三、开始出包

a.修改info.plist文件

通过PlistBuddy进行操作info.plist文件

b.替换icon等资源文件

使用相关shell脚本命令进行强制替换即可。

c.出包

相关参数与资源处理完成之后即可进行出包操作。

出包流程:

1.clean操作,清理工程;
2.archive操作,导出 .xcarchive 文件;
3.export操作,导出IPA包;

执行命令前,请先cd到工程根目录。

clean

xcodebuild clean -configuration Release -alltargets

archive

xcodebuild archive -scheme  -configuration Release -archivePath <~/tmp_app.xcarchive> PROVISIONING_PROFILE="" CODE_SIGN_IDENTITY="" PROVISIONING_PROFILE_SPECIFIER="" PRODUCT_BUNDLE_IDENTIFIER="" DEVELOPMENT_TEAM=""

export
exportOptionsPlist.plist可采用模板写文件

因为 Xcode 9 默认不允许访问钥匙串的内容,必须要设置 allowProvisioningUpdates 才会允许。所有在这里导出做一下版本判断

version < 9.0
xcodebuild -exportArchive -archivePath <导出的.xcarchive文件路径> -exportPath <~/exportPath> -exportOptionsPlist <~/tmp_exportOptions.plist路径> -configuration Release


version >= 9.0
xcodebuild -exportArchive -archivePath <导出的.xcarchive文件路径> -exportPath <~/exportPath> -exportOptionsPlist <~/tmp_exportOptions.plist路径> -allowProvisioningUpdates

exportOptionsPlist.plist

$method 选择: app-store、development、ad-hoc




  
    teamID
    {teamId}
    method
    {$method}
    provisioningProfiles
    
      {bundleId}
      {uuid}
    
    compileBitcode
    
    uploadBitcode
    
    uploadSymbols
    
  

你可能感兴趣的:(iOS自动打包脚本会用到的相关命令)