签名APK在运行时崩溃,而未签名APK不会(Proguard)

时间:2017-12-02 08:34:40

标签: android binding proguard

我已经面对这个问题好几个星期了,我仍然无法让它发挥作用。 首先,我正在为我的项目使用数据绑定,并且它运行顺畅,没有使用Android Studio的ADB进行任何运行时崩溃。即使我生成一个签名的“调试”APK进行测试,它也可以顺利运行,直到我在调试中将minifyEnabled设置为“true”并导出APK(调试)并崩溃。 所以,我很确定这与Proguard优化我的类/文件有关。

这是我的app模块:

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

所以,总结一下。当我将调试的“minifyEnabled”更改为“false”并导出APK并在我的手机上测试时,它运行正常。 但是当我将其更改为“true”时,它会在运行时崩溃。

我已经在我的proguard文件中添加了'-keep class'和'-dontwarn'。 这是:

-dontwarn android.databinding.**
-keep class android.databinding.** { *; }
-keep class android.databinding.annotationprocessor.** { *; }

-dontwarn android.viewmodel.**
-keep class android.viewmodel.** { *; }

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

-dontwarn android.support.design.**
-keep class android.support.design.** { *; }
-keep interface android.support.design.** { *; }
-keep public class android.support.design.R$* { *; }

-keep class java.lang.** { *; }

我的项目运行Crashlytics,我看到了崩溃的错误,它指向数据绑定类。但我已经告诉proguard如上所述继续上课。

我不确定我在这里缺少什么,这是我从Crashlytics获得的错误:

com.myproject.android.databinding.ItemProductDataBinding.executeBindings (Unknown Source)

我如何知道Proguard正在帮助优化哪个课程以及哪个课程没有?希望你们有答案,并为我节省几个星期的头痛。谢谢你的阅读。

0 个答案:

没有答案
相关问题