jar转成dex文件
dx
可以利用android studio中的dx工具。
可以看到android的tool安装位置:
在此路径下的如下目录有dx.bat,这个正是我们需要使用的工具。
D:\sdk\build-tools\30.0.3
将dx.bat添加到环境变量
基本指令
> dx --dex --output 输出路径 待转化的jar包
C:\Users\liyd\Desktop\快手> dx --dex --output dex1.dex .\com.gsc.pub-r-classes.jar
此时如果jar包的方法数过多,可能会报如下错误。
trouble writing output: Too many field references to fit in one dex file: 98482; max is 65536.
You may try using multi-dex. If multi-dex is enabled then the list of classes for the main dex list is too large.
方法数超过65535时的处理,分包
在现有dx编译指令上添加
–multi-dex
dx --dex --multi-dex --output ./dex .\com.gsc.pub-r-classes.jar
dx --dex --multi-dex --output dex编译后的路径 待编译的jar包或者文件夹
dx --dex --multi-dex --main-dex-list=multidex-keep.txt --minimal-main-dex --output ../release ../release
限制每个dex包的最大方法数
在分包的基础上添加
--set-max-idx-number=48000
设置每个dex包的最大方法数为48000
dx --dex --multi-dex --set-max-idx-number=48000 --output . .\com.gsc.pub-r-classes.jar
指定SDK最小版本
dx --dex --multi-dex --set-max-idx-number=48000 --min-sdk-version >= 26 --output .\dex .\jar\*.jar
最小版本问题
dx编译时,可能存在的问题。
Uncaught translation error: com.android.dx.cf.code.SimEx