库类(来自Android sdk)取决于程序类(同样,Android sdk)

库类(来自Android sdk)取决于程序类(同样,Android sdk),android,gradle,proguard,android-proguard,gradle-plugin,Android,Gradle,Proguard,Android Proguard,Gradle Plugin,我们正在从Android Gradle插件2.3.3迁移到Gradle插件3.0.1。我们的应用程序由一个应用程序模块和一个库模块组成。一些依赖项是可传递的(使用api关键字连接),但即使使用implementation使它们不可传递也无济于事。将所有编译类型的依赖项更改为新的依赖项后,调试构建工作正常。然而,带有Proguard的发布版本显示了数千条警告(在2.3.3上,一切进展顺利) 特别是,当库中的Android类依赖于程序中的Android类时,我不明白为什么会出现这样的问题(这里只有几

我们正在从Android Gradle插件2.3.3迁移到Gradle插件3.0.1。我们的应用程序由一个应用程序模块和一个库模块组成。一些依赖项是可传递的(使用
api
关键字连接),但即使使用
implementation
使它们不可传递也无济于事。将所有
编译
类型的依赖项更改为新的依赖项后,调试构建工作正常。然而,带有Proguard的发布版本显示了数千条警告(在2.3.3上,一切进展顺利)

特别是,当库中的Android类依赖于程序中的Android类时,我不明白为什么会出现这样的问题(这里只有几个例子):

总的来说,Gradle插件2.3.3上没有出现以下类型的警告(因此,已经配置了Proguard):

以下是依赖项列表(
gradle-q app:dependencies--configurationdevelopmentdebugruntimeclasspath
):


快速修复: 我在升级到Gradle plugin 3.0.0时遇到了这个问题,一个快速的解决方法是将它添加到您的proguard文件中

-dontwarn android.**
这也适用于3.0.1

推荐: 当您使用的库未引用支持库中的android类或引用不推荐的类时,会发生这种情况。我猜是

com.github.tony19:logback-android-core
您正在使用的是导致此问题的原因,您可以删除此依赖项并尝试重建。如果这没有帮助,您可以尝试删除正在使用但最近未更新的任何其他库

-dontwarn android.**
无法解决您的问题。您需要查看依赖关系树并找到导致问题的库

例如,在我的情况下,它是

+--- com.foursquare:foursquare-android-oauth:1.0.3
|    \--- com.google.android:android:4.1.1.4
|         +--- commons-logging:commons-logging:1.1.1
|         +--- org.apache.httpcomponents:httpclient:4.0.1
|         |    +--- org.apache.httpcomponents:httpcore:4.0.1
|         |    +--- commons-logging:commons-logging:1.1.1
|         |    \--- commons-codec:commons-codec:1.3
|         +--- org.khronos:opengl-api:gl1.1-android-2.1_r1
|         +--- xerces:xmlParserAPIs:2.6.2
|         +--- xpp3:xpp3:1.1.4c
|         \--- org.json:json:20080701
因此,您需要为该库排除com.google.android

implementation ('com.foursquare:foursquare-android-oauth:1.0.3'){
        exclude group: 'com.google.android'
}

奇怪。我试过-dontwarn android。**稍早一点,但程序一开始就崩溃了。现在它开始工作了。稍后会尝试更好的解决方案,谢谢。
-dontwarn android.**
+--- com.foursquare:foursquare-android-oauth:1.0.3
|    \--- com.google.android:android:4.1.1.4
|         +--- commons-logging:commons-logging:1.1.1
|         +--- org.apache.httpcomponents:httpclient:4.0.1
|         |    +--- org.apache.httpcomponents:httpcore:4.0.1
|         |    +--- commons-logging:commons-logging:1.1.1
|         |    \--- commons-codec:commons-codec:1.3
|         +--- org.khronos:opengl-api:gl1.1-android-2.1_r1
|         +--- xerces:xmlParserAPIs:2.6.2
|         +--- xpp3:xpp3:1.1.4c
|         \--- org.json:json:20080701
implementation ('com.foursquare:foursquare-android-oauth:1.0.3'){
        exclude group: 'com.google.android'
}