Proguard混淆使应用程序崩溃

时间:2016-02-10 10:01:17

标签: java android proguard

我是新手使用Proguard来混淆我的java类, 这是我的应用程序:

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        debuggable false
    }
}

我为Proguard启用了 minifyEnabled 。这是我的Proguard-rules.pro

-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class android.support.v7.app.** { *; }
-keep interface android.support.v7.app.** { *; }
-keep class android.support.v7.widget.** { *; }
-keep interface android.support.v7.widget.** { *; }
-dontshrink
-dontoptimize
-dontpreverify
-dontskipnonpubliclibraryclasses
-verbose
-dontusemixedcaseclassnames
-keepattributes *Annotation*

当我运行应用程序时,在应用程序移动到另一个实现 SearchView.OnQueryTextListener 的活动后,所有运行正常都会给我这样的错误:

Cannot instantiate class: android.support.v7.widget.SearchView
java.lang.NoSuchMethodException: <init> [class android.content.Context]
at java.lang.Class.getConstructorOrMethod(Class.java:460)
at java.lang.Class.getConstructor(Class.java:431)
at android.support.v7.view.k.a(Unknown Source)
at android.support.v7.view.k.a(Unknown Source)

请有人帮助我,我按照这条指令Android SearchView does not work但仍然得到同样的错误。我想要的只是Proguard来混淆我的java类

1 个答案:

答案 0 :(得分:0)

使用以下方式,

-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }

与其他支持库v4相同

-dontwarn android.support.v4.app.**
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }