Flutter?Shell自動(dòng)化打包解放雙手
正文
經(jīng)過一段時(shí)間的學(xué)習(xí)和項(xiàng)目實(shí)踐,你會(huì)發(fā)現(xiàn),
打包->上傳蒲公英->生成二維碼
是一個(gè)枯燥且乏味的事情,只要打包配置項(xiàng),配置完成,剩下的基本上就是無聊的等待,和機(jī)械的步驟.
之前在寫iOS項(xiàng)目的時(shí)候,一直都是使用fastlane,和xcodebuild,進(jìn)行腳本打包的.
只是那個(gè)時(shí)候,只是會(huì)簡(jiǎn)單的打包,并沒有深究上傳.
最近花時(shí)間把flutter自動(dòng)化打包也給加上了.
腳本運(yùn)行視頻
打包流程圖
在開始編寫打包工具前,我們需要先把打包流程自己畫一畫,可以讓我們?cè)谀X子里,先過一下整體流程,哪些需要準(zhǔn)備,哪些需要單獨(dú)處理.這里我把我從第一次寫流程圖,到最終流程圖確定的過程也分享給大家.也算是一種記錄吧.
第一版
第二版
第三版
相對(duì)來說,經(jīng)過這三版的改進(jìn),也算是把整體流程捋順了,從一開始不能自定義參數(shù),到可以自定義參數(shù),從只會(huì)打包出apk和ipa.到可以上傳到蒲公英,上傳到iOS商店.也算是基本完成了我的需求,所以下一步,就是按照我們畫的流程圖,進(jìn)行代碼的編
腳本目錄講解
├── shell_pack │ ├── ExportOptions.plist(導(dǎo)出iOS商店包需要的plist) │ ├── ExportOptions_dev.plist(導(dǎo)出iOS測(cè)試包) │ ├── ExportOptions_hoc.plist(導(dǎo)出hoc包) │ ├── pack.sh(入口) │ ├── pack_apk.sh(apk打包模塊) │ ├── pack_clear_create_tool.sh(清緩存和構(gòu)建文件模塊) │ ├── pack_config.sh(全局配置項(xiàng)) │ ├── pack_ipa.sh(ipa打包模塊) │ ├── pack_tool.sh(工具模塊) │ └── pgyer_upload.sh(蒲公英模塊)
這就是根據(jù)我們畫的流程圖,我這邊設(shè)計(jì)的代碼實(shí)現(xiàn)分布,之前也看過其他人寫的shell腳本,一般都是把所有的代碼寫到一塊,可能我這邊一看到這么多代碼,就會(huì)有抗拒心里,所以,根據(jù)我的開發(fā)習(xí)慣,我會(huì)把主流程放在入口模塊,具體的業(yè)務(wù)實(shí)現(xiàn),會(huì)下發(fā)到各個(gè)功能模塊里,這樣的話也方便各個(gè)模塊的獨(dú)自聯(lián)調(diào)測(cè)試.??,我來簡(jiǎn)單介紹一下對(duì)應(yīng)模塊的功能.
pack.sh(入口)
# shellcheck disable=SC1091 # shellcheck disable=SC2154 source ./pack_tool.sh source ./pack_ipa.sh source ./pack_apk.sh source ./pack_config.sh source ./pack_clear_create_tool.sh # 為了可以執(zhí)行 sh 文件所有的函數(shù) chmod a+x pack_clear_create_tool.sh pack_tool.sh echomsg "STAR" echomsg "開始配置參數(shù)" param_count=$# if [ $param_count == 0 ]; then normalTip else for i in "$@"; do if [[ $i == "-h" ]]; then echoHelp exit else funWithParam "$i" fi done fi configbuildType echomsg "參數(shù)配置完成" # 最終打包配置結(jié)果顯示 echoTip # 清楚緩存 cleanFun # 構(gòu)建文件 createLib # 打包上傳 if [ "$pack_os" == 0 ]; then buidApk buidIos elif [ "$pack_os" == 1 ]; then buidApk else buidIos fi echomsg "END"
從代碼中,我把入口模塊劃分成4個(gè)小模塊
1. 配置參數(shù)
2. 清理緩存
3. 構(gòu)建文件
4. 打包上傳
這也符合我們梳理的流程圖.這里我打算把具體的代碼實(shí)現(xiàn)分為三部分進(jìn)行講解.
第一部分
- 參數(shù)配置
- 清理緩存
- 構(gòu)建版本
第二部分
- 安卓項(xiàng)目配置項(xiàng)
- 安卓打包
- 上傳蒲公英
第三部分
- iOS項(xiàng)目配置項(xiàng)
- iOS打包
- 上傳蒲公英
- 上傳商店
??分類,我會(huì)在以后的文章里進(jìn)行詳細(xì)講解.??我繼續(xù)講解一下
- pack_config.sh(全局配置項(xiàng))
- 腳本使用
pack_config.sh(全局配置項(xiàng))
# ======================== 命令參數(shù) ======================== # # 打包系統(tǒng) 0 全部 1 apk 2 ipa pack_os=0 # 上傳類型 1 商店 2 蒲公英 upload_type=1 # 打包環(huán)境 1 Releas 2 Deubg project_build_type=1 # 編譯環(huán)境 build_type="release" # 是否清理緩存 1 清理 0不清理 project_is_clear=1 # 0 全部市場(chǎng) 具體 123 是你自己修改apk_channels 對(duì)應(yīng)的渠道 pack_apk_channel=0 # ======================== 工程配置項(xiàng) ======================== # # 工程相對(duì)路徑 project_path=$(dirname $(pwd)) # ======================== Android ======================== # # Flutter android release 打包生成的路徑 flutter_release_apk_path=$project_path/build/app/outputs/apk/release/ # Flutter android debug 打包生成的路徑 flutter_debug_apk_path=$project_path/build/app/outputs/apk/debug/ # 安卓打包根文件 export_android_path=$project_path/export/apk # apk 最終Release存放的地方 export_apk_release_path=$export_android_path/release/ # apk 最終Debug存放的地方 export_apk_debug_path=$export_android_path/debug/ # 安卓渠道HUAWEI VIVO YYB apk_channels=(HUAWEI) # 安卓渠道 個(gè)數(shù) apk_chanhels_length=0 # ======================== IOS ======================== # # 工程名字 project_name=Runner # scheme 名字 project_scheme=$project_name # xcworkspace路徑 project_workspace_path=$project_path/ios/$project_name.xcworkspace # xcarchive 名字 xcarchive_name=${project_name}.xcarchive # ipa 名字 ipa_name=$project_name # ios 團(tuán)隊(duì)ID ios_teamID="" # 商店賬號(hào) xcrun_u="" # 賬號(hào)專屬密碼 xcrun_p="" # 導(dǎo)出iOS文件路徑 export_ios_path=$project_path/export/ios # 導(dǎo)出 xcarchive路徑 export_xcarchive_path=$export_ios_path/xcarchive/ # 導(dǎo)出ipa存放文件路徑 export_ipa_path=$export_ios_path/ipa/ # ExportOptions.plist app-store路徑 export_options_plist_store=$project_path/shell_pack/ExportOptions.plist # ExportOptions.plist app-hoc路徑 export_options_plist_hoc=$project_path/shell_pack/ExportOptions_hoc.plist # ExportOptions.plist app-dev路徑 export_options_plist_dev=$project_path/shell_pack/ExportOptions_dev.plist # 最后選擇的環(huán)境 export_options_plist=$export_options_plist_store # ======================== 蒲公英配置信息 ======================== # # 蒲公英api_key api_key="" # 蒲公英iOS二維碼地址 pgyer_ios_code_url="" # 蒲公英安卓二維碼地址 pgyer_android_code_url=""
從上面的代碼里,我這邊主要分了5個(gè)模塊
命令參數(shù)配置
如果你想修改默認(rèn)的配置參數(shù),你可以修改這個(gè)模塊 |
---|
比如修改默認(rèn)的上傳環(huán)境為 |
upload_type=2 |
這樣默認(rèn)上傳的就是蒲公英了,當(dāng)然我們也可以通過shell參數(shù)進(jìn)行修改上傳環(huán)境 |
項(xiàng)目路徑配置
默認(rèn)的打包工具shell_pack存放路徑如下所示
如圖所示,shell_pack文件,默認(rèn)是放在項(xiàng)目根目錄下,如果你想把shell_pack放到其他地方,請(qǐng)修改獲取項(xiàng)目路徑配置參數(shù)project_path=$(dirname $(pwd))(修改成項(xiàng)目的路徑,默認(rèn)打包工具放在項(xiàng)目根目錄下)
安卓打包配置
安卓需要修改的配置項(xiàng)就是安卓渠道,這個(gè)可以根據(jù)你們項(xiàng)目需求進(jìn)行修改, |
---|
apk_channels=(HUAWEI VIVO YYB) |
iOS打包配置
這里我只實(shí)現(xiàn)了一種上傳商店的方式,就是配置商店賬號(hào)和專屬秘密的形式,進(jìn)行商店上傳的.所以這里需要修改的配置就是 |
---|
xcrun_u="" xcrun_p="" |
- 蒲公英配置
- 只需要修改api_key即可
腳本使用
把shell_pack打包工具文件,放到你項(xiàng)目的根目錄下.如下所示
- 在終端進(jìn)入到shell_pack目錄下
- xx@xxx shelltest %cd shell_pack
- 在終端輸入執(zhí)行命令,如果你不需要修改默認(rèn)配置執(zhí)行即可
- sh pack.sh 如果你需要修改默認(rèn)配置項(xiàng),并且你不知道默認(rèn)配置項(xiàng)是啥的時(shí)候,你只需要輸入
- sh pack.sh -h
就會(huì)顯示默認(rèn)的配置參數(shù)以及參數(shù)說明
修改完成后,執(zhí)行對(duì)應(yīng)的命令即可,比如我這邊修改了u:2,把默認(rèn)上傳到商店,修改成了上傳到蒲公英 執(zhí)行命令如下
sh pack.sh -u:2
至此,自動(dòng)化打包就已完成,你可以快樂的解放雙手.做你想做的事情了. 喜歡看源碼的
項(xiàng)目地址
以上就是Flutter Shell自動(dòng)化打包解放雙手的詳細(xì)內(nèi)容,更多關(guān)于Flutter Shell自動(dòng)化打包的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
淺談Android AsyncTask內(nèi)存安全的一種使用方式
這篇文章主要介紹了淺談Android AsyncTask內(nèi)存安全的一種使用方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08Android 自定義加載動(dòng)畫Dialog彈窗效果的示例代碼
這篇文章主要介紹了Android 自定義加載動(dòng)畫Dialog彈窗效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06SimpleCommand實(shí)現(xiàn)圖片下載(二)
這篇文章主要為大家詳細(xì)介紹了SimpleCommand實(shí)現(xiàn)圖片下載,并顯示到ImageView控件上,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Android開發(fā)實(shí)現(xiàn)按鈕點(diǎn)擊切換背景并修改文字顏色的方法
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)按鈕點(diǎn)擊切換背景并修改文字顏色的方法,涉及Android界面布局與相關(guān)屬性設(shè)置技巧,需要的朋友可以參考下2018-01-01創(chuàng)建Android庫的方法及Android .aar文件用法小結(jié)
本文給大家介紹了創(chuàng)建Android庫的方法及Android中 .aar文件生成方法與用法詳解,涉及到創(chuàng)建庫模塊操作步驟及開發(fā)注意事項(xiàng),需要的朋友參考下吧2017-12-12Android Kotlin的使用及簡(jiǎn)單實(shí)例
這篇文章主要介紹了Android Kotlin的使用及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05