Fix "Too many classes in –main-dex-list"
- Gradle Plugin Must >=2.2.0-beta2
- Avoid the Main Application Class Dep too much Class
- Not Support Instant Run Function
- JDK >= 1.8
Add Class Path
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
dependencies {
compile 'com.github.eyyoung:DexFixPlugin:1.0.0'
}
Use Custom Rules DSL
dexFix {
mainDexRules './mainDexClasses.rules'
}
Use Proguard Rules to Keep class in main dex and Prevent Class not found Exception
-keep public class * extends android.app.Instrumentation {
<init>();
}
-keep public class * extends android.app.Application {
<init>();
void attachBaseContext(android.content.Context);
}
Keep Extend and Annotation Class
-keep public class * extends com.nd.smartcan.commons.util.language.AppFactoryJSBridge {
*;
}
-keep class com.nd.smartcan.commons.util.language.AppFactoryJSBridge.**{*;}
# We need to keep all annotation classes because proguard does not trace annotation attribute
# it just filter the annotation attributes according to annotation classes it already kept.
-keep public class * extends java.lang.annotation.Annotation {
*;
}