今天想把android源碼/vendor/letv/frameworks/base/java下的源碼編譯成 framework-letv.jar供樂樂語音客戶端使用,編譯完后,發現jar包文件雖然生成了,但包里面並沒有相關的源碼class文件,無法正常使用。經過請教加研究發現,Android.mk文件需要添加選項如下:
--------------------------------start------------------------------------
54 LOCAL_JACK_ENABLED := disabled # important!
55 #include $(BUILD_JAVA_LIBRARY)
56 include $(BUILD_STATIC_JAVA_LIBRARY) #編譯jar包
---------------------------------end---------------------------------------
最終生成了javalib.jar,改名為 framework-letv.jar即可。注意:如果沒有指定LACAL_JACK_ENABLED選項,則默認是enabled,將會生成classes.jack文件,不會產生classes.jar包!
另外補充點:在某一應用程序中有時候需要引用第三方jar包,那么怎么才能在編譯app的時候把該jar包引入進入呢?
在該app下的Android.mk文件中添加如下語句: --------------------------------start------------------------------------ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := user eng ######################################## LOCAL_STATIC_JAVA_LIBRARIES := lib3party //定義引用名 ######################################## .... include $(BUILD_PACKAGE) ############################################################### include $(CLEAR_VARS) LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := lib3part:libs/3part.jar //引用名:jar包名 include $(BUILD_MULTI_PREBUILT) ################################################################ ---------------------------------end--------------------------------------- 添加jar包,關鍵在 LOCAL_STATIC_JAVA_LIBRARIES := libarity 和 LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libarity:lily.jar 這兩句。
libarity為jar包的別名,可以隨便取,只要與下面相對應就行。但是后面冒號后面的那個jar包名字就必須寫你需要引入的jar包名字。jar包應該放在工程的根目錄下,也就是與你要編譯的app的src,res,Android.mk文件同級的目錄。
