2019-03-14 iOS自动打包脚本ProvisioningStyle字段(对之前文章的补充)

使用场景

很多做react-native开发的工程师,使用的不一定是Mac电脑,所以打iOS的ipa包就没有Xcode工具去图形界面上操作,比如勾选证书、pp文件之类的,本文针对此,在一些网上的教程上做了更改

Xcode8开始有了自动管理签名文件功能,并且是默认的,所以网上现有的脚本很多都挂了
  • 添加的命令行
   rootObject=`/usr/libexec/PlistBuddy -c "Print :rootObject" $pbxproj_path`

   targetList=`/usr/libexec/PlistBuddy -c "Print :objects:${rootObject}:targets" $pbxproj_path | sed -e '/Array {/d' -e '/}/d' -e 's/^[ \t]*//'`

   targets=(`echo $targetList`)

   targetsID=${targets[0]}

上述命令行的主要功能,就是在项目的iOS工程包中获取到 TestTargetID ,就是下面 13B07F861A680F5B00A75B9A 这个值,因为从未用xcode打开并操作过证书那块的,.xcodeproj文件中没有下面这三行代码

TargetAttributes = {
  00E356ED1AD99517003FC87E = {
    CreatedOnToolsVersion = 6.2;
    DevelopmentTeam = ZLV92V5957;
    TestTargetID = 13B07F861A680F5B00A75B9A;
};
  13B07F861A680F5B00A75B9A = {        //从这开始的三行代码
    ProvisioningStyle = Manual;
  };
...
}
  • 添加如下命令行,用来插入上面三行:
 /usr/libexec/PlistBuddy -c "Add :objects:${rootObject}:attributes:TargetAttributes:${targetsID}:" $pbxproj_path

 /usr/libexec/PlistBuddy -c "Add :objects:${rootObject}:attributes:TargetAttributes:${targetsID}:ProvisioningStyle String Manual" $pbxproj_path
  • 下面需要把 .xcodeproj 文件中已有的 ProvisioningStyle 字段的值改为 Manual
 # xcode8 之后强行将所有 Automatic 改为 Manual

 sed -i "" s/'Automatic'/'Manual'/g ${project_name}.xcodeproj/project.pbxproj

这边说一下,为什么不用网上搜到的下面这句命令行,是因为我们上面对.xocdeproj文件做了改动插入了那三行代码,这个文件的格式被改变了,变成了一个plist文件,所以下面的命令行无法找到对应的字段去修改(这段命令行可以省略的)

# xcode8 之后会自动管理证书签名,需要修改成手动管理(该命令在文件格式变成plist之后失效,但仍需保留,防止以后用到)
sed -i "" s/'ProvisioningStyle = Automatic;'/'ProvisioningStyle = Manual;'/g ${project_name}.xcodeproj/project.pbxproj

完整的代码放到其他文档了,看起来比较乱,https://www.jianshu.com/p/906c7a563333

你可能感兴趣的:(2019-03-14 iOS自动打包脚本ProvisioningStyle字段(对之前文章的补充))