Flutter打包App Bundle失败::app:minifyReleaseWithR8任务执行异常
Flutter构建App Bundle失败:重复类与StackOverflowError问题
问题详情
构建Flutter项目的App Bundle时,minifyReleaseWithR8任务执行失败,核心报错有两个:
org.bouncycastle.jcajce.provider.asymmetric.edec.KeyFactorySpi$Ed25519类重复定义- 伴随
java.lang.StackOverflowError错误
初步判断是Java依赖冲突,但无法定位具体根源。
解决步骤
1. 排查重复的BouncyCastle依赖
在Android项目根目录执行命令拉取完整依赖树,找出重复引入BouncyCastle的库:
./gradlew app:dependencies
搜索bouncycastle相关条目,找到重复来源后,在app/build.gradle中给对应依赖添加排除规则。例如某第三方库带了重复依赖,可这么写:
implementation('com.example:target-library:1.0.0') { exclude group: 'org.bouncycastle' }
2. 调整R8混淆配置
在app/proguard-rules.pro中添加规则,避免混淆处理时触发重复类报错:
-keep class org.bouncycastle.** { *; } -dontwarn org.bouncycastle.**
同时检查app/build.gradle的release构建配置,确保R8参数正确:
android { buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
3. 清理构建缓存
缓存异常可能引发依赖问题,依次执行以下命令清空缓存:
flutter clean ./gradlew clean ./gradlew build --refresh-dependencies
4. 解决StackOverflowError
该错误多因R8混淆时递归处理过深导致,在gradle.properties中加大JVM堆内存:
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
5. 检查版本兼容性
确保Flutter、Gradle、Android Gradle Plugin版本匹配。用flutter doctor -v确认环境,若版本不兼容,可选择升级Flutter:
flutter upgrade
或调整项目根目录build.gradle中的版本号,示例如下:
buildscript { ext.kotlin_version = '1.9.0' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
内容的提问来源于stack exchange,提问作者Ahmet Özrahat
相关产品推荐
相关产品推荐

