程序员社区

【开发环境】Android 命令行中执行 Java 程序 ( IntelliJ IDEA 中创建 Java / Kotlin 工程 | dx 打包 DEX 字节码文件 | dalvikvm 命令 )

文章目录

  • 前言
  • 一、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 函数 ;

在这里插入图片描述

赞(0) 打赏
未经允许不得转载:IDEA激活码 » 【开发环境】Android 命令行中执行 Java 程序 ( IntelliJ IDEA 中创建 Java / Kotlin 工程 | dx 打包 DEX 字节码文件 | dalvikvm 命令 )

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区