在调用 com.mixpanel.android.mpmetrics.MixpanelAPI
时,我正在努力解决 java.lang.NoClassDefFoundError这是因为我运行 proguard (我必须)。但是我添加了 proguard 排除:
-keep public class com.mixpanel.android.mpmetrics.**
或
-keep public class com.mixpanel.android.mpmetrics.MixpanelAPI { *; }
但它没有帮助。
值得一提的是,我以这种方式得到 MixpanelAPI lib :
compile "com.mixpanel.android:mixpanel-android:4.0.0@aar"
所以 aar ,而不是标准 jar 。
如何使用proguard运行它但不丢失 Mixpanel 代码?
答案 0 :(得分:4)
从版本4.5开始,Mixpanel建议使用以下proguard设置
-keep class com.mixpanel.android.abtesting.** { *; }
-keep class com.mixpanel.android.mpmetrics.** { *; }
-keep class com.mixpanel.android.surveys.** { *; }
-keep class com.mixpanel.android.util.** { *; }
-keep class com.mixpanel.android.java_websocket.** { *; }
-keepattributes InnerClasses
-keep class **.R
-keep class **.R$* {
<fields>;
}
您可以在Mixpanel库的自述文件中找到这些说明,位于版本4.5的更改日志中的https://github.com/mixpanel/mixpanel-android/blob/master/README.md
答案 1 :(得分:0)
这可能是解决方案:
-keep class com.mixpanel.android.mpmetrics.** { *; }
-keep class com.mixpanel.android.surveys.** { *; }
-keep class com.mixpanel.android.util.** { *; }
答案 2 :(得分:0)
在我的情况下,问题是不正确的MultiDex实现,我在添加到主类MultiDex.install(this)后解决了它;
public class MyMainClass extends Application {
@Override
public void onCreate() {
MultiDex.install(this);
...
}