前言
最近公司需要在不同渠道提供不同的包,滿足用戶來源渠道統計等等功能。
如果只有一兩個渠道還能夠下下指令build很快就好,如果需要打包的量很多複製貼上就搞昏頭了。
在Mac上可以使用shell script提前把腳本寫好,大量打包也會變容易些。
然而使用shell script還是需要敲指令,如果我做一個GUI用起來不就更方便更快速,甚至不需要是程序猿就可以大量打包!
開啟Flutter macOS desktop
下指令👇,就可以開啟macos桌面應用支持
flutter config --enable-macos-desktop
然後用flutter devices,檢查
C:\> flutter devices
1 connected device:
macOS (desktop) • macos • darwin-arm64 • macOS 12.0.1 21A559 darwin-arm
之後新建flutter專案就會有MacOS的平台選項
移植腳本
為了在flutter運行shell script,我選擇process_run 安裝:
process_run: ^0.12.3+2
使用
初始化 建議每次使用Shell()都填寫workingDirectory,不容易出錯。
import 'package:process_run/shell.dart';
//Shell shell = Shell(workingDirectory: 目錄路徑);
Shell shell = Shell();
執行命令,可單行或多行,要注意的是多行每一行都是獨立的,不支援很多操作如迴圈等等,要使用迴圈的話,寫在flutter/dart裡。
await shell.run('flutter doctor');
await shell.run('''
dart --version
pub --version
''');
變更目錄,除了重新Shell()之外,還可以使用shell.push(),相當於棧堆概念的指令cd。
shell.popd()返回。
//cd directory
shell = shell.pushd("directory");
shell = shell.popd();
原專案設定獲取打包參數
我這指定key為CHANNEL
void main() {
const channel =bool.hasEnvironment('CHANNEL') ? String.fromEnvironment('CHANNEL') : "";
.
.
.
}
打包的指令👇
flutter build apk --dart-define=CHANNEL=渠道名字
如果有多個只要中間加入空格,👇也可用於配置多環境
flutter build apk --dart-define=ENVIRONMENT=指定環境 --dart-define=CHANNEL=指定曲道
現在只要結合上述內容就可以做出一個簡單的打包器了!!!
能力有限
我在想能否在打包器里添加Flutter SDK,非程序猿使用者的電腦就無需安裝flutter,可以直接對專案打包。
小弟我才疏學淺,不知道commend該怎麼下,能否做到?
望掘金大佬們指點!!