如何用d8.bat从Jar生成多Dex文件?解决方法数超限问题
用d8.bat从Jar生成多Dex文件的解决方法
d8没有直接对应multiDexEnabled=true的命令行参数,但可以通过指定主dex类列表的方式拆分生成多Dex文件,具体步骤如下:
1. 生成主dex类列表文件
你需要先确定哪些类必须放在主dex中(比如应用启动类、MultiDex相关类),可以手动编写,也可以用d8自动生成默认列表:
自动生成主dex列表
执行以下命令,d8会自动分析启动时依赖的类,输出到指定的列表文件:
d8 class.jar --print-main-dex-list=maindexlist.txt --min-api=21
--print-main-dex-list:指定生成主dex类列表的输出文件--min-api:指定最低兼容API级别,多dex功能需要该参数配合
手动编写主dex列表
如果需要自定义主dex内容,创建maindexlist.txt,每行写一个类的全路径(注意用/分隔包名,后缀.class),例如:
com/yourpackage/YourApplication.class androidx/multidex/MultiDex.class
2. 生成多Dex文件
用--main-dex-list参数指定刚才的列表文件,执行d8命令生成多Dex:
d8 class.jar --main-dex-list=maindexlist.txt --min-api=21 --output=output_dir
--main-dex-list:指定主dex必须包含的类列表,d8会将这些类放入classes.dex,剩余类自动拆分到classes2.dex、classes3.dex等文件中--output:指定输出目录,所有生成的Dex文件会放在该目录下
注意事项
- 如果需要兼容API 21以下的设备,必须确保
MultiDex相关类在主dex中,否则应用启动时会崩溃 --min-api参数不可省略,不同API级别下d8的多dex生成逻辑会有差异
内容的提问来源于stack exchange,提问作者yiminglv
相关产品推荐
相关产品推荐

