react-native怎样实现主动打包?react-native主动打包的办法
你可否也在梦想写完代码后,无需翻开xcode和android studio,只要施行一个shell足本,就能把android和ios都打包出来?并且主动帮你传到蒲公英和App Store,接着产品主动去下载测试。而你~~~直接去喝咖啡了。
留意:本篇仅讲述怎样用主动足本处置,所以已经假设看官们已经能正常手动打包。如有更多繁枝细节,则需要另开篇幅。
预备材料
一台macos主机+显示器,比方:mac-mini
主动构建工具,比方:gitlab-runner、travis-ci、jenkins
iphone开发者认证
macos主机需作为构建工具的节点
,并且需要安置如下的软件或操纵:
git
xcode 9.4+
xcode -> 设定 -> accounts -> 增加iphone公司认证或者个人认证所用的app_id
android studio
android sdk
java jdk 8
留意:假如你不想搞构建平台,只想简简便单地,那么你可以把下面的那么多代码整合成一个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
文件
按照你在Export时选中的是App Store 还是 Ad Hoc,离别复制进项目exportOptions/app-store.plist 和 exportOptions/ad-hoc.plist
上传蒲公英
笔者用的蒲公英,fir的看官本人去寻
PGY_API_KEY=你的api_key PGY_HOST=https://www.pgyer.com/apiv2/app/upload # ios IPA=`ls ./ios/build/ipa-ad-hoc/*.ipa` curl \ --form "file=@$IPA" \ --form "_api_key=$PGY_API_KEY" \ $PGY_HOST # android curl \ --form "file=@./android/app/build/outputs/apk/app-release.apk" \ --form "_api_key=$PGY_API_KEY" \ $PGY_HOST
上传AppStore
其实是先上传到 appstoreconnect.apple.com,和你在xcode里点击Upload To App Store
是一样的
先验证可否可以上传
APP_STORE_ACCOUNT=证书创立者账号 APP_STORE_PASSWORD=密码 IPA=`ls ./ios/build/ipa-app-store/*.ipa` /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool \ --validate-app \ --file "$IPA" \ --type ios \ --username $APP_STORE_ACCOUNT \ --password $APP_STORE_PASSWORD
验证成功的话,你才能上传,不然上传会失败的,不消白费时间
APP_STORE_ACCOUNT=证书创立者账号 APP_STORE_PASSWORD=密码 IPA=`ls ./ios/build/ipa-app-store/*.ipa` # xcode暂时生成的名目,不删除大概致使上传到appStore时失败 rm -rf ~/.itmstransporter/ ~/.old_itmstransporter/ # 开端上传 /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool \ --upload-app \ --file "$IPA" \ --type ios \ --username $APP_STORE_ACCOUNT \ --password $APP_STORE_PASSWORD
上传android
从笔者的研讨来看,仅XIAOMI利用的上传有供给接口,其他利用平台都要手动上传。
留意事项:
1、每个节点机器上都需要生成一个certificate。你需要手动生成,或者利用xcode主动帮你生成。这一步不做没法打包ios
2、前面几次打包,mac会有输入密码的提醒,需要及时输入,并务必点击按钮始终同意
3、假如用了gitlab-runner,那么在.gitlab-ci.yml中用 alias altool=xx将无效,即没法识别altool,不知为什么.
4、ios打包必然要用macos系统,尝试用linux将得失相当。android打包倒是可以用linux,但也费事的要死,所认为什么不和ios一起呢?
5、假如macos作为主动构建的子节点,那么记得做一个开机启动足本start.sh,并把足本参加会员治理的启动项。这个sh文件需要右键翻开显示简介,接着把翻开方式设定为终端才行
相关文章引荐:
HTML中元信息meta标志属性的剖析(附代码)
关于高德地图WEB版根基控件的展现
以上就是react-native怎样实现主动打包?react-native主动打包的办法的具体内容,更多请关注百分百源码网其它相关文章!