【开发环境】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 函數 ;
總結
以上是生活随笔為你收集整理的【开发环境】Android 命令行中执行 Java 程序 ( IntelliJ IDEA 中创建 Java / Kotlin 工程 | dx 打包 DEX 字节码文件 | dalvikvm 命令 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】Android
- 下一篇: 【错误记录】记录 Android 命令行