文章目录
- 前言
- 一、IntelliJ IDEA 中创建 Java / Kotlin 工程
- 二、准备 Java 和 Kotlin 代码
- 三、编译在 PC 上可执行的 Java / Kotlin JAR 包
- 四、使用 dx 工具打包 DEX 字节码文件
- 五、打包在 Android 中执行的 dex 文件
- 六、Android 中使用 dalvikvm 命令执行 dex 文件
前言
参考 【IntelliJ IDEA】导出可执行 JAR 包 博客 , 导出可执行 JAR 包 ;
一、IntelliJ IDEA 中创建 Java / Kotlin 工程
在 IntelliJ IDEA 中创建 Java / Kotlin 工程 ,
注意选择 Kotlin/JVM 附加依赖库和框架 ,
设置工程路径和工程名 ;
二、准备 Java 和 Kotlin 代码
准备 Java 和 Kotlin 代码 ;
Java 代码 :
public class Main {
public static void main(String[] args) {
System.out.println("Hello Android !");
}
}
Kotlin 代码 :
class Student {
var name: String = "Tom"
var age: Int = 18
}
fun main(args: Array<String>) {
var student: Student = Student();
print(student.name + " , " + student.age)
}
三、编译在 PC 上可执行的 Java / Kotlin JAR 包
右键点击 工程 根目录 , 在菜单中选择 " Open Module Settings " ,
在 " Project Structure " 对话框中的 " Artifacts " 选项卡 , 点击 " + " 按钮 , 选择 " Add " 下拉菜单中的 " JAR " 选项的 " From modules with dependencies " 子项目 ,
弹出 " Create JAR from Modules " 对话框 , 点击 " Main Class " 右侧的文件夹按钮 ,
Java 可执行程序的 META-INF/MANIFEST.MF 文件保存在 D:\002_Project\003_Java_Work\workspace\AndroidShell\java-meta-inf
路径中 ;
可执行文件元数据 :
同样按照上述流程 , 在打包 Kotlin 程序的可执行文件 , Kotlin 可执行程序的 META-INF/MANIFEST.MF 文件保存在 D:\002_Project\003_Java_Work\workspace\AndroidShell\kotlin-meta-inf
路径中 ;
可执行文件元数据 :
选择 菜单栏 / Build / Build Artifacts… 选项 ,
选择编译这两个 Artifact ;
编译完成后的可执行 JAR 文件 , 就在 D:\002_Project\003_Java_Work\workspace\AndroidShell\out\artifacts
目录下 , 其中
D:\002_Project\003_Java_Work\workspace\AndroidShell\out\artifacts\AndroidShell_jar\AndroidShell.jar
是 Kotlin 代码的可执行文件 ;D:\002_Project\003_Java_Work\workspace\AndroidShell\out\artifacts\AndroidShell_jar2\AndroidShell.jar
是 Java 代码的可执行文件 ;
四、使用 dx 工具打包 DEX 字节码文件
参考 【Android 安全】DEX 加密 ( DEX 加密使用到的相关工具 | dx 工具 | zipalign 对齐工具 | apksigner 签名工具 ) 博客 ;
dx 工具 :
作用 : dx 工具的作用是将 class 或 jar 文件 生成 DEX 文件 ;
位置 : 该工具在 sdk 下的 build-tools 目录下 ,
使用命令 : dx –dex –output out.dex in.jar
dx --dex --output out.dex in.jar
–output out.dex 表示要输出的 DEX 文件 ;
in.jar 表示输入文件 ;
在我的电脑上 dx 文件路径是 D:\001_Develop\001_SDK\Sdk\build-tools\30.0.2\dx.bat
;
将 dx 所在路径配置到环境变量中 ;
五、打包在 Android 中执行的 dex 文件
在 PC 中的可执行文件 , 打包成 dex 文件无法在 Android 中执行 ;
在 Android 中使用 dalvikvm
执行的 dex 文件 , 只能是使用 class 字节码文件打包 , 或者是没有 main 信息的可执行文件 , 这里选择使用 class 字节码文件打包 ;
注意 : Kotlin 代码编译的字节码文件 , 不能运行 ;
将 Java 可执行程序 , 打包到 DEX 文件中 ;
dx --dex --output java.dex Main.class
六、Android 中使用 dalvikvm 命令执行 dex 文件
前提 : 手机要 root , 否则无法执行任何操作 ;
将打包好的 java.dex 文件拷贝到 Android 中的 /data/system/debug
目录中 , 进入 /data/system/debug
目录 , 执行
dalvikvm -cp java.dex Main
命令 , 即可运行打包好的 java.dex 文件的 Main 中的 main 函数 ;