在我的gradle文件中启用proguard之后:
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
我收到以下异常:
java.lang.RuntimeException: Unable to get provider com.crashlytics.android.CrashlyticsInitProvider: java.lang.ClassNotFoundException: com.crashlytics.android.CrashlyticsInitProvider
有趣的是,它可以在具有API26的Android上运行,但不能在API16上运行。 如果我打开生成的 mapping.txt 文件,我会看到以下行:
com.crashlytics.android.CrashlyticsInitProvider -> com.crashlytics.android.CrashlyticsInitProvider:
表明未对crashlytics进行混淆,但是BaseDexClassLoader仍然找不到它。
我的proguard-rules.pro看起来像这样:
-optimizationpasses 5
-repackageclasses
-allowaccessmodification
-dontpreverify
-dontskipnonpubliclibraryclasses
-repackageclasses ''
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
-keepattributes SourceFile, LineNumberTable, *Annotation*
-keep public class * extends java.lang.Exception
我尝试启用multidex并解决了问题,但是当我的项目远未达到65k方法限制时,我不想拥有multidex。如果我禁用了proguard,则应用程序也可以正常运行。
Proguard是否负责增加方法数量?如何在不依赖multidex的情况下解决此问题?