Android源碼中編譯出指定jar包


今天想把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文件同級的目錄。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM