最近项目里的自动打包脚本不能用了,一直提示
Google了一下发现是xcode新的自动管理签名机制的问题,你要不使用AutoMatic自动管理,要不使用Manual手动指定证书的模式。
无奈我们打包的时候只有证书,没有对应的AppleID,所以自动管理的就用不了。但是UnityBuild出来的Xcode项目是自动勾选Auto MaticallyManageSigning
的,而且Xcode也没有支持用命令行设置这个值。那这样的话,我们每次打包出Xcode项目的时候需要手动点一下,这就失去打包工具的意义了。
无奈之下,找到一个办法解决这个问题。
我先用UnityBuild出一个干净的Xcode项目,然后把项目传到Git。然后手动点一下BuildSetting
里的Auto MaticallyManageSigning
,去掉勾选。然后查看下diff
,当然其中有很多修改。
主要修改在Unity-iPhone.xcodeproj\/project.pbxproj,在Finder里想打开该文件应选中Unity-iPhone.xcodeproj右键显示包内容。
project.pbxproj内也有很多修改,重要的修改其实只有几行,主要是在这个地方加上ProvisioningStyle = Manual。
修改前:
|
|
修改后:
|
|
需要注意的是从来没有用Xcode打开并且操作过的project.pbxproj是不存在ProvisioningStyle
字段的,所以应追加3行。但是打开并操作过的项目是存在ProvisioningStyle
字段的,这个时候如果想用脚本修改该值应直接替换该值
因为我们是全自动的打包过程,正常流程是不用打开xcode项目的,所以我准备用sed
在指定文本下追加3行,并且要获取上一次匹配到的TestTargetID
,我写到3点还没写出来……实在不会。所以我用python实现了这个操作,附上python脚本DelMatically.py
。
然后用shell运行python,把xcodeprojPath
和Yours
换成你们自己对应的值。
需要注意的是PROVISIONING_PROFILE
值应该是一串数字+字母,这个值可以用NodePad++打开对应的mobileprovision文件,其中有如下结构。其中string标签包裹的值即是PROVISIONING_PROFILE
。
|
|