一个Flutter项目有些地方想自己改下,临时搞了个虚拟机做环境,做半天这不行那不行,还不怎么能找到解决办法,本来想在Replit上解决,然后缺依赖,想去GitHub上用Actions解决,也不行,现在想能有个直接做好的安装虚拟机就完了。
自己之前搞好过一次,然后,那个虚拟机给我删了。
顺便吐槽一下Flutter的项目,漂亮归漂亮,全平台归全平台,但改个东西是真的麻烦。
一个Flutter项目有些地方想自己改下,临时搞了个虚拟机做环境,做半天这不行那不行,还不怎么能找到解决办法,本来想在Replit上解决,然后缺依赖,想去GitHub上用Actions解决,也不行,现在想能有个直接做好的安装虚拟机就完了。
自己之前搞好过一次,然后,那个虚拟机给我删了。
顺便吐槽一下Flutter的项目,漂亮归漂亮,全平台归全平台,但改个东西是真的麻烦。
![]()
你咋自己删了
有段时间了,那时候是为了改东西搭的,然后那个项目要改的东西太多,干脆不用了,然后我寻思,这玩意好像没啥用,然后,就删了。现在。很后悔。
用 docker 啊
dev container 设计出来就是干这个的
有关键词嘛?我去看看。
我自己构建flutter项目安卓端的Github Action
需要注意的是为了apk签名,设置了几个secrets
name: Flutter CI Build
on:
workflow_dispatch:
inputs:
java_version:
required: true
default: '17'
flutter_version:
required: true
default: '3.x'
flutter_channel:
required: true
default: 'stable' # or: 'beta', 'dev' or 'master'
flutter_type:
required: true
default: 'apk'
flutter_build_params:
required: false
default: '--release --target-platform=android-arm64'
repo:
required: true
ref:
required: false
default: ''
submodules:
required: false
default: 'false'
name_pattern:
required: false
default: 'build/**/release/*arm64*.apk'
jobs:
flutter:
name: Flutter CI Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
repository: ${{ github.event.inputs.repo }}
ref: ${{ github.event.inputs.ref }}
fetch-depth: 1
- name: Checkout submodules
if: ${{ github.event.inputs.submodules != 'false' }}
run: git submodule update --init --recursive
- name: Prepare Java
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: ${{ github.event.inputs.java_version }}
java-package: jdk+fx
cache: 'gradle'
- name: Cache Flutter dependencies
uses: actions/cache@v4
with:
path: /opt/hostedtoolcache/flutter
key: ${{ runner.OS }}-flutter-cache-${{ github.event.inputs.flutter_version }}-${{ github.event.inputs.flutter_channel }}
restore-keys: |
${{ runner.OS }}-flutter-cache-
- uses: subosito/[email protected]
with:
flutter-version: ${{ github.event.inputs.flutter_version }}
channel: ${{ github.event.inputs.flutter_channel }} # or: 'stable', 'beta', 'dev' or 'master'
- name: Decode keystore and create jks and properties file
if: ${{ github.event.inputs.flutter_type == 'apk' }}
run: |
echo "${{ secrets.SIGN_FILE_BASE64 }}" | base64 -di > android/app/keystore.jks
echo "storeFile=keystore.jks" >> android/key.properties
echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> android/key.properties
echo "storePassword=${{ secrets.KEYSTORE_PASSWORD }}" >> android/key.properties
echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> android/key.properties
- name: Build project
run: |
flutter config --build-dir=build/outputs
flutter pub get
flutter build ${{ github.event.inputs.flutter_type }} ${{ github.event.inputs.flutter_build_params }}
- name: upload artifact
uses: actions/upload-artifact@v4
with:
name: flutter_build
path: ${{ inputs.name_pattern }}