web-dev-qa-db-ja.com

ProGuardでのAndroidXビルドの問題

[〜#〜] closed [〜#〜]

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

compileSdkVersion 28

編集2018年10月9日

何らかの理由で、それはプロガードの問題であり、ソースコードにいくつかの変更を加えた後、プロガードが間違ったエラーを表示し、プロガードにいくつかのクラスを追加するのを忘れたため、追加し忘れたクラスのエラーを変更しました。そしてそれらを追加した後、すべてがうまくいきました。

マテリアルクラスを難読化しないように注意する必要があると思います。しかし、これは単なる回避策であり、他の問題があるので修正してみてください。

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'
    }
}
8
-dontwarn com.google.Android.material.**
-keep class com.google.Android.material.** { *; }

-dontwarn androidx.**
-keep class androidx.** { *; }
-keep interface androidx.** { *; }
3
Vijay Patel