termux-ubuntu-20.04安装的android-sdk-build-tools版本为27.0.1,jdk版本为11,dx工具却不支持jdk11编译出来的.class,只能用jdk8编译出.class,再用dx编译出dex。jdk工具高版本向低版本兼容,低版本不向高版本兼容,怀疑android-sdk-build-tools为低版本,依赖的jdk11却是高版本。
-
安装openjdk-8-jdk
sudo apt install openjdk-8-jdk
-
安装基于jdk11的android-sdk
sudo apt-get install android-sdk
-
android-tools/bin目录加入环境变量
export PATH=$PATH:/usr/lib/android-sdk/build-tools/27.0.1
-
建立jdk8 javac软链接
ln -s /usr/lib/jvm/java-8-openjdk-arm64/bin/javac /usr/local/bin/java8c
-
Hello.java生成Hello.class
java8c Hello.java
-
Hello.class生成Hello.dex
dx --dex --output=Hello.dex Hello.class
-
app_process运行dex代码[注意.java和.class文件名和类名一致, dex文件名随意]
app_process -Djava.class.path=main.dex /system/bin Main
-
dex翻译成smali
java -jar [baksmali-2.5.2.jar](https://bitbucket.org/JesusFreke/smali/downloads/) d hello.dex
-
dx编译多个class
dx --dex --output=out --multi-dex Test/BaseSmali.class Main.class