2014-09-04 56 views
2

我與java.lang.NoClassDefFoundError調用com.mixpanel.android.mpmetrics.MixpanelAPIMixPanelAPI的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:[email protected]" 

所以這是AAR,而不是標準罐子

如何使用proguard運行但不丟失Mixpanel code?

+0

遇到同樣的問題,您是否找到解決此問題的方法? – user1408682 2014-12-12 15:57:35

回答

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的更改日誌中

+0

警告:com.mixpanel.android.mpmetrics.Tweaks:找不到引用的類com.mixpanel.android.mpmetrics.Tweaks $ TweakType,這是我正在啓用proguard的警告,任何幫助表示讚賞 – Awadesh 2015-10-21 07:19:31

0

這可能是解決方案:

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

在我的情況下,問題是不正確的MultiDex實現,我解決它後,添加到主類Mul tiDex.install(本);

public class MyMainClass extends Application { 
    @Override 
    public void onCreate() { 
     MultiDex.install(this); 
... 
}