ProGuard 的 AndroidX 构建问题

标签 android android-support-library androidx

关闭

我们正在尝试在已迁移到 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/

相关文章:

android - 使用 dji mobile sdk 的 lint 错误

android - 检查用户是否购买了应用

android - 仅在 support.v7.Toolbar 下显示 NavDrawer Scrim

赛门铁克隔离的 Android admob

android - NestedScrollView 中的 ViewPager

android - 旋转后,onCreate() Fragment 在 onCreate() FragmentActivity 之前被调用

android - 无法在 Android Studio 中解析符号 'annotation'?

android - Kotlin 缺少提供程序的 Dagger 2 错误

android - flutter :将所有小部件排列成行

android - 实现具有动态绘制内容的 Android 小部件的正确方法是什么?