利用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
文件