六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

react-native如何完成自動打包?react-native自動打包的方法

[摘要]本篇文章給大家帶來的內容是關于react-native如何實現自動打包?react-native自動打包的方法,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。你是否也在幻想寫完代碼后,無需打開xcode和android studio,只要執行一個shell腳本,就能把android...
本篇文章給大家帶來的內容是關于react-native如何實現自動打包?react-native自動打包的方法,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

你是否也在幻想寫完代碼后,無需打開xcode和android studio,只要執行一個shell腳本,就能把android和ios都打包出來?而且自動幫你傳到蒲公英和App Store,接著產品自動去下載測試。而你~~~直接去喝咖啡了。

注意:本篇僅講述如何用自動腳本處理,所以已經假設看官們已經能正常手動打包。若有更多繁枝細節,則需要另開篇幅。

準備材料

一臺macos主機+顯示器,比如:mac-mini

自動構建工具,比如:gitlab-runner、travis-ci、jenkins

蘋果開發者認證

macos主機需作為構建工具的節點,并且需要安裝如下的軟件或操作:

git

xcode 9.4+

xcode -> 設置 -> accounts -> 添加蘋果公司認證或者個人認證所用的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.plistad-hoc.plist。這個你自己其實能找到,那就是在xcode里打包并Export出來的文件夾里,都會有一個ExportOptions.plist文件

298157778-5b684528d544f_articlex.png
根據你在Export時選擇的是App Store 還是 Ad Hoc,分別復制進項目exportOptions/app-store.plistexportOptions/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

從筆者的研究來看,僅小米應用的上傳有提供接口,其他應用平臺都要手動上傳。

注意事項:

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文件需要右鍵打開顯示簡介,接著把打開方式設置為終端才行

1495684574-5b69047a6e75b_articlex.png

2532800737-5b6904a9b2e7c_articlex.png

相關文章推薦:

HTML中元信息meta標記屬性的分析(附代碼)

關于高德地圖WEB版基礎控件的展示

以上就是react-native如何實現自動打包?react-native自動打包的方法的詳細內容,更多請關注php中文網其它相關文章!


網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。




主站蜘蛛池模板: 亚洲欧美日韩综合久久久久 | 亚洲成a人v在线观看 | 视频久久 | 日韩精品一区二区三区中文版 | 欧美亚洲一区二区三区四 | 亚洲三级免费 | 日本a在线播放 | 中文区永久区乱码六区 | 日韩在线视频免费播放 | 特黄视频免费看 | 日日射视频 | 欧美一级网址 | 亚洲 欧美 视频 | 午夜激情啪啪 | 在线免费观看h视频 | 午夜性刺激免费视频观看不卡专区 | 亚洲处破女网站 | 四虎国产精品永久在线看 | 最新版天堂中文官网 | 香港三级欧美国产精品 | 香蕉久久夜色精品国产小优 | 午夜视频hd | 四虎永久免费网站免费观看 | 青春草视频在线观看 | 伊久久| 亚洲欧美另类国产 | 中文字幕第66页永久乱码 | 日日夜夜天天操 | 亚洲波多野结衣日韩在线 | 亚洲欧美成人完整版在线 | 三级视频在线观看 | 五月天婷婷精品视频 | 人人入人人爱 | 四虎在线视频免费观看 | 五月婷婷丁香色 | 天天色播 | 中文字幕不卡在线 | 亚洲爱爱图片 | 啪啪精品 | 天天影视色香欲性综合网网站 | 香蕉在线观看999 |