You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter在Github Actions构建APK失败:依赖与配置异常

解决Github Actions构建Flutter APK失败问题

1. 修复依赖解析与TLS连接问题

由于Github Actions runner访问Google仓库可能存在TLS协议或网络限制,替换为国内镜像加速依赖下载:
修改项目根目录下的android/build.gradle文件:

buildscript {
    ext.kotlin_version = '1.8.0' // 版本需与当前Flutter稳定版兼容
    repositories {
        // 优先使用阿里云镜像
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.4.2' // 指定兼容的Android Gradle插件版本
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
        google()
        mavenCentral()
    }
}

2. 更新过时的Flutter Gradle插件应用方式

针对插件应用过时警告,修改android/app/build.gradle文件顶部的插件声明:

旧的过时写法:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

替换为新的插件ID写法:

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'dev.flutter.flutter-gradle-plugin'
}

同时确保android/gradle/wrapper/gradle-wrapper.properties中的Gradle版本与Android Gradle插件兼容(比如插件7.4.2对应Gradle 7.5):

distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip

3. 优化Github Actions工作流

添加缓存步骤加速构建,避免重复下载依赖:

on:
  pull_request:
    branches:
      - develop_3.0
  push:
    branches:
      - develop_3.0
name: "Build & Release"
jobs:
  build:
    name: Build & Release
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-java@v3
        with:
          distribution: "zulu"
          java-version: "17"
      - uses: subosito/flutter-action@v2
        with:
          channel: "stable"
          architecture: x64
          cache: true # 缓存Flutter依赖
      # 缓存Gradle文件与依赖
      - name: Cache Gradle resources
        uses: actions/cache@v3
        with:
          path: |
            ~/.gradle/caches
            ~/.gradle/wrapper
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
          restore-keys: |
            ${{ runner.os }}-gradle-
      - run: flutter pub get
      - run: flutter build apk --release --split-per-abi
      - run: |
          flutter build ios --no-codesign
          cd build/ios/iphoneos
          mkdir Payload
          cd Payload
          ln -s ../Runner.app
          cd ..
          zip -r app.ipa Payload
      - name: Push to Releases
        uses: ncipollo/release-action@v1
        with:
          artifacts: "build/app/outputs/apk/release/*,build/ios/iphoneos/app.ipa"
          tag: v1.0.${{ github.run_number }}
          token: ${{ secrets.TOKEN }}

4. 额外验证步骤

  • 执行flutter pub upgrade更新firebase_core、flutter_jailbreak_detection等插件到最新版本
  • 本地先运行flutter build apk --split-per-abi验证配置修改有效后,再推送到仓库触发Actions

内容的提问来源于stack exchange,提问作者Akhil George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 05:13:24