2

I built a release APK of my App. It's perfect on lot of devices; but on this device (Google Nexus 5 - 4.4.4 - API 19) there is a crash:

Fatal Exception: java.lang.NoClassDefFoundError: org.joda.time.format.ISODateTimeFormat$Constants
       at org.joda.time.format.ISODateTimeFormat.dateTimeNoMillis(ISODateTimeFormat.java:789)
       at com.azeoo.android.network.converter.DateTimeConverter.deserializeDateTime(DateTimeConverter.java:84)
       at com.azeoo.android.network.converter.DateTimeConverter.deserialize(DateTimeConverter.java:70)
       at com.azeoo.android.network.converter.DateTimeConverter.deserialize(DateTimeConverter.java:24)
...

There is this library correctly added on Gradle file:

compile 'joda-time:joda-time:2.9.2'

My Proguard file:

# Specific for https://github.com/PhilJay/MPAndroidChart
-keep class com.github.mikephil.charting.** { *; }

# Specific for https://github.com/bumptech/glide
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
    **[] $VALUES;
    public *;
}

# Esperandro
# Specific for http://dkunzler.github.io/esperandro/
-keepnames class de.devland.** { *; }
-keep class **$$Impl { public *;}

# keep the annotated things annotated
-keepattributes *Annotation*, EnclosingMethod, Signature, InnerClasses

# for dagger also preserve the interfaces
# assuming they reside in the sub-package 'preferences_main' and all end with 'Prefs'
#-keep class preferences_main.**Prefs { public *;}

# for gson see their documentation at
# https://code.google.com/p/google-gson/source/browse/trunk/examples/android-proguard-example/proguard.cfg

# Butterknife
# http://jakewharton.github.io/butterknife/
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewInjector { *; }

-keepclasseswithmembernames class * {
    @butterknife.* <fields>;
}

-keepclasseswithmembernames class * {
    @butterknife.* <methods>;
}

# Remove Android logging calls
# @see http://stackoverflow.com/questions/15571520/how-to-configure-proguard-to-only-remove-android-logging-calls
# This will not remove error log
-assumenosideeffects class com.azeoo.android.util.LogUtils {
    public static void LOGD(...);
    public static void LOGV(...);
    public static void LOGI(...);
    public static void LOGW(...);
    public static void LOGE(...);
}

Could you help me guys?

anthony
  • 7,653
  • 8
  • 49
  • 101

1 Answers1

3

I think it's related to MultiDex as you say it works on other devices but is struggling on KitKat. Add the following to your Application class:

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}
Jahnold
  • 7,623
  • 2
  • 37
  • 31