关闭
我们正在尝试在已迁移到 androidX 的项目中集成 android 库(正在编译 android 支持库)。由于未知原因,我们得到了
can't find referenced method 'void addOnTabSelectedListener(com.google.android.material.tabs.TabLayout$OnTabSelectedListener)' in program class com.google.android.material.tabs.TabLayout
同时尝试获取启用了 proguard 的构建。
gradle-wrapper: 4.8
gradle 构建工具:3.2.0
compileSdkVersion 28
编辑 2018 年 10 月 9 日
由于某种原因,这是一个 proguard 问题,proguard 显示了错误的错误,在我们对源代码进行了一些更改后,忘记向 proguard 添加一些类,它用我们忘记添加的类更改了错误。添加它们后一切顺利。
最佳答案
我认为你应该告诉混淆器不要混淆 Material 类。 但这只是一种解决方法,您还有一些其他问题,因此请尝试修复它。
尝试在您的 proguardrules.pro 文件中添加这些行:
-keep class com.google.android.material.** { *; }
-dontwarn com.google.android.material.**
-dontnote com.google.android.material.**
-dontwarn androidx.**
-keep class androidx.** { *; }
-keep interface androidx.** { *; }
然后,在您的build.gradle
buildscript {
repositories {
maven {
url "http://storage.googleapis.com/r8-releases/raw/master"
}
}
dependencies {
classpath 'com.android.tools:r8:ff9c89416cc1c8adf83d481a1e5fd515fcb893b9'
classpath 'com.android.tools.build:gradle:your version'
}
}
关于ProGuard 的 AndroidX 构建问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52592257/