命令行指定類打包成dex文件
- 編寫java代碼
- 編譯成class
- 打包成jar
- dx命令生成對應(yīng)的dex
編寫java代碼(D:\EnjoyFix\demo\src\main\java\com\demo\Test.java)
package com.demo;
import android.util.Log;
/**
* Created by xmq on 2019/4/24.
*/
public class Test {
private static String TAG = "Test";
public void test(){
Log.d(TAG, "測試");
}
}
編譯成class
-
使用命令編譯javac
javac D:\EnjoyFix\demo\src\main\java\com\demo\Test.java
javac執(zhí)行報(bào)錯.png-
編碼問題:
Linux下為UTF-8編碼,javac編譯gbk編碼的java文件時翠储,容易出現(xiàn)“錯誤:編碼UTF-8的不可映射字符”
Windows下為GBK編碼绘雁,javac編譯utf-8編碼的java文件時,容易出現(xiàn)“錯誤:編碼GBK的不可映射字符”
windows下編碼問題解決方式:
javac -encoding utf-8 D:\EnjoyFix\demo\src\main\java\com\demo\Test.java
-
程序包不存在問題
android.util不存在com.demo包名的路徑下
-
-
使用Android Studio Build生成援所,build完成后在如下目錄找到Test.class文件
demo目錄結(jié)構(gòu).png
打包成jar
jar cvf D:\test.jar D:\com\demo\Test.class
生成dex
生成了jar后庐舟,我們就可以采用命令來生成對應(yīng)的dex了,我們采用dx命令來生成住拭,這里命令主要在Android sdk下bulid-tools中的dx工具挪略。
dx --dex --output D:\test.dex D:\test.jar
出現(xiàn)這個問題是打包生成jar的時候,直接復(fù)制了test.class文件到D盤滔岳,路徑是test.class與Test.java里面的packagename不匹配杠娱,只需要把com包整個復(fù)制出來就ok了。然后使用jar cvf D:\test.jar D:\com\demo\Test.class
命令就可以了澈蟆。(下面也有另一種命令墨辛,完成.classs to .dex)
總結(jié)
這里只是演示如何分步打包得到dex文件,其實(shí)使用gradle命令更加簡單方便趴俘。
tip:工程目錄存放在命名中有空格的路徑下面(如:Program Files),Program Files需要使用“ ”包裹睹簇,否則在讀取class文件或者寫入dex到該目錄會失敗奏赘。
另外有命令直接由.class 生成 .dex文件,其中dx.jar
在D:\Program Files"\Android\Sdk\build-tools\28.0.3\lib
下面太惠,需要使用絕對路徑
D:\EnjoyFix\demo\build\intermediates\classes\debug>java -jar "D:\Program Files"\Android\Sdk\build-tools\28.0.3\lib\dx.jar --dex --output=test.dex com\demo\Test.class