欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flutter?Shell自動(dòng)化打包解放雙手

 更新時(shí)間:2022年10月08日 15:39:02   作者:TT_Close  
這篇文章主要為大家介紹了Flutter?Shell自動(dòng)化打包解放雙手概要,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

經(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)目地址

DEMO

腳本地址

以上就是Flutter Shell自動(dòng)化打包解放雙手的詳細(xì)內(nèi)容,更多關(guān)于Flutter Shell自動(dòng)化打包的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android Activity狀態(tài)與操作探究

    Android Activity狀態(tài)與操作探究

    Activity作為Android四大組件之一,他的啟動(dòng)絕對(duì)沒有那么簡(jiǎn)單。這里涉及到了系統(tǒng)服務(wù)進(jìn)程,啟動(dòng)過程細(xì)節(jié)很多,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值
    2022-12-12
  • 淺談Android AsyncTask內(nèi)存安全的一種使用方式

    淺談Android AsyncTask內(nèi)存安全的一種使用方式

    這篇文章主要介紹了淺談Android AsyncTask內(nèi)存安全的一種使用方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • Android 自定義加載動(dòng)畫Dialog彈窗效果的示例代碼

    Android 自定義加載動(dòng)畫Dialog彈窗效果的示例代碼

    這篇文章主要介紹了Android 自定義加載動(dòng)畫Dialog彈窗效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • SimpleCommand實(shí)現(xiàn)圖片下載(二)

    SimpleCommand實(shí)現(xiàn)圖片下載(二)

    這篇文章主要為大家詳細(xì)介紹了SimpleCommand實(shí)現(xiàn)圖片下載,并顯示到ImageView控件上,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Android按鈕美化樣式的實(shí)現(xiàn)代碼

    Android按鈕美化樣式的實(shí)現(xiàn)代碼

    本文給大家介紹android按鈕美化樣式的實(shí)現(xiàn)代碼,主要是通過在drawable文件夾下 新建button_drawable.xml,具體實(shí)現(xiàn)代碼跟隨小編一起看看吧
    2019-11-11
  • Android開發(fā)實(shí)現(xiàn)按鈕點(diǎn)擊切換背景并修改文字顏色的方法

    Android開發(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文件用法小結(jié)

    本文給大家介紹了創(chuàng)建Android庫的方法及Android中 .aar文件生成方法與用法詳解,涉及到創(chuàng)建庫模塊操作步驟及開發(fā)注意事項(xiàng),需要的朋友參考下吧
    2017-12-12
  • RecyclerView自定義分割線

    RecyclerView自定義分割線

    這篇文章主要為大家詳細(xì)介紹了RecyclerView自定義分割線的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • Android Kotlin的使用及簡(jiǎn)單實(shí)例

    Android Kotlin的使用及簡(jiǎn)單實(shí)例

    這篇文章主要介紹了Android Kotlin的使用及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Android Popwindow彈出框的模板使用示例

    Android Popwindow彈出框的模板使用示例

    這篇文章給大家介紹了Android Popwindow彈出框的模板使用示例,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧
    2017-06-06

最新評(píng)論