MixPanelAPI NoClassDefFoundError

Я борюсь с java.lang.NoClassDefFoundError при вызове com.mixpanel.android.mpmetrics.MixpanelAPI

Это потому, что я запускаю proguard (мне приходится). Однако я добавил исключение proguard:

-keep public class com.mixpanel.android.mpmetrics.**

or

-keep public class com.mixpanel.android.mpmetrics.MixpanelAPI { *; }

но это не помогает.

Стоит отметить, что я получаю MixpanelAPI lib таким образом:

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

Так что это aar, а не стандартный jar.

Как запустить его с помощью proguard, но не потерять код Mixpanel?


person Adam Styrc    schedule 04.09.2014    source источник
comment
Столкнувшись с той же проблемой, вы нашли способ решить эту проблему?   -  person user1408682    schedule 12.12.2014


Ответы (3)


Начиная с версии 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>;
}

Вы можете найти эти инструкции в файле README библиотеки Mixpanel по адресу https://github.com/mixpanel/mixpanel-android/blob/master/README.md в журнале изменений для версии 4.5.

person user128536    schedule 06.02.2015
comment
Предупреждение: com.mixpanel.android.mpmetrics.Tweaks: не удается найти ссылочный класс com.mixpanel.android.mpmetrics.Tweaks$TweakType, это предупреждение, которое я получаю при включении proguard, любая помощь приветствуется - person Awadesh; 21.10.2015

Это может быть решением:

-keep class com.mixpanel.android.mpmetrics.** { *; }
-keep class com.mixpanel.android.surveys.** { *; }
-keep class com.mixpanel.android.util.** { *; }
person Adam Styrc    schedule 13.12.2014

В моем случае проблема была в некорректной реализации MultiDex, я решаю ее после добавления в основной класс MultiDex.install(this);

public class MyMainClass extends Application {
    @Override
    public void onCreate() {
        MultiDex.install(this);
...
}
person Oleg Ushakov    schedule 13.08.2017