亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統(tǒng) > Android > 正文

React Native開發(fā)中自動打包腳本的實(shí)例代碼

2019-12-12 00:32:08
字體:
供稿:網(wǎng)友

在日常的RN開發(fā)中,我們避免不了需要將我們編寫的代碼編譯成安裝包,然后生成二維碼,供需要測試的人員掃描下載。但是對于非原生的開發(fā)人員來說,可能不知如何使用Xcode或者Android studio來導(dǎo)出ipa、apk安裝包,為了解決非原生開發(fā)的同學(xué)們打安裝包的痛苦,這里作者就提供一個(gè)shell腳本文件來實(shí)現(xiàn)一鍵式自動打包并生成安裝二維碼 (這里上傳安裝包生成二維碼需要借助于三方平臺fir.im)

打包腳本文件下載地址

https://github.com/guangqiang-liu/AutoPackageScript

iOS

腳本執(zhí)行效果

使用腳本注意事項(xiàng)

•腳本配置環(huán)境變量中,is_workspace :如果是使用pod進(jìn)行管理三方庫就賦值為true,否則是false
•firim_token:fir_token請?jiān)O(shè)置成自己的token,fir im_token如何獲取請參考fir官網(wǎng)https://fir.im/
•scheme_name:請更換為自己項(xiàng)目的scheme名稱
•info_plist_name:請更換為自己項(xiàng)目中的plist文件名稱
•如果沒有注冊登錄fir.im的同學(xué)們,請先去注冊登錄fir.im,相關(guān)操作請參照fir.im官方文檔
•腳本文件夾放在項(xiàng)目的跟目錄下即可
•除了is_workspace firim_token scheme_name info_plist_name 這四個(gè)變量需要改為自己的,其它的地方腳本不需要修改
•在打包之前請確保iOS調(diào)試證書有效
•fir.im 的token和注冊登錄流程是可有可無的,如果之前沒有使用過fir.im的同學(xué)們也可以忽略fir.im相關(guān)的操作,因?yàn)閒ir.im

只是輔助將生成的ipa安裝包文件上傳到fir, 然后生成一個(gè)可以掃碼安裝的二維碼而已,不使用fir.im 不影響生成ipa,只是不會生成安裝二維碼

特別注意(腳本存放路徑):

如何使用腳本文件

•將下載下來的腳本文件夾整個(gè)拖進(jìn)自己的iOS工程的項(xiàng)目根目錄下
•打開終端,進(jìn)入到腳本文件 autoPackageScript.sh 所在的目錄
•執(zhí)行腳本 sh autoPackageScript.sh
•等待打包生成ipa和二維碼,這里默認(rèn)打包后的文件會存放在桌面

核心腳本代碼

