minifyEnabled true会导致应用启动时崩溃

时间:2016-03-27 15:19:05

标签: android android-proguard

  

不幸的是XX已经停止了。

一旦我启动了高效的应用,当我设置

时,我会收到此消息
buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

我没有任何额外的proguard规则(因为没有图书馆声明有必要)。

我的依赖关系看起来像这样:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.loopj.android:android-async-http:1.4.9'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.google.android.gms:play-services-gcm:8.4.0'
    compile 'com.google.android.gms:play-services-ads:8.4.0'
    compile 'me.leolin:ShortcutBadger:1.1.4@aar'
    compile 'com.facebook.android:facebook-android-sdk:4.+'
    compile 'com.jraska:falcon:1.0.0'
}

我尝试添加

-keep class com.loopj.** {*;}
-keep class com.jraska.** {*;}
-keep class me.leolin.** {*;}
-keep class com.android.** {*;}
-keep class com.google.** {*;}
-keep class com.facebook.** {*;}

我的proguard规则,但仍然是同样的错误。有什么想法吗?

1 个答案:

答案 0 :(得分:8)

所以我在日志中找到了错误

W/SupportMenuInflater(29041): Cannot instantiate class: android.support.v7.widget.SearchView
W/SupportMenuInflater(29041): java.lang.NoSuchMethodException: <init> [class android.content.Context]

添加

-keep class android.support.v7.widget.SearchView { *; }

到我的proguard-rules文件,一切都按预期工作。