持续创造,加速成长!这是我参与「日新计划 10 月更文挑战」的第1天,点击查看活动详情

经过一段时间的学习和项目实践,你会发现,

打包->上传蒲公英->生成二维码

是一个单调且乏味的工作,只需打包装备项,装备完结,剩余的基本上便是无聊的等待,和机械的步骤.

之前在写iOS项目的时分,一直都是运用fastlane,和xcodebuild,进行脚本打包的.

只是那个时分,只是会简略的打包,并没有深究上传.

最近花时间把flutter自动化打包也给加上了.

您能在这儿看到啥

  • 目录
  1. 脚本运转视频
  2. 打包流程图
  3. 脚本目录解说
  4. 脚本的运用
  5. DEMO
  6. 脚本地址

脚本运转视频

打包流程图

在开端编写打包东西前,咱们需求先把打包流程自己画一画,能够让咱们在脑子里,先过一下全体流程,哪些需求预备,哪些需求单独处理.这儿我把我从第一次写流程图,到终究流程图确定的过程也共享给咱们.也算是一种记录吧.

  • 第一版
    Flutter 解放双手-Shell自动化打包之概要
  • 第二版
    Flutter 解放双手-Shell自动化打包之概要
  • 第三版
    Flutter 解放双手-Shell自动化打包之概要

相对来说,经过这三版的改善,也算是把全体流程捋顺了,从一开端不能自定义参数,到能够自定义参数,从只会打包出apk和ipa.到能够上传到蒲公英,上传到iOS商铺.也算是基本完结了我的需求,所以下一步,便是依照咱们画的流程图,进行代码的编

脚本目录解说

├── shell_pack
│ ├── ExportOptions.plist(导出iOS商铺包需求的plist)
│ ├── ExportOptions_dev.plist(导出iOS测验包)
│ ├── ExportOptions_hoc.plist(导出hoc包)
│ ├── pack.sh(进口)
│ ├── pack_apk.sh(apk打包模块)
│ ├── pack_clear_create_tool.sh(清缓存和构建文件模块)
│ ├── pack_config.sh(大局装备项)
│ ├── pack_ipa.sh(ipa打包模块)
│ ├── pack_tool.sh(东西模块)
│ └── pgyer_upload.sh(蒲公英模块)

这便是依据咱们画的流程图,我这边设计的代码完结散布,之前也看过其他人写的shell脚本,一般都是把一切的代码写到一块,或许我这边一看到这么多代码,就会有抗拒心里,所以,依据我的开发习惯,我会把主流程放在进口模块,详细的业务完结,会下发到各个功能模块里,这样的话也便利各个模块的独自联调测验.,我来简略介绍一下对应模块的功能.

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
# 为了能够履行 sh 文件一切的函数
chmod a+x pack_clear_create_tool.sh pack_tool.sh
echomsg "STAR"
echomsg "开端装备参数"
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 "参数装备完结"
# 终究打包装备结果显现
echoTip
# 清楚缓存
cleanFun
# 构建文件
createLib
# 打包上传
if [ "$pack_os" == 0 ]; then
    buidApk
    buidIos
elif [ "$pack_os" == 1 ]; then
    buidApk
else
    buidIos
fi
echomsg "END"

从代码中,我把进口模块划分成4个小模块

1. 装备参数
2. 整理缓存
3. 构建文件
4. 打包上传

这也符合咱们梳理的流程图.这儿我打算把详细的代码完结分为三部分进行解说.

  • 第一部分
    • 参数装备
    • 整理缓存
    • 构建版本
  • 第二部分
    • 安卓项目装备项
    • 安卓打包
    • 上传蒲公英
  • 第三部分
    • iOS项目装备项
    • iOS打包
    • 上传蒲公英
    • 上传商铺

分类,我会在今后的文章里进行详细解说.我持续解说一下

  • pack_config.sh(大局装备项)
  • 脚本运用

pack_config.sh(大局装备项)

# ======================== 指令参数 ======================== #
# 打包系统 0 悉数 1 apk 2 ipa
pack_os=0
# 上传类型 1 商铺 2 蒲公英
upload_type=1
# 打包环境 1 Releas 2 Deubg
project_build_type=1
# 编译环境
build_type="release"
# 是否整理缓存 1 整理 0不整理
project_is_clear=1
# 0 悉数市场 详细 123 是你自己修正apk_channels 对应的途径
pack_apk_channel=0
# ======================== 工程装备项 ======================== #
# 工程相对途径
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)
# 安卓途径 个数
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 团队ID
ios_teamID=""
# 商铺账号
xcrun_u=""
# 账号专属密码
xcrun_p=""
# 导出iOS文件途径
export_ios_path=$project_path/export/ios
# 导出 xcarchive途径
export_xcarchive_path=$export_ios_path/xcarchive/
# 导出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
# 最终挑选的环境
export_options_plist=$export_options_plist_store
# ======================== 蒲公英装备信息 ======================== #
# 蒲公英api_key
api_key=""
# 蒲公英iOS二维码地址
pgyer_ios_code_url=""
# 蒲公英安卓二维码地址
pgyer_android_code_url=""

从上面的代码里,我这边主要分了5个模块

  • 指令参数装备

    如果你想修正默许的装备参数,你能够修正这个模块
    比方修正默许的上传环境为
    upload_type=2
    这样默许上传的便是蒲公英了,当然咱们也能够经过shell参数进行修正上传环境
  • 项目途径装备

    默许的打包东西shell_pack寄存途径如下所示
    Flutter 解放双手-Shell自动化打包之概要
    如图所示,shell_pack文件,默许是放在项目根目录下,如果你想把shell_pack放到其他当地,请修正获取项目途径装备参数
    project_path=$(dirname $(pwd))(修正成项目的途径,默许打包东西放在项目根目录下)
  • 安卓打包装备

    安卓需求修正的装备项便是安卓途径,这个能够依据你们项目需求进行修正,
    apk_channels=(HUAWEI VIVO YYB)
  • iOS打包装备

    这儿我只完结了一种上传商铺的方法,便是装备商铺账号专属秘密的形式,进行商铺上传的.所以这儿需求修正的装备便是
    xcrun_u="" xcrun_p=""
  • 蒲公英装备

    只需求修正api_key即可

脚本运用

  1. shell_pack打包东西文件,放到你项目的根目录下.如下所示

    Flutter 解放双手-Shell自动化打包之概要

  2. 在终端进入到shell_pack目录下

    xx@xxx shelltest %cd shell_pack

  3. 在终端输入履行指令,如果你不需求修正默许装备履行即可

    sh pack.sh 如果你需求修正默许装备项,并且你不知道默许装备项是啥的时分,你只需求输入

    sh pack.sh -h

Flutter 解放双手-Shell自动化打包之概要

就会显现默许的装备参数以及参数说明

修正完结后,履行对应的指令即可,比方我这边修正了u:2,把默许上传到商铺,修正成了上传到蒲公英 履行指令如下

sh pack.sh -u:2

至此,自动化打包就已完结,你能够高兴的解放双手.做你想做的工作了. 喜爱看源码

项目地址

DEMO

脚本地址

系列文章

  • Flutter 解放双手-Shell自动化打包之装备(未发布)
  • Flutter 解放双手-Shell自动化打包之APK(未发布)
  • Flutter 解放双手-Shell自动化打包之IPA(未发布)