【问题标题】:AndroidX build issue with ProGuardProGuard 的 AndroidX 构建问题
【发布时间】:2019-03-06 15:08:39
【问题描述】:

关闭

我们正在尝试将android库(正在编译android支持库)集成到我们已经迁移到androidX的项目中。由于未知原因,我们得到了

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 build tools : 3.2.0

compileSdkVersion 28

2018 年 10 月 9 日编辑

由于某种原因,这是一个 proguard 问题,proguard 显示错误错误,在我们对源代码进行了一些更改后,忘记向 proguard 添加一些类,它用我们忘记添加的类更改了错误。添加它们后一切顺利。

【问题讨论】:

  • 你迁移到AndroidX了吗,确定迁移了吗? build.gradle 中有哪些依赖项?请添加更多信息+依赖项。
  • @ʍѳђઽ૯ท 这是这里提到的确切问题github.com/Instabug/Instabug-Android/issues/123
  • 看起来您的最后一次编辑实际上包含问题的答案。在这种情况下,正确的做法是发布答案,而不是进行编辑。请回滚并将您的解决方案作为答案发布(然后我们可以对此以及您的问题进行投票,所以这对您的声誉点也有好处!)

标签: android android-support-library androidx


【解决方案1】:

我认为你应该告诉 proguard 不要混淆材料类。 但这只是一种解决方法,您还有其他问题,因此请尝试修复它。

尝试在您的 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'
    }
}

【讨论】:

  • 这是一个破坏建筑物的警告,但是当我添加 --dontwarn 时它会正常构建,但在启动包含该界面的活动时崩溃
  • 完整的堆栈跟踪可以在这里找到github.com/Instabug/Instabug-Android/issues/…
  • 同样,它并没有破坏构建,但是一旦包含该类的活动启动它就会崩溃。
  • androidx 包中保留所有内容 太过分了。
  • @tir38 你知道如何删除那些我们没有使用的文件夹的insde androidx吗?
猜你喜欢
  • 1970-01-01
  • 2013-05-10
  • 2019-08-28
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多