#!/bin/sh# autoPackageScript.sh# LSBuyer## Created by 劉光強(qiáng) on 2017/6/3.# Copyright © 2017年 Facebook. All rights reserved.envionmentVariables() { # ==================== 工程配置環(huán)境變量 ==================== # echo "/033[37;45m************************* step1:初始化環(huán)境變量 🚀 🚀 🚀 ************************* /033[0m" sleep 0.5 # 計(jì)時(shí) SECONDS=0 # 工作空間 (例:若是用Cocopods管理的.xcworkspace項(xiàng)目,賦值true;用Xcode默認(rèn)創(chuàng)建的.xcodeproj,賦值false) is_workspace="false" # 指定要打包編譯的方式 : Release or Debug (默認(rèn)是Release) build_configuration="Release" # fir賬戶的token, 這個(gè)token換成自己fir賬號生成的token即可 firim_token="1b91e3f54c6e6b106be7afdd13674a43" # 打包腳本文件夾路徑 script_path=$(pwd) # 指定項(xiàng)目的scheme名稱(默認(rèn)為one,需要再次賦值) scheme_name="one" # 工程中Target對應(yīng)的配置plist文件名稱, Xcode默認(rèn)的配置文件為info.plist (需要再次賦值) info_plist_name="info" # 導(dǎo)出ipa所需要的對應(yīng)的plist文件路徑 (默認(rèn)為EnterpriseExportOptionsPlist.plist) ExportOptionsPlistPath="$script_path/EnterpriseExportOptionsPlist.plist" # 返回上上級目錄,進(jìn)入項(xiàng)目工程根目錄 cd .. cd .. # 工程根目錄 project_dir=$(pwd) # 獲取工程名稱(LSBuyer) project_name=`find . -name *.xcodeproj | awk -F "[/.]" '{print $(NF-1)}'` # Dev,Pre,Pro三種環(huán)境 echo "/033[31;1m請選擇打包類型(輸入序號,按回車即可) /033[0m" echo "/033[31;1m1. 測試 /033[0m" echo "/033[31;1m2. 預(yù)發(fā) /033[0m" echo "/033[31;1m3. 生產(chǎn) /033[0m" # 捕獲用戶鍵盤輸入 read packageType sleep 0.5 method="$packageType" # 判斷用戶是否有輸入 if [ -n "$method" ] ; then if [ "$method" = "1" ] ; then ExportOptionsPlistPath="$script_path/EnterpriseExportOptionsPlist.plist" # 根據(jù)用戶選擇的打包類型來設(shè)置對應(yīng)的scheme和plist文件 scheme_name="one" info_plist_name="info" elif [ "$method" = "2" ] ; then ExportOptionsPlistPath="$script_path/EnterpriseExportOptionsPlist.plist" scheme_name="LSBuyerPre" info_plist_name="LSBuyerPre" elif [ "$method" = "3" ] ; then ExportOptionsPlistPath="$script_path/AppStoreExportOptionsPlist.plist" scheme_name="LSBuyer" info_plist_name="Info" else echo "/033[37;45m************************* 你是不是瞎,是不是瞎 😢 😢 😢 ************************* /033[0m" exit 1 fi fi # 獲取對應(yīng)的plist文件 info_plist_path="$project_dir/$project_name/$info_plist_name.plist" # 對應(yīng)plist中的Bundle versions string, short bundle_short_version=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$info_plist_path"` # 對應(yīng)plist中的Bundle version bundle_version=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$info_plist_path"` # 指定輸出ipa文件夾路徑 (需要再次賦值) export_path=~/Desktop/$scheme_name-IPA # 指定輸出xcarchive路徑 export_archive_path="$export_path/$scheme_name.xcarchive" # 刪除舊.xcarchive文件 rm -rf "$export_archive_path" # 指定輸出ipa路徑 export_ipa_path="$export_path" # 指定輸出ipa名稱 : scheme_name + bundle_short_version (需要重新賦值) ipa_name="$scheme_name-v$bundle_short_version"}Xcodebuild() { echo "/033[37;45m************************* step2:開始構(gòu)建項(xiàng)目 🚀 🚀 🚀 ************************* /033[0m" sleep 1 if [ -d "$export_path" ]; then echo $export_path else mkdir $export_path fi # 判斷編譯的項(xiàng)目類型是workspace還是project if $is_workspace ; then # 編譯前做clear操作 xcodebuild clean -workspace ${project_name}.xcworkspace / -scheme ${scheme_name} / -configuration ${build_configuration} # archive操作 xcodebuild archive -workspace ${project_name}.xcworkspace / -scheme ${scheme_name} / -configuration ${build_configuration} / -archivePath ${export_archive_path} else xcodebuild clean -project ${project_name}.xcodeproj / -scheme ${scheme_name} / -configuration ${build_configuration} xcodebuild archive -project ${project_name}.xcodeproj / -scheme ${scheme_name} / -configuration ${build_configuration} / -archivePath ${export_archive_path} fi # 檢查是否構(gòu)建成功 # xcarchive 是一個(gè)文件夾不是一個(gè)文件所以使用 -d 判斷 if [ -d "$export_archive_path" ] ; then echo "/033[37;45m項(xiàng)目構(gòu)建成功 🚀 🚀 🚀 /033[0m" else echo "/033[37;45m項(xiàng)目構(gòu)建失敗 😢 😢 😢 /033[0m" exit 1 fi}ExportArchive() { echo "/033[37;43m************************* step3:開始導(dǎo)出ipa文件 🚀 🚀 🚀 ************************* /033[0m" sleep 0.5 # 導(dǎo)出ipa xcodebuild -exportArchive / -archivePath ${export_archive_path} / -exportPath ${export_ipa_path} / -exportOptionsPlist ${ExportOptionsPlistPath} # 修改ipa文件名稱 mv $export_ipa_path/$scheme_name.ipa $export_ipa_path/$ipa_name.ipa # 檢查文件是否存在 if [ -f "$export_ipa_path/$ipa_name.ipa" ] ; then echo "/033[37;45m導(dǎo)出 ${ipa_name}.ipa 包成功 🎉 🎉 🎉 /033[0m" else echo "/033[37;45m導(dǎo)出 ${ipa_name}.ipa 包失敗 😢 😢 😢 /033[0m" exit 1 fi # 輸出打包總用時(shí) echo "/033[37;46m總用時(shí): ${SECONDS}s /033[0m" open $export_path}previewIPAInfo() { echo "/033[37;43m************************* step4:預(yù)覽IPA信息 💩 💩 💩 ************************* /033[0m" fir info $export_ipa_path/$ipa_name.ipa}publishIPAToFir() { echo "/033[37;43m************************* step5:上傳中 🚀 🚀 🚀 ************************* /033[0m" echo "/033[37;43m************************* step4:預(yù)覽用戶登錄信息 💩 💩 💩 ************************* /033[0m" fir login "$firim_token" fir publish $export_ipa_path/$ipa_name.ipa -Q echo "/033[37;43m************************* step6:上傳完成 🚀 🚀 🚀 ************************* /033[0m" # 輸出總用時(shí) echo "/033[37;46m總用時(shí): ${SECONDS}s 👄 👄 👄 /033[0m" open $export_path}envionmentVariablesXcodebuildExportArchivepreviewIPAInfopublishIPAToFir

Android

執(zhí)行腳本效果

注意事項(xiàng)

•環(huán)境配置項(xiàng)中的 firim_token:換成自己的token
•fir.im的注冊與登錄操作同iOS操作,詳細(xì)參考fir.im官方文檔 教程
•apk默認(rèn)導(dǎo)出路徑為:app/build/outputs/apk
•打包前請確保jks簽名是否有效,如果有對生成 jks 簽名文件不熟悉的同學(xué),請查看作者對生成jks簽名文件的講解:
•腳本文件存放的路徑,最好放在項(xiàng)目根目錄下,也即是與 settings.gradle 文件同級目錄
•fir.im 的token和注冊登錄流程是可有可無的,如果之前沒有使用過fir.im的同學(xué)們也可以忽略fir.im相關(guān)的操作,因?yàn)閒ir.im只是輔助將生成的ipa安裝包文件上傳到fir, 然后生成一個(gè)可以掃碼安裝的二維碼而已,不使用fir.im 不影響生成ipa,只是不會生成安裝二維碼

如何運(yùn)行腳本

•將下載的腳本文件夾中的 autoPackage.sh 文件 拖到Android 項(xiàng)目的根目錄下
•打開終端,進(jìn)入到 autoPackage.sh 腳本文件所在的目錄
•執(zhí)行腳本 sh autoPackage.sh
•等待腳本執(zhí)行,打包生成的apk文件與二維碼統(tǒng)一存放在 /build/outputs/apk 路徑下

核心腳本代碼

#!/bin/sh# autoPackage.sh# CRM## Created by 劉光強(qiáng) on 2017/6/19.# Copyright © 2017年 Facebook. All rights reserved.# ******************** 安卓一鍵式打包并上傳到fir生成二維碼并直接掃描安裝 ********************# 預(yù)先定義對應(yīng)的環(huán)境變量envionmentVariables(){# 打包時(shí)間初始值SECONDS=0# 當(dāng)前的路徑pwd#安卓項(xiàng)目工程路徑android_project_path=$(pwd)# 安卓apk目錄路徑apk_dir_path="$android_project_path/app/build/outputs/apk"# apk 路徑apk_path="$apk_dir_path/app-dev-release.apk"# fir賬戶的token,這個(gè)token換成自己fir賬號生成的token即可firim_token="1b91e3f54c6e6b106be7afdd13674a43"}apkBuild(){# 刪除老的apkrm -rf $apk_pathcd "$android_project_path"echo "/033[37;45m打包開始?。?! 🎉 🎉 🎉 /033[0m"sleep 1# 執(zhí)行安卓打包腳本./gradlew assembleRelease# 檢查apk文件(app-LSW-release.apk)是否存在if [ -f "$apk_path" ]; thenecho "$apk_path"echo "/033[37;45m打包成功 🎉 🎉 🎉 /033[0m"sleep 1elseecho "/033[37;45m沒有找到對應(yīng)的apk文件 😢 😢 😢 /033[0m"exit 1fi}# 預(yù)覽apk信息previewIPAInfo(){echo "/033[37;43m************************* step4:預(yù)覽apk信息 💩 💩 💩 ************************* /033[0m"fir info $apk_pathsleep 1}# 將apk目錄下的app-LSW-release.apk 上傳到firpublishIPAToFir(){open $apk_dir_pathecho "/033[37;43m************************* step5:上傳中 🚀 🚀 🚀 ************************* /033[0m"echo "/033[37;43m************************* step4:預(yù)覽用戶登錄信息 💩 💩 💩 ************************* /033[0m"fir login "$firim_token"fir publish $apk_path -Qecho "/033[37;43m************************* step6:上傳完成 🚀 🚀 🚀 ************************* /033[0m"# 輸出總用時(shí)echo "/033[37;46m總用時(shí): ${SECONDS}s 👄 👄 👄 /033[0m"open $apk_dir_path}envionmentVariablesapkBuildpreviewIPAInfopublishIPAToFir

總結(jié)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
九九热精品在线| 91蜜桃在线观看| 色偷偷在线观看| 天堂а在线中文在线无限看推荐| 欧美视频在线一区二区三区| 毛片无码国产| 日批在线观看视频| 来吧亚洲综合网| 99pao成人国产永久免费视频| 亚洲高清色综合| 欧美一区二区三区精美影视| 菠萝蜜网站在线观看| 欧美人与z0zoxxxx视频| 色综合天天综合网天天狠天天| aa级大片欧美三级| 国产美女视频一区二区| 91精品国产闺蜜国产在线闺蜜| 日韩欧美在线第一页| 日本在线xxx| 欧美日韩国产传媒| 一区二区三区四区五区在线| 亚洲精品成人免费| 亚洲韩国在线| 久久国产精品第一页| 美女在线视频一区| 综合激情在线| 91欧美精品午夜性色福利在线| 色综合天天色综合| 青青草精品视频| 久久免费高清视频| 蜜桃精品一区二区三区| 97se亚洲国产综合自在线观| 2018亚洲男人天堂| 国产精品丝袜久久久久久消防器材| 国产suv精品一区| 91九色在线观看| 久久久蜜桃一区二区| 国产亚洲视频一区| 日韩高清有码在线| 亚洲一二三区在线| 国产精品爽黄69天堂a| 国产成人久久精品麻豆二区| 国产乱码在线| 国产欧美精品一区二区| 韩国一区二区av| 亚洲国产精品成人综合久久久| 好吊色欧美一区二区三区四区| 国产一区二区三区小说| 精品a在线观看| 亚洲综合中文字幕68页| 国产福利av网站| 国产青青草在线| 国产专区综合网| 7777久久亚洲中文字幕| 国产剧情一区二区三区| 午夜免费在线观看精品视频| 法国伦理少妇愉情| 91麻豆国产语对白在线观看| 色天使久久综合网天天| 久久亚洲无码视频| 高清一区二区三区av| 久久久久久久亚洲| 国内精品小视频在线观看| 欧美性猛交一区二区三区精品| 一本一本久久a久久精品综合麻豆| 色一情一伦一子一伦一区| 在线看黄色av| 成人亚洲成人影院| av基地在线| 欧美成人高潮一二区在线看| 污视频网站在线| 中文字幕精品在线视频| 国产99久久| 日本麻豆一区二区三区视频| 国产日韩在线不卡| 日韩成人毛片视频| 欧美日韩美女一区二区| 一个人看的www免费观看视频| 欧美日韩国产在线观看| 调教+趴+乳夹+国产+精品| 日韩在线视频免费观看高清中文| 日韩精品一区二区三区三区免费| 久久综合毛片| 性疯狂做受xxxx高清视频| 国产自产2019最新不卡| 丝袜 亚洲 另类 欧美 重口| 国产黄色片在线观看| 欧美日韩亚州综合| 亚洲欧洲美洲一区二区三区| 亚洲欧洲视频| 久久永久免费| 天天爽天天爽天天爽| 2一3sex性hd| 性高湖久久久久久久久| 欧美性猛交xxx| 无罩大乳的熟妇正在播放| 免费人成在线观看播放视频| 97人人澡人人爽| 日韩欧美中文字幕视频| 大肉大捧一进一出好爽动态图| 碰碰在线视频| 欧美日韩在线看片| 91女神在线观看| 一区二区在线免费看| 懂色aⅴ精品一区二区三区蜜月| 亚洲精品一区av在线播放| 91精品国产高清久久久久久91| 日韩精品1区2区3区| 欧美日韩国产综合新一区| 国产精品99爱免费视频| 国产精品无码久久久久成人app| 黄网站在线观看永久免费| 免费人成在线观看播放视频| 一区二区三区麻豆| 极品蜜桃臀肥臀-x88av| 国产亚洲一区二区三区不卡| 欧美无遮挡国产欧美另类| 日韩av免费| 最近中文字幕免费mv| 亚洲第一页视频| 91电影91视频| 在线播放亚洲| 亚洲一级电影视频| 深夜成人福利| av在线播放观看| 欧美乱人伦中文字幕在线| 亚洲第一页av| 亚洲啊v在线免费视频| 三上悠亚 电影| 亚洲三级在线视频| 51xx午夜影福利| 日本中文字幕在线免费观看| 国产精品77777竹菊影视小说| 欧美日韩加勒比精品一区| 日本一区二区三区视频免费看| 中文在线一区| 69欧美性猛交| 亚洲欧洲综合另类在线| 91国内免费在线视频| 国产精品视频一区二区三区四蜜臂| 成人在线免费av| 粉嫩虎白女毛片人体| 亚洲精品中文字幕在线观看| 日韩av在线免费播放| 精品国产大片大片大片| 在线不卡亚洲| 免费看的毛片| 91国产精品视频在线观看| 婷婷综合视频| 黑人巨大精品一区二区在线| 亚洲深夜福利视频| av中文字幕一区二区三区| 大桥未久一区二区三区| 友田真希在线| 欧美精品久久久久久| 91官网在线免费观看| 国产精品亚洲综合在线观看| brazzers欧美精品| 极品国产91在线网站| 涩涩涩久久久成人精品| www.热久久| 欧美专区一区| 三级网站视频在在线播放| 无码精品一区二区三区在线播放| 蜜臀av性久久久久蜜臀aⅴ| 亚洲一区二区中文字幕在线观看| 亚洲另类色综合网站| 亚洲天堂电影| 99国产精品一区二区| 亚洲欧美国产另类首页| 91社区视频在线观看| 天天干天天色天天爽| 1769国产精品| 欧美刺激性大交免费视频| 大桥未久av一区二区三区中文| 亚洲国产精品成人天堂| 久久精品欧美一区二区三区不卡| 超碰超碰在线观看| 国产精品久久精品视| 夜夜夜久久久| 久久综合色播| 国产96在线 | 亚洲| 卡通欧美亚洲| 一级在线观看视频| 国产真实乱子伦精品视频| 爱情岛论坛亚洲入口| 99国产精品久久久久老师| 精品黄色免费中文电影在线播放| 91社区在线观看| 欧美综合激情| 午夜宅男久久久| 国产资源中文字幕| 第一页在线观看| 岛国爱情动作片在线| 国产一级免费在线观看| 亚洲精品国产系列| 亚洲一区二区少妇| 四虎成人欧美精品在永久在线| 国产成人在线网站| 国产精品美女www爽爽爽视频| 亚洲社区在线| 成人性生交大片免费看视频r| 国内自拍视频在线看免费观看| 亚洲专区一区二区三区| 91久久精品国产91久久性色tv| 亚洲毛片在线观看.| 在线视频中文字幕一区二区| 久草福利在线| 精品久久久久久久久中文字幕| 美女写真久久影院| 777奇米成人网| 久久www免费人成看片高清| 亚洲天堂视频在线观看免费| 在线不卡av电影| 色视频在线观看| 比比资源先锋影音网| 粉嫩蜜臀av国产精品网站| 亚洲字幕久久| 色黄视频在线| 特一级黄色录像| 国产亚洲欧美一区二区三区| 国产亚洲精品久久久久久豆腐| 亚洲日本va中文字幕| 天堂电影在线| 中文一区一区三区免费在线观看| 日韩三级影视| 欧美人与性动交α欧美精品图片| 中韩乱幕日产无线码一区| 91精品精品| 久久伊人精品视频| 蜜臀99久久精品久久久久久软件| www.日本高清| 亚洲精品久久一区二区三区777| 人成免费电影一二三区在线观看| av在线私库| 久久久久久99久久久精品网站| 欧美精品久久久久久久多人混战| 久久久久亚洲精品| 羞羞的视频免费| 久久久久成人精品无码中文字幕| **三级三级97片毛片| 日韩免费一区| 国产一区二区三区在线看| 国产91对白在线观看九色| www.成人69.com| 影音先锋中文在线观看| 性生大片免费观看性| 久久精品视频久久| 精品成人国产在线观看男人呻吟| 欧美日韩激情视频一区二区三区| 粉嫩一区二区三区国产精品| 欧美孕妇与黑人巨交| 日本一区二区不卡在线| 久久不射影院| 五月天免费网站| 一级免费在线观看| 新版的欧美在线视频| 欧美猛男男办公室激情| 欧美成人精品h版在线观看| 欧美日韩在线播放三区| ga∨成人网| 国产一区二区三区在线播放免费观看| 国产精品一区二区午夜嘿嘿嘿小说| 亚洲精品国产首次亮相| 裸模一区二区三区免费| 伊人精品一区二区三区| 野花国产精品入口| 中文字幕无码日韩专区免费| 亚洲成av人片在线观看无码| 天天操夜夜操av| 视频这里只有精品| 久久精品久久久精品美女| 欧日韩不卡在线视频| 懂色一区二区三区| 久热综合在线亚洲精品| 国产中文字幕亚洲| 奇米一区二区三区| 啪啪免费视频一区| 在线观看日韩片| 不卡一区二区在线观看| 欧美丝袜足交| 影音先锋男人资源站| 91九色蝌蚪91por成人| 在线视频日韩精品| 成人黄色av免费在线观看| 日韩丝袜视频| 超碰激情在线| 国产精品理论片| 116美女写真午夜一级久久| 在线免费看黄视频| 天天爱天天做色综合| 成人在线小视频| 日本女人一区二区三区| 91亚洲免费视频| 欧美最新另类人妖| 日韩亚洲精品电影| 欧美性videos高清精品| 久久青草久久| 樱花www成人免费视频| 91嫩草精品| 麻豆一区二区麻豆免费观看| 亚洲综合国产激情另类一区| 99国产牛牛视频在线网站| 欧美激情精品久久久久久大尺度| 欧美色综合天天久久综合精品| 色欲av无码一区二区三区| 亚洲免费电影一区| 欧美黄片一区二区三区| 精品国产一区二区三区四区四| 性爱视频日本| 久久精品国产一区二区| 亚洲一区二区小说| 伊人精品在线视频| www.亚洲人.com| 最近中文字幕av免费高清| 色噜噜色狠狠狠狠狠综合色一| 日韩三级网址| 亚洲精品美女久久久久| 99久久夜色精品国产亚洲狼| 婷婷社区五月天| 国产精品久久久久久久久久久免费看| 成人蜜臀av电影| 久草网视频在线观看| 欧美另类第一页| 97精品久久久| 欧美日韩国产页| 国产一区二区三区精品欧美日韩一区二区三区| 国产欧美精品久久久|