利用shell腳本,無需打開xcode就能把ios打包出來
再看這篇文章的你是否也在幻想寫完代碼後,無需打開xcode和android studio,只要執行一個shell腳本,就能把android和ios都打包出來?而且自動幫你傳到蒲公英和App Store,接著產品自動去下載測試然後直接讓客戶安裝你的無法上架的擦邊球app?而你~~~直接去喝咖啡了。Of course,讓作者帶你飛!
注意:本篇僅講述如何用自動腳本處理,所以已經假設看官們已經能正常手動打包。若有更多繁枝細節,則需要另開篇幅。
準備材料
- 一臺macos主機+顯示器,比如:mac-mini
- 自動構建工具,比如:gitlab-runner、travis-ci、jenkins
- 蘋果開發者認證
macos主機需作為構建工具的節點
,並且需要安裝如下的軟體或操作:
- git
- xcode 9.4+
- xcode -> 設置 -> accounts -> 添加蘋果公司認證或者個人認證所用的app_id
- android studio
- android sdk
- java jdk 8
怎麼安裝可以參考我的初始化教程:react-native搭建教程。
注意:如果你不想搞構建平臺,只想簡簡單單地,那麼你可以把下面的那麼多代碼整合成一個shell腳本,然後在自己的電腦裏執行。
打包android
cd android
rm -rf build/ app/build/
./gradlew assembleRelease
最後的apk文件在:android/app/build/outputs/apk/app-release.apk
打包ios
先構建基礎包app
cd ios
# 必須先創建目錄
mkdir -p build
rm -rf build/archive.xcarchive build/ipa-*
# 獲取目錄名
project_list=`ls | grep .xcodeproj`
project_name=${project_list%%.*}
# 打包出app
# 這和你點擊 xcode -> Product -> Archive 是一樣的效果的。
xcodebuild clean
xcodebuild archive
-project ./${project_name}.xcodeproj
-scheme ${project_name}
-configuration Release
-archivePath ./build/archive.xcarchive
接著我們需要把app導出為ipa格式,這樣才能上傳到App Store或者測試平臺比如:蒲公英 、 fir.im
傳到App Store需要導出正式的ipa包,而傳到蒲公英需要使用測試ipa包(ad-hoc),所以需要執行兩遍
cd ios
# 正式ipa包
xcodebuild -exportArchive
-archivePath ./build/archive.xcarchive
-exportPath ./build/ipa-app-store
-exportOptionsPlist ./exportOptions/app-store.plist
-allowProvisioningUpdates
# 測試ipa包
xcodebuild -exportArchive
-archivePath ./build/archive.xcarchive
-exportPath ./build/ipa-ad-hoc
-exportOptionsPlist ./exportOptions/ad-hoc.plist
-allowProvisioningUpdates
上面編譯肯定是不通過的,因為你缺少兩個文件app-store.plist
和ad-hoc.plist
。這個你自己其實能找到,那就是在xcode裏打包並Export出來的文件夾裏,都會有一個ExportOptions.plist
文件