?2020年iOS自動(dòng)打包腳本
?1.準(zhǔn)備工作
安裝[fastlane](http://docs.fastlane.tools/getting-started/ios/setup/)
至于fastlane是做什么的就不多說(shuō)了宛乃,自行百度免胃;
sudo gem install fastlane --verbose
安裝成功后沒(méi)有修改gem source 的修改一下泳姐,我用的是https://gems.ruby-china.com/
終端打開(kāi)項(xiàng)目目錄執(zhí)行fastlane init, fastlane init執(zhí)行過(guò)程中需要選擇一些東西,如What would you like to use fastlane for? 并把Gemfile中的source修改成你的gem source的源布隔,
wk@wakedatadeMacBook-Pro uniapp-yuexiuhui-iOS % fastlane init
[?] ??
[?] Looking for iOS and Android projects in current directory...
[15:40:54]: Created new folder './fastlane'.
[15:40:54]: Detected an iOS/macOS project in the current directory: 'uniapp-yuexiuhui-iOS.xcworkspace'
[15:40:55]: -----------------------------
[15:40:55]: --- Welcome to fastlane ?? ---
[15:40:55]: -----------------------------
[15:40:55]: fastlane can help you with all kinds of automation for your mobile app
[15:40:55]: We recommend automating one task first, and then gradually automating more over time
[15:40:55]: What would you like to use fastlane for?
/usr/local/Cellar/fastlane/2.168.0/libexec/gems/highline-1.7.10/lib/highline.rb:624: warning: Using the last argument as keyword parameters is deprecated
1. ??? Automate screenshots
2. ?????? Automate beta distribution to TestFlight
3. ??? Automate App Store distribution
4. ??? Manual setup - manually setup your project to automate your tasks
?這個(gè)地方輸入你要上傳到那個(gè)平臺(tái),一般選2、3茴迁、4
下一步需要提醒你輸入的是你的iOS開(kāi)發(fā)者賬號(hào)
[15:44:09]: To use App Store Connect and Apple Developer Portal features as part of fastlane,
[15:44:09]: we will ask you for your Apple ID username and password
[15:44:09]: This is necessary for certain fastlane features, for example:
[15:44:09]:
[15:44:09]: - Create and manage your provisioning profiles on the Developer Portal
[15:44:09]: - Upload and manage TestFlight and App Store builds on App Store Connect
[15:44:09]: - Manage your App Store Connect app metadata and screenshots
[15:44:09]:
[15:44:09]: Your Apple ID credentials will only be stored in your Keychain, on your local machine
[15:44:09]: For more information, check out
[15:44:09]: https://github.com/fastlane/fastlane/tree/master/credentials_manager
[15:44:09]:
[15:44:09]: Please enter your Apple ID developer credentials
/usr/local/Cellar/fastlane/2.168.0/libexec/gems/highline-1.7.10/lib/highline.rb:624: warning: Using the last argument as keyword parameters is deprecated
[15:44:09]: Apple ID Username:
然后是iOS開(kāi)發(fā)者賬號(hào)的密碼,如果你的賬號(hào)下面有多個(gè)企業(yè)或組織,然后是選擇證書(shū)然后就配置完了萤衰。
然后在你的項(xiàng)目目錄中會(huì)多一個(gè)fastlane文件夾堕义,一個(gè)Gemfile,Gemfile中需要修改source就可以了脆栋。fastlane中有兩個(gè)文件倦卖,一個(gè)Appfile一個(gè)Fastfile,Appfile保存的是iOS開(kāi)發(fā)者賬號(hào)的信息和證書(shū)信息椿争,F(xiàn)astfile中是自動(dòng)打包的腳本怕膛,對(duì)應(yīng)純?cè)拇a這樣基本就可以了;
而對(duì)于現(xiàn)在混口開(kāi)發(fā)盛行的時(shí)代丘薛,我們項(xiàng)目基本都是uni-app寫(xiě)的所以才需要再寫(xiě)一些腳本嘉竟,開(kāi)發(fā)就是越來(lái)越懶,一步也不喜歡手動(dòng)去做洋侨,那么腳本的用處就大了舍扰;
2.寫(xiě)腳本
1. 打包到蒲公英的腳本
#!/bin/bash
env=$1
buildUpdateDescription=$2
ipa_name="項(xiàng)目名"
api_key="蒲公英的api_key"
if [ ! -n "$1" ] ;then
? ? env="build"
fi
# 向iOS的Info.plist里面寫(xiě)值
# environment="production"
# if [[ $env = "dev" ]]; then
# environment="development"
# fi
# path=$(cd `dirname $0`; pwd)
# target_plist="$path/uniapp-yuexiuhui-iOS/Info.plist"
# echo $target_plist
# for plist in "$target_plist"; do
# if [[ -f "$plist" ]]; then
# /usr/libexec/PlistBuddy -c "Set :Environment $environment" "$plist"
# fi
# done
# 修改YXHCommon.m文件,這個(gè)的目的主要是切換生產(chǎn)環(huán)境與測(cè)試環(huán)境的希坚,修改的值主要用于條件編譯
cd uniapp-yuexiuhui-iOS/utils
if [[ "dev" = $env ]]; then
? sed -i '' 's/#if false/#if true/g' YXHCommon.m
else
? sed -i '' 's/#if true/#if false/g' YXHCommon.m
fi
cd ../..
cd ../uniapp-yuexiuhui-vue
# 而下面的npm run xxx這個(gè)主要是HbuilderX 打包腳本
if [ "dev" = $env ]
then
? npm run dev:app-plus
else
? npm run build:app-plus
fi
echo '------覆蓋www------'
cp -R dist/$env/app-plus/ ../$ipa_name/$ipa_name/Pandora/apps/__UNI__E59AA60/www
cd ../uniapp-yuexiuhui-iOS
fastlane pgy
cd ./build
export_ipa_path=$(cd `dirname $0`; pwd)
#上傳ipa到蒲公英 我自己加的
if [ -f "${export_ipa_path}/${ipa_name}.ipa" ]
then
? ? echo '開(kāi)始上傳ipa/apk到蒲公英'
? ? result=$(curl -F "file=@${export_ipa_path}/${ipa_name}.ipa" -F "_api_key=${api_key}" -F "buildUpdateDescription=${buildUpdateDescription}" 'http://www.pgyer.com/apiv2/app/upload')
else
? ? echo "在目錄:${export_ipa_path}/${ipa_name}.ipa 不存在"
fi
echo '上傳到蒲公英成功'
exit 0
2.上傳到TestFlight的腳本
#!/bin/bash
env=$1
if [ ! -n "$1" ] ;then
? ? env="build"
fi
cd uniapp-yuexiuhui-iOS/utils
if [[ "dev" = $env ]]; then
? sed -i '' 's/#if false/#if true/g' YXHCommon.m
else
? sed -i '' 's/#if true/#if false/g' YXHCommon.m
fi
cd ../..
cd ../uniapp-yuexiuhui-vue
if [ "dev" = $env ]
then
? ? npm run dev:app-plus
else
? ? npm run build:app-plus
fi
echo '------覆蓋www------'
cp -R dist/$env/app-plus/ ../uniapp-yuexiuhui-iOS/uniapp-yuexiuhui-iOS/Pandora/apps/__UNI__E59AA60/www
cd ../uniapp-yuexiuhui-iOS
fastlane beta
exit 0
3.如果運(yùn)行腳本報(bào)錯(cuò)請(qǐng)檢查shell語(yǔ)法边苹,當(dāng)然你也可以用Python寫(xiě)
如有什么疑問(wèn)可以聯(lián)系我:
WeChat:fengsh_h
e-mail: fengsh_h@aliyun.com