近几个月,项目在国内外应用商店屡次被拒,尤其小米GooglePlay,为符合应用商店的审核规范,每次发版都需手动更改很多文件,所以脚本在这个时候开始发挥他的作用了。
目录:
1:shell脚本介绍
2:在flutter上的应用
一、shell脚本介绍
1:shell 的理解
一个命令解释器,它通过接受用户输入的Shell命令来对程序的运行或对计算机系统进行控制,何为解释,个人理解就是,向操作系统解释你的输入,并且处理操作系统的输出结果。
2:shell 结构和执行
以#!/bin/bash开头,告诉系统命令是由解释器/bin/bash执行的。
以#开头的行作为解释说明,除了第一行的#!/bin/bash,其余以#开头的行的内容将被认为是注释,不会被解释器执行。
脚本的名字以.sh结尾,用于区分这是一个shell脚本
3:shell 的简单运用
创建test脚本: touch test.sh
运行test脚本:./test.sh 或者 bash/sh test.sh
test脚本传参:$ ./test.sh 1 2 3 ./test.sh第一个参数为:1第二个参数为:2第三个参数为:3,脚本内获取参数的格式为:$n。n代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
另就是还有很多语法,比如重定向,管理文件等等,我觉得如果是想利用脚本进行 自动化办公的,基本上所有的语法的学习,最终都会落脚到对系统文件的操作上,想熟悉可以进入菜鸟学习,,谁还不是从菜鸟一点一点进阶来的呢,哈哈。
二:在flutter上的应用
主要是为了实现自动执行舍弃相关权限以及代码文件,自动化打包,apk命名规范。
实现步骤大致如下:
# 配置参数:params()
# 管理文件:config()
# 执行清缓存命令:flutterBuild()
# 最终执行打包apk全部流程:apk()
flutter 是命令式打包,先简单罗列在项目中常用的:
//打包命令
flutter build apk --release --flavor internal --split-per-abi -build-number 1
--release 指定 debug 或 release
--flavor 指定打包的生产环境
--build-number 构建的版本号;
--split-per-abi:表示告知需要按照我们指定的类型分别打包,如果移除则直接构建包含所有 CPU 架构的 Apk 包;
我们也可以利用--dart-define 自定义多渠道的功能
//定义并设置渠道参数--dart-define=APP_CHANNEL=normal//多个参数 --dart-define=APP_CHANNEL= google --dart-define=APP_CHANNEL=xiaomi
下面是具体讲解实现步骤:
配置参数:可以把一些打包需要的参数配置进去,比如:
# 管理文件:比如xiaomiConfig(),通过sed命令去管理。
# 执行打包前清缓存命令:flutterBuild()
执行flutter clean 和 pub get 去获取最新的依赖项
# 最终执行打包apk全部流程:apk()
执行命令前 传入打包需要的参数 比如多渠道名称,或者后续也可以对生产环境以及版本名称,版本号一一以参数的形式传入。
具体如何使用:
比如创建test.sh,想打包安卓下的google 完全可以具体传参数:
./test.sh -o:1 -s:1
-o:1 代表具体系统 1表示apk
-s:1代表商店类型 1表示google
至此一个shell 脚本在flutter上的应用demo 基本完毕,有兴趣可以根据自身公司业务进行编写。