我正在为Android开发一个flutter应用程序。为此,我正在使用一个领域数据库,我正在使用领域依赖于flutter https://realm.io/realm-flutter/从它读取数据。这个领域数据库是由android库com.my_realm_generating_library
生成的。
我现在的问题是,com.my_realm_generating_library
为kotlin https://realm.io/realm-kotlin/导入了领域库,因为我为flutter导入了领域库,kotlin库被包含了第二次。
当我运行flutter build apk
时,我得到这个结果:
Running Gradle task 'assembleRelease'...
Realm binaries for realm@0.8.0+rc already downloaded
Realm install command finished.
ERROR:/home/user/.gradle/caches/transforms-3/c90739e9642326489e851a982778d55f/transformed/jetified-realm-android-library-10.6.1-runtime.jar: R8: Type io.realm.BuildConfig is defined multiple times: /home/user/.gradle/caches/transforms-3/c90739e9642326489e851a982778d55f/transformed/jetified-realm-android-library-10.6.1-runtime.jar:io/realm/BuildConfig.class, /home/user/projectname/build/realm/intermediates/runtime_library_classes_jar/release/classes.jar:io/realm/BuildConfig.class
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:minifyReleaseWithR8'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.R8Task$R8Runnable
> Compilation failed to complete, origin: /home/user/.gradle/caches/transforms-3/c90739e9642326489e851a982778d55f/transformed/jetified-realm-android-library-10.6.1-runtime.jar:io/realm/BuildConfig.class
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 8s
Running Gradle task 'assembleRelease'... 9,2s
Gradle task assembleRelease failed with exit code 1
当我从pubspec中删除领域库时。Yaml,一切都可以编译。但我需要从我的kotlin代码和我的dart/flutter代码访问我的领域文件。是否有一些方法来修复这种依赖冲突,其中flutter使用相同的库和kotlin,最终没有一个工作?
我试过了:
我从我的pubspec.yaml的依赖项部分删除了realm: ^0.8.0+rc
。然后一切都编译了。这不是一个选项,因为我需要这个库在我的飞镖代码。
我也可以从android/app/build.gradle
中删除implementation "com.my_realm_generating_library"
。但是我还需要在kotlin代码中使用这个库来生成领域数据库。因此,这也是没有选项。
令人惊讶的是,我能够找到我的问题的答案,尽管我无法找到一个到目前为止在网上任何地方。希望这篇文章能帮助到一些和我一样遇到同样麻烦的人。
- 首先,我导航到我的
projectname/android
,并运行./gradlew app:dependencies --console=rich
找到com.my_realm_generating_library
的所有依赖项。 - 在我的例子中,
com.my_realm_generating_library
的唯一依赖是io.realm:realm-android-library:10.13.0
。我知道这个包将由realm-flutter依赖项提供。因此,我知道,我可以强制禁用com.my_realm_generating_library
的所有传递依赖。
我把build.gradle
放在dependencies
部分下面的代码是这样的:
implementation("com.my_realm_generating_library") {
transitive = false
}
现在一切正常。希望这对你有帮助!
我在把一个项目从一台电脑转移到另一台电脑时遇到了这个问题。
下面的动作帮助了我:
-
删除构建文件夹
- 运行
flutter build apk