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

适配Android 14(API 34):老旧Flutter项目快速构建方法咨询

适配Flutter老旧项目到targetSdkVersion 34的快速构建方案

一、M1 Mac Java版本适配

  • 安装Java 11(适配AGP 7.0+的最低要求):brew install temurin11
  • 用jenv快速切换项目专属Java版本:
    1. 安装jenv:brew install jenv
    2. 添加Java 11到jenv:jenv add /Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home
    3. 进入项目根目录执行:jenv local 11
  • 验证:执行java -version确认输出为11.x版本

二、Android核心配置最小改动

  1. 修改android/app/build.gradle:

    • 将targetSdkVersion和compileSdkVersion统一改为34
    • 打开android/build.gradle,把com.android.tools.build:gradle版本锁定为7.0.4(兼容旧Flutter且支持targetSdk34的稳定版)
    • 调整Gradle wrapper版本:打开android/gradle/wrapper/gradle-wrapper.properties,将distributionUrl改为https\://services.gradle.org/distributions/gradle-7.0.2-all.zip(AGP 7.0对应配套版本)
  2. 适配targetSdk34权限变更:

    • 在AndroidManifest.xml中,用android.permission.READ_MEDIA_IMAGES、android.permission.READ_MEDIA_VIDEO替代旧的READ_EXTERNAL_STORAGE
    • 涉及前台服务的项目,添加android.permission.POST_NOTIFICATIONS权限

三、依赖缺失问题修复(以video_player为例)

  • 打开pubspec.yaml,将video_player版本锁定为2.4.10(兼容旧Flutter与targetSdk34的稳定版本,无需升级到最新版)
  • 执行缓存清理命令:flutter clean && rm -rf android/.gradle && flutter pub get
  • 检查自定义代码中是否存在旧API调用(如Environment.getExternalStorageDirectory()),替换为Context.getExternalFilesDir(null)

四、M1 Mac编译优化配置

在android/gradle.properties中添加以下配置,解决架构兼容与内存问题:

android.useAndroidX=true
android.enableJetifier=true
org.gradle.jvmargs=-Xmx2048M
android.nonTransitiveRClass=false
android.bundle.enableUncompressedNativeLibs=false
  • 先测试debug构建:flutter build apk --debug,无报错后打release包:flutter build apk --release

批量处理多项目技巧

  • 将上述修改后的build.gradle、gradle-wrapper.properties、gradle.properties做成模板,直接替换四个项目的对应文件
  • 统一使用Flutter 2.10.5版本(2022年稳定版,兼容旧项目且支持targetSdk34)

内容的提问来源于stack exchange,提问作者David Kiss

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:17:11