jekins 打包:shell 腳本動(dòng)態(tài)修改打包參數(shù)

前沿說明:專職ios開發(fā)的,不擅長打包腳本這些。最近公司有多租戶的打包需求(一套代碼可以打不同的包,切換不同的Icon或者啟動(dòng)圖),領(lǐng)導(dǎo)安排我試試,實(shí)在不行找運(yùn)維幫忙,咱這小白就接過來了,必應(yīng)來必應(yīng)去的,還真摸索出來了。

下面就是shell腳本動(dòng)態(tài)修改bundleId,prodfile,Icon的方法。

僅供參考,實(shí)際項(xiàng)目你需要根據(jù)你的項(xiàng)目路徑來改shell腳本!??!
WechatIMG41 2.jpg
#編譯工程文件
echo "############################################"
configFile=$WORKSPACE/AppWorkName/MainResources/Plist/configFile.plist
sed -i "" "s#WebUrl_Value#"$WebUrl"#" $configFile

這是替換項(xiàng)目中配置文件里面的參數(shù)方法,$WORKSPACE實(shí)際上是你的項(xiàng)目路徑,這是寫在jenkins里面的shell腳本,是相對(duì)路徑,你也可以寫成絕對(duì)路徑。
如圖所示:


WechatIMG42.jpg
下面是修改xcode配置參數(shù):
echo "+++Source reset...\n"
pwd
echo "+++++++++++++++更新 build 信息+++++++++++++++++++++++++"
echo "更換的bundleId"
APP_BUNDLE_ID="com.zzila.test"
desplay_name='桌面名字'
buildFile=$WORKSPACE/$APP_TARGET/$APP_TARGET/"$APP_TARGET"-Info.plist 
/usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName $desplay_name" $buildFile
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $APP_BUNDLE_ID"

參數(shù)解釋:APP_TARGET是你的項(xiàng)目名字,WORKSPACE/APP_TARGET/APP_TARGET/"APP_TARGET"-Info.plist這個(gè)就是你項(xiàng)目原始的info.plist文件,這個(gè)buildFile就是相對(duì)路徑,jenkins的打包相對(duì)路徑。另外一定要注意就是項(xiàng)目的info.plist文件,很關(guān)鍵。
如果你的info.plist文件里面沒有如下參數(shù),你可以手動(dòng)添加,如圖所示:

WechatIMG43.jpg

echo "描述文件的uuid"
APP_PROFILE_UUID="test--111111111"
echo "更換的bundleId"
APP_BUNDLE_ID="com.zzila.test"
echo "描述文件的名字"
$APP_PROFILE_NAME="product.dis"
#這個(gè)是project.pbxproj文件的配置路徑,你可以打開此文件看看里面的描述文件,你就明白了替換原理
pbxprojFile=$WORKSPACE/$APP_TARGET.xcodeproj/project.pbxproj
echo "+++++++++$pbxprojFile++++++++++"

sed -i -e 's/PRODUCT_BUNDLE_IDENTIFIER\ =\ .*/PRODUCT_BUNDLE_IDENTIFIER\ =\ ''"'"$APP_BUNDLE_ID"'"''\;/' $pbxprojFile
sed -i -e 's/PROVISIONING_PROFILE\ =\ .*/PROVISIONING_PROFILE\ =\ ''"'"$APP_PROFILE_UUID"'"''\;/' $pbxprojFile
sed -i -e 's/PROVISIONING_PROFILE\[sdk=iphoneos\*\]\"\ =\ .*/PROVISIONING_PROFILE\[sdk=iphoneos\*\]\"\ =\ ''"'"$APP_PROFILE_UUID"'"''\;/' $pbxprojFile
sed -i -e 's/PROVISIONING_PROFILE_SPECIFIER\ =\ .*/PROVISIONING_PROFILE_SPECIFIER\ =\ ''"'"$APP_PROFILE_NAME"'"''\;/' $pbxprojFile
sed -i -e 's/PROVISIONING_PROFILE_SPECIFIER\[sdk=iphoneos\*\]\"\ =\ .*/PROVISIONING_PROFILE_SPECIFIER\[sdk=iphoneos\*\]\"\ =\ ''"'"$APP_PROFILE_NAME"'"''\;/' $pbxprojFile

上一步已經(jīng)動(dòng)態(tài)修改了bundleId,ios的都知道打包還需要選擇描述文件,這個(gè)方法就是動(dòng)態(tài)的修改描述文件。至此修改完成,打一下包,你可以查看project.pbxproj文件看是否替換ok,如果有報(bào)錯(cuò)根據(jù)報(bào)錯(cuò)信息修改路徑問題,或者參數(shù)問題。


WechatIMG45.jpg
替換icon的方法也是一樣,我采用的是預(yù)置icon資源文件到項(xiàng)目,打包的時(shí)候根據(jù)參數(shù)去替換。
echo "replacement resource file begin"
newResourcesFile=$WORKSPACE/res/icon/ios/filename/
oldResourcesFile=$WORKSPACE/platforms/ios/$APP_TARGET/Images.xcassets/
#替換方法
cp -R $newResourcesFile $oldResourcesFile
echo "*********complete*********"

參數(shù)說明:newResourcesFile 預(yù)置的icon存放路徑,oldResourcesFile是初始icon路徑,替換掉就可以了。
//jenkins補(bǔ)充

今天領(lǐng)導(dǎo)又提出了一個(gè)打包的需求,就是通過shell腳本命令切換xcode,然后必應(yīng)來必應(yīng)去,也沒好的方法,最后還是chatgpt解決了,遇到的問題就是sudo的時(shí)候需要密碼,對(duì)shell命令不熟悉,所以chatgpt完美解決了我的問題。
#xcode版本
xcodeversion='14.2' 
#xcode路徑
xcode_path="/Applications/Xcode${xcodeversion}.app"
# 設(shè)置系統(tǒng)密碼
password="xxxxxx"
# 使用xcode-select命令切換Xcode版本
# 使用echo和管道將密碼傳遞給sudo命令
echo "$password" | sudo -S xcode-select -switch "$xcode_path"
# 打印切換后的Xcode版本信息
xcode-select -p
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容