|
1 | 1 | # ComPactMultiDex
|
2 |
| -针对MultiDex的补充优化、支持多线程加载多dex包、支持多进程dexopt、支持解压抽取dex时可以不进行zip压缩 |
| 2 | +针对MultiDex的补充优化、支持多线程加载多dex包、支持多进程dexopt、支持解压抽取dex时可以不进行zip压缩等优化选项,针对4.4及以下在首次启动的时候要进行除主dex的dex提取、dex提取压缩,crc以及dexopt等一系列耗时操作的优化补充库。 |
| 3 | + |
| 4 | +### 接入步骤 |
| 5 | + |
| 6 | +1. build.gradle配置 |
| 7 | +``` |
| 8 | +
|
| 9 | +``` |
| 10 | + |
| 11 | +2. 查看路径下buid/intermediates/legacy_multidex_main_dex_list/release/mainDexList.txt, 若没有ComPactMultiDex相关的类,则加入下面的类,主要是为了确保主dex有包含到 |
| 12 | +``` |
| 13 | +com/gibbon/compactmultidex/ConcurrentMultiDexExtractor$ExtractCallable.class |
| 14 | +com/gibbon/compactmultidex/ConcurrentMultiDexExtractor$ZipEntryGroup.class |
| 15 | +com/gibbon/compactmultidex/ConcurrentMultiDexExtractor$ZipEntryWrapper.class |
| 16 | +com/gibbon/compactmultidex/ConcurrentMultiDexExtractor.class |
| 17 | +com/gibbon/compactmultidex/DexElementsExtractor$1.class |
| 18 | +com/gibbon/compactmultidex/DexElementsExtractor$ConcurrentDexElementsLoader.class |
| 19 | +com/gibbon/compactmultidex/DexElementsExtractor$DexElementsLoader.class |
| 20 | +com/gibbon/compactmultidex/DexElementsExtractor$DexOrZipFile.class |
| 21 | +com/gibbon/compactmultidex/DexElementsExtractor$DexOrZipFileGroup.class |
| 22 | +com/gibbon/compactmultidex/DexElementsExtractor$IDexElementsLoader.class |
| 23 | +com/gibbon/compactmultidex/DexElementsExtractor$LoadAndCrcVerifyCallable.class |
| 24 | +com/gibbon/compactmultidex/DexElementsExtractor$SerialDexElementsLoader.class |
| 25 | +com/gibbon/compactmultidex/DexElementsExtractor.class |
| 26 | +com/gibbon/compactmultidex/DexElementsMaker$DexElementsCallable.class |
| 27 | +com/gibbon/compactmultidex/DexElementsMaker.class |
| 28 | +com/gibbon/compactmultidex/HookDexElementsMethodInvokerV14.class |
| 29 | +com/gibbon/compactmultidex/HookDexElementsMethodInvokerV19.class |
| 30 | +com/gibbon/compactmultidex/IDexElementsMaker.class |
| 31 | +com/gibbon/compactmultidex/IHookDexElementsMethodInvoker.class |
| 32 | +com/gibbon/compactmultidex/IHookMultiDexExtractor$ExtractedDex.class |
| 33 | +com/gibbon/compactmultidex/IHookMultiDexExtractor.class |
| 34 | +com/gibbon/compactmultidex/MultiDex$V14$ElementConstructor.class |
| 35 | +com/gibbon/compactmultidex/MultiDex$V14$ICSElementConstructor.class |
| 36 | +com/gibbon/compactmultidex/MultiDex$V14$JBMR11ElementConstructor.class |
| 37 | +com/gibbon/compactmultidex/MultiDex$V14$JBMR2ElementConstructor.class |
| 38 | +com/gibbon/compactmultidex/MultiDex$V14.class |
| 39 | +com/gibbon/compactmultidex/MultiDex$V19.class |
| 40 | +com/gibbon/compactmultidex/MultiDex$V4.class |
| 41 | +com/gibbon/compactmultidex/MultiDex.class |
| 42 | +com/gibbon/compactmultidex/MultiDexApplication.class |
| 43 | +com/gibbon/compactmultidex/MultiDexExtractor.class |
| 44 | +com/gibbon/compactmultidex/SerialMultiDexExtractor.class |
| 45 | +com/gibbon/compactmultidex/ZipUtil$CentralDirectory.class |
| 46 | +com/gibbon/compactmultidex/ZipUtil.class |
| 47 | +``` |
| 48 | + |
| 49 | +3. 添加application,或者直接使用MultiDexApplication |
| 50 | + |
| 51 | +``` |
| 52 | +public class DemoApplication extends Application { |
| 53 | + @Override |
| 54 | + protected void attachBaseContext(Context base) { |
| 55 | + super.attachBaseContext(base); |
| 56 | + // install方法可以加入需要的优化选项 |
| 57 | + MultiDex.install(this,?); |
| 58 | + } |
| 59 | +} |
| 60 | +``` |
| 61 | +或AndroidManifest.xml文件中修改application如下 |
| 62 | +``` |
| 63 | +<application |
| 64 | + android:name=".MultiDexApplication" |
| 65 | + android:allowBackup="true" |
| 66 | + android:icon="@mipmap/ic_launcher" |
| 67 | + android:label="@string/app_name" |
| 68 | + android:roundIcon="@mipmap/ic_launcher_round" |
| 69 | + android:supportsRtl="true" |
| 70 | + android:theme="@style/AppTheme"> |
| 71 | + |
| 72 | + </application> |
| 73 | +``` |
0 commit comments