What is DexKnifePlugin?
DexKnife is a simple android gradle plugin to use the patterns of package to smart split the specified classes to multi dex. Also supports android gradle plugin 2.2.0 multidex. Solve android studio enable the native multidex feature, but there will be too many classes in main dex. (See Features 7) It will auto enable when disabled instant-run or in packaging release.(minsdk < 21)**
1.6.1: Compatible with android gradle plugin 2.3.0, auto disable when build with ART-Runtime (See Features 8). 1.6.0: Modify: When only -keep is configured, only keep the specified classes. 1.5.9: Compatible with some ancient version of gradle and android gradle plugin. 1.5.8: Compatible with gradle 3.2, fixed use of only support-split and support-keep resulting in an extra large number of classes. 1.5.7: fixed support-split and support-keep are not work. (support-split/support-keepbug) 1.5.6: Experimentally compatible with java 1.7, fix nothing is selected when only -keep. (java 1.7,keep) 1.5.5: support individual filter for suggest maindexlist. (maindexlist) 1.5.5.alpha: Experimentally compatible with android gradle plugin on 2.2.0. ( 2.2.0 plugin) 1.5.4: auto disabled when instant run mode.(instant run DexKnife) 1.5.3: add some track logs and skip DexKnife when jarMerging is null.(jarMergingnull) 1.5.2: fixed the include and exclude path, and supports filtering single class.(includeexclude, ) 1.5.1.exp: Experimentally compatible with android gradle plugin on 2.1.0 2.1.0 plugin 1.5.1: fixed the proguard mode
- DexKnife just converts the wildcards of class path to maindexlist.txt, does not participate in other compilation process. It is not automatic tools, you need to have a understanding of the maindexlist features.
- If the class can not be found (ie class no def / found) at runtime, enable DexKnife's log function, debug the config of dexKnife and check the config ProGuard. Verify the generated maindexlist.txt match your config. Do not split the classes in the Application class into second dex. (Even if you manually configure the maindexlist will be such a problem.)
- DexKnife can only explicitly specify the classes of main dex, can not specify the classes of after the second dex (limitation of dex's param maindexlist). If you need to completely configure the main dex manually, use:
- DexKnife does not have dependency detection and requires you to configure it manually because DexKnife does not know your project requirements.
- DexKnife uses the original classpath as the configuration, not the obfuscated classpath.
- the count of ID that generated by -keep can not overflow 65535, otherwise there will be error of too many class.
- If you use the android gradle plugin's native multidex, but the declaration in the manifest is too much, resulting in the number of methods and variables are still overflow, or can not be packaged. You can simply use -suggest-split to move some of the classes in the suggest list out of the main dex.
- minsdk < 21. If minsdk >= 21, the android gradle plugin will build with ART-Runtime, MainDexList isn't necessary, DexKnife is auto disable. In debug mode with Android Gradle plugin >= 2.3.0, minsdk is associated with min(Target running device, TargetSdk). Make sure your MinSdkVersion < 21, DexKnife will auto enable in release mode if conditions are compatible.
Course Category: Mobile Development
Would you like to learn DexKnifePlugin?
Simply, click the "Book" button of DexKnifePlugin and proceed to the payment method. Enter your desired schedule of training. You will receive an email confirmation for DexKnifePlugin and a representative / trainer will get in touch with you.