# 有没有那种打包各种安装好开发环境镜像的站？

**URL:** <https://meta.appinn.net/t/topic/64499>\
**Category:** 问题求助\
**Created:** [2024 年12 月 24 日 13:49 UTC](https://meta.appinn.net/t/topic/64499 "2024-12-24T13:49:40Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

作者： ![FengWuShu](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/fengwushu/32/42162_2.png) [@FengWuShu](https://meta.appinn.net/u/FengWuShu)\
发布日期： [2024 年12 月 24 日 13:49 UTC](https://meta.appinn.net/t/topic/64499/1 "2024-12-24T13:49:40Z")

</div>

一个Flutter项目有些地方想自己改下，临时搞了个虚拟机做环境，做半天这不行那不行，还不怎么能找到解决办法，本来想在Replit上解决，然后缺依赖，想去GitHub上用Actions解决，也不行，现在想能有个直接做好的安装虚拟机就完了。

自己之前搞好过一次，然后，那个虚拟机给我删了。

顺便吐槽一下Flutter的项目，漂亮归漂亮，全平台归全平台，但改个东西是真的麻烦。

---

<div class="post-metadata">

作者： ![Qingwa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/qingwa/32/58632_2.png) [@Qingwa](https://meta.appinn.net/u/Qingwa)\
发布日期： [2024 年12 月 24 日 13:50 UTC](https://meta.appinn.net/t/topic/64499/2 "2024-12-24T13:50:58Z")

</div>

:joy:  
你咋自己删了

---

<div class="post-metadata">

作者： ![FengWuShu](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/fengwushu/32/42162_2.png) [@FengWuShu](https://meta.appinn.net/u/FengWuShu)\
发布日期： [2024 年12 月 24 日 13:54 UTC](https://meta.appinn.net/t/topic/64499/3 "2024-12-24T13:54:11Z")

</div>

有段时间了，那时候是为了改东西搭的，然后那个项目要改的东西太多，干脆不用了，然后我寻思，这玩意好像没啥用，然后，就删了。现在。很后悔。

---

<div class="post-metadata">

作者： ![jiesou](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/jiesou/32/52575_2.png) [@jiesou](https://meta.appinn.net/u/jiesou)\
发布日期： [2024 年12 月 24 日 13:55 UTC](https://meta.appinn.net/t/topic/64499/4 "2024-12-24T13:55:48Z")

</div>

用 docker 啊  
dev container 设计出来就是干这个的

---

<div class="post-metadata">

作者： ![FengWuShu](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/fengwushu/32/42162_2.png) [@FengWuShu](https://meta.appinn.net/u/FengWuShu)\
发布日期： [2024 年12 月 24 日 13:56 UTC](https://meta.appinn.net/t/topic/64499/5 "2024-12-24T13:56:48Z")

</div>

有关键词嘛？我去看看。

---

<div class="post-metadata">

作者： ![shadows](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/shadows/32/17001_2.png) [@shadows](https://meta.appinn.net/u/shadows)\
发布日期： [2024 年12 月 25 日 00:03 UTC](https://meta.appinn.net/t/topic/64499/6 "2024-12-25T00:03:12Z")

</div>

我自己构建flutter项目安卓端的Github Action  
需要注意的是为了apk签名，设置了几个secrets

```yaml
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/flutter-action@v2.18.0
        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 }}

```
