使用場景
很多做react-native開發(fā)的工程師,使用的不一定是Mac電腦虏等,所以打iOS的ipa包就沒有Xcode工具去圖形界面上操作食绿,比如勾選證書梳凛、pp文件之類的锨苏,本文針對此疙教,在一些網(wǎng)上的教程上做了更改
Xcode8開始有了自動管理簽名文件功能,并且是默認(rèn)的伞租,所以網(wǎng)上現(xiàn)有的腳本很多都掛了
- 添加的命令行
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 之后強(qiáng)行將所有 Automatic 改為 Manual
sed -i "" s/'Automatic'/'Manual'/g ${project_name}.xcodeproj/project.pbxproj
這邊說一下,為什么不用網(wǎng)上搜到的下面這句命令行作喘,是因為我們上面對.xocdeproj文件做了改動插入了那三行代碼烁兰,這個文件的格式被改變了,變成了一個plist文件徊都,所以下面的命令行無法找到對應(yīng)的字段去修改(這段命令行可以省略的)
# xcode8 之后會自動管理證書簽名沪斟,需要修改成手動管理(該命令在文件格式變成plist之后失效,但仍需保留,防止以后用到)
sed -i "" s/'ProvisioningStyle = Automatic;'/'ProvisioningStyle = Manual;'/g ${project_name}.xcodeproj/project.pbxproj
完整的代碼放到其他文檔了暇矫,看起來比較亂主之,http://www.reibang.com/p/906c7a563333