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
相关产品推荐
相关产品推荐

