Flutter构建APK遇R8重复定义错误:Realm依赖冲突求助
解决Flutter Realm与Android端Kotlin Realm依赖冲突问题
针对你遇到的io.realm.BuildConfig类重复定义导致R8编译失败的问题,提供以下几种可行的解决思路:
1. 精准排除重复依赖
在Android项目的app/build.gradle中,给自定义Android库com.my_realm_generating_library排除掉它依赖的Realm模块,避免和Flutter Realm插件的依赖重复。
首先通过命令查看依赖树,确认重复的Realm模块:
./gradlew app:dependencies
找到com.my_realm_generating_library下依赖的Kotlin Realm相关模块后,在依赖声明中添加排除规则:
implementation("com.my_realm_generating_library") { // 根据实际依赖树调整排除的group和module exclude group: "io.realm.kotlin", module: "realm-base" exclude group: "io.realm.kotlin", module: "realm-library" }
2. 强制统一Realm依赖版本
如果排除依赖后出现功能缺失,可强制让整个项目使用同一版本的Realm依赖,消除版本差异带来的冲突。
在app/build.gradle的android块外添加配置,指定Flutter Realm所使用的Realm版本(先通过flutter pub deps查看Realm插件对应的Android依赖版本):
configurations.all { resolutionStrategy.force "io.realm.kotlin:realm-base:1.10.0" // 替换为实际兼容版本 resolutionStrategy.force "io.realm.kotlin:realm-library:1.10.0" }
3. 调整R8混淆规则(不推荐,仅临时应急)
若前两种方法无效,可尝试让R8忽略重复类的警告,但此方法可能引发运行时兼容性问题,需谨慎使用。
在app/proguard-rules.pro中添加:
-dontwarn io.realm.BuildConfig -keep class io.realm.BuildConfig { *; }
4. 对齐版本兼容性
检查Flutter Realm插件(0.8.0+rc)与Android库依赖的Kotlin Realm版本是否兼容,尽量让两者使用同一大版本的Realm,从根源减少冲突概率。
内容的提问来源于stack exchange,提问作者user195392
相关产品推荐
相关产品推荐

