我希望在库(AAR)中使用Firebase Analytics。使用Android Gradle Plugin 3.0.1和Gradle 4.1。我已将firebase依赖项包含在api
中,但是,当打包到AAR中时,缺少依赖项,并且它在运行时在使用应用程序中崩溃(它不是'模块'在该申请中)。此崩溃是由于java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.analytics.FirebaseAnalytics"
例外造成的。
图书馆模块:build.gradle
dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'com.squareup.okhttp3:okhttp:3.9.0'
implementation "com.android.support:support-annotations:$supportLibraryVersion"
implementation "com.android.support:appcompat-v7:$supportLibraryVersion"
api 'com.google.firebase:firebase-core:11.6.0'
}
我可以通过在消费应用程序中包含implementation "<firebase>"
行来解决这个问题,但是,我理解api
会向消费者公开作为传递依赖。
我不想强制消费者应用程序实施Firebase,并且在未设置google-play-services.json
文件,插件和app/build.gradle
更改时它可以正常运行(前提是我拥有消费者的实施线。)
使用库模块中的implementation <firebase>
或api <firebase>
,在同一个项目中,应用程序包含它:implementation project(':mylib')
它运行正常,它只是在使用AAR时问题出现了。
另外请注意,创建AAR的模块包含本机代码。