Step 1. Add the JitPack repository to your build file
Add it in your root settings.gradle at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
Add it in your settings.gradle.kts at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}
Add to pom.xml
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
Add it in your build.sbt at the end of resolvers:
resolvers += "jitpack" at "https://jitpack.io"
Add it in your project.clj at the end of repositories:
:repositories [["jitpack" "https://jitpack.io"]]
Step 2. Add the dependency
dependencies {
implementation 'com.github.eyyoung:DexFixPlugin:1.0.1'
}
dependencies {
implementation("com.github.eyyoung:DexFixPlugin:1.0.1")
}
<dependency>
<groupId>com.github.eyyoung</groupId>
<artifactId>DexFixPlugin</artifactId>
<version>1.0.1</version>
</dependency>
libraryDependencies += "com.github.eyyoung" % "DexFixPlugin" % "1.0.1"
:dependencies [[com.github.eyyoung/DexFixPlugin "1.0.1"]]
Fix "Too many classes in –main-dex-list"
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 {
*;
}