添加多个 DFM 时出现动态功能模块 google 服务问题
Dynamic Feature Module google services issue when more than one DFM is added
我正在努力模块化我们的应用程序并实施 Android 的新动态功能模块以供按需下载。我能够成功添加 feature1,但是,当我添加 feature2 时,出现此错误:
[:feature1, :feature2] all package the same library [com.google.android.gms:play-services-location-license].
[:feature1, :feature2] all package the same library [com.google.firebase:firebase-messaging-license].
Multiple APKs packaging the same library can cause runtime errors.
Adding the above library as a dependency of the base module will resolve this
issue by packaging the library with the base APK instead.
我的 DFM 唯一用作依赖项的是 :app
。当我查找这些许可证依赖项时,它们不存在于我的任何 gradle 文件中。我们目前使用 android gradle 版本 3.5.2。以下是 :app
模块的依赖片段:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'jacoco'
dependencies {
def nav_version = "2.1.0"
implementation 'androidx.fragment:fragment:1.1.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.2.0-alpha01'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.browser:browser:1.0.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.core:core-ktx:1.1.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
implementation 'com.google.android.play:core:1.6.4'
implementation('com.crashlytics.sdk.android:crashlytics:2.10.1@aar') {
transitive = true
}
implementation 'com.onesignal:OneSignal:3.11.4'
implementation 'com.jakewharton.timber:timber:4.7.1'
implementation 'com.google.firebase:firebase-analytics:17.2.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-beta-3'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.60"
}
我该如何解决这个问题?我假设这一定是由于 google 服务依赖项之一包含彼此相同的东西,即 play-core
、gms
和 firebase
,但我有不知道。文档说 DFM 必须依赖于您的基本模块(在我的例子中,:app
),所以这对我来说似乎很奇怪。任何解决这个问题的帮助将不胜感激。
谢谢~
编辑:feature1 和 feature2 都有两个依赖项:所需的插件 apply plugin: 'com.android.dynamic-feature'
和 implementation project(':app')
在做了一些实验并深入研究了我的 DFM 的依赖结构之后,我意识到我必须在 DFM 中包含一个单独的 google.json
文件。添加后,gradle 不再抱怨重复许可。
我正在努力模块化我们的应用程序并实施 Android 的新动态功能模块以供按需下载。我能够成功添加 feature1,但是,当我添加 feature2 时,出现此错误:
[:feature1, :feature2] all package the same library [com.google.android.gms:play-services-location-license].
[:feature1, :feature2] all package the same library [com.google.firebase:firebase-messaging-license].
Multiple APKs packaging the same library can cause runtime errors.
Adding the above library as a dependency of the base module will resolve this
issue by packaging the library with the base APK instead.
我的 DFM 唯一用作依赖项的是 :app
。当我查找这些许可证依赖项时,它们不存在于我的任何 gradle 文件中。我们目前使用 android gradle 版本 3.5.2。以下是 :app
模块的依赖片段:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'jacoco'
dependencies {
def nav_version = "2.1.0"
implementation 'androidx.fragment:fragment:1.1.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.2.0-alpha01'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.browser:browser:1.0.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.core:core-ktx:1.1.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
implementation 'com.google.android.play:core:1.6.4'
implementation('com.crashlytics.sdk.android:crashlytics:2.10.1@aar') {
transitive = true
}
implementation 'com.onesignal:OneSignal:3.11.4'
implementation 'com.jakewharton.timber:timber:4.7.1'
implementation 'com.google.firebase:firebase-analytics:17.2.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-beta-3'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.60"
}
我该如何解决这个问题?我假设这一定是由于 google 服务依赖项之一包含彼此相同的东西,即 play-core
、gms
和 firebase
,但我有不知道。文档说 DFM 必须依赖于您的基本模块(在我的例子中,:app
),所以这对我来说似乎很奇怪。任何解决这个问题的帮助将不胜感激。
谢谢~
编辑:feature1 和 feature2 都有两个依赖项:所需的插件 apply plugin: 'com.android.dynamic-feature'
和 implementation project(':app')
在做了一些实验并深入研究了我的 DFM 的依赖结构之后,我意识到我必须在 DFM 中包含一个单独的 google.json
文件。添加后,gradle 不再抱怨重复许可。