添加多个 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-coregmsfirebase,但我有不知道。文档说 DFM 必须依赖于您的基本模块(在我的例子中,:app),所以这对我来说似乎很奇怪。任何解决这个问题的帮助将不胜感激。

谢谢~

编辑:feature1 和 feature2 都有两个依赖项:所需的插件 apply plugin: 'com.android.dynamic-feature'implementation project(':app')

在做了一些实验并深入研究了我的 DFM 的依赖结构之后,我意识到我必须在 DFM 中包含一个单独的 google.json 文件。添加后,gradle 不再抱怨重复许可。