在packages/app/service下建一個文件夾build_jar,在jar_test下建立test文件夾,其次按照以下步驟:
1.在目錄test下編寫Test.java文件。
示例內容如下:
package test;
public class Test{
public static void main(String args[]){
System.out.println("This is text");
}
}
2.在test的同級目錄下建立Android.mk文件。
示例內容如下:
LOCAL_PATH :=$(call my_dir)//指的就是當前的相對路徑
include $(CLEAR_VARS) //清除舊變量
LOCAL_MODULE_TAGS :=optional //如果沒有這句話全編譯user版本時,不會編譯這個模塊
LOCAL_SRC_FILES :=test/Test.java
LOCAL_MODULE :=Test //設置新變量名字
include $(BUILD_STATIC_JAVA_LIBRARY) //調用編譯函數,
3.在build_jar目錄下執行 mm
注:執行mm命令,要先執行sourse build/envsetup.sh
該語句是編譯源碼時候用來配置環境的意思
4.BUILD_JAVA_LIBRARY和BUILD_STATIC_JAVA_LIBRARY區別:
簡單的說,jar包其實就是一個zip格式的壓縮包,那麼 :
1)BUILD_JAVA_LIBRARY編譯出來的jar包,裏面是DEX格式的文件。如果用戶想用這個jar包放到Eclipse來做Android App的開發,
Eclipse是不認識這種格式的文件的,通常會報錯:Conversion to Dalvik format faild with error 1:
2)而BUILD_STATIC_JAVA_LIBRARY編譯出來的jar包,裏面每個java文件對應的class文件都單獨存在,
顧名思義,每個java文件裏面用到的變量都被靜態編譯到了class內部,這種格式的jar包可以在Eclipse裏面導入並正常使用,但是可能存在一定的兼容性隱患
5.另外執行framework編譯後路徑:
command:
./make.sh framework
path:
out\target\common\obj\JAVA_LIBRARIES\framework_intermediates