MixPanelAPI NoClassDefFoundError

3

在调用 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库

        compile "com.mixpanel.android:mixpanel-android:4.0.0@aar"

所以它是aar,而不是标准的jar

如何在使用proguard时运行它,但不丢失Mixpanel代码?


你遇到了同样的问题,你找到解决这个问题的方法了吗? - user1408682
3个回答

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库的README中找到这些说明,网址为https://github.com/mixpanel/mixpanel-android/blob/master/README.md,版本4.5的变更日志中也有相关信息。


警告:com.mixpanel.android.mpmetrics.Tweaks:找不到引用类com.mixpanel.android.mpmetrics.Tweaks$TweakType,启用proguard时会出现此警告,请帮忙解决,谢谢。 - Awadesh

0
在我的情况下,问题出在错误的MultiDex实现上,我通过将MultiDex.install(this)添加到主类中解决了这个问题。
public class MyMainClass extends Application {
    @Override
    public void onCreate() {
        MultiDex.install(this);
...
}

0

这可能是解决方案:

-keep class com.mixpanel.android.mpmetrics.** { *; }
-keep class com.mixpanel.android.surveys.** { *; }
-keep class com.mixpanel.android.util.** { *; }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接