各位大神好,遇到的問題如標題。
我用Eclipse寫了一個android工程,但是這個工程需要到SDK的隱藏類,所有想在源碼下編譯,但是每次mm之後,都會出現錯誤,提示是找不到對應的類。
我需要加入的4個jar包如下:
org.apache.commons.codec-1.7.0.jar
org.knopflerfish.bundle.kxml-LIB-2.3.0.jar
osgi.cmpn-4.3.0.jar
osgi.core-4.3.0.jar
望各位大神支招。小弟線上等...
經過了昨晚的研究,我最後還是找到瞭解決方法,因為之前自己沒有寫過Android.mk檔案,所以不知道怎麼載入jar包是很正常的。
在源碼下編譯android工程使用到第三方jar包需要在Android.mk檔案中添加java靜態庫的目錄。主要用到了Android.mk檔案中的兩個變數。
LOCAL_STATIC_JAVA_LIBRARIES 和 LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES,就是需要載入靜態庫。這裡我粘貼我的Android.mk檔案
Android.mk
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-java-files-under, src)# Added for source code compile start LOCAL_STATIC_JAVA_LIBRARIES := jarlib1 jarlib2 jarlib3 jarlib4LOCAL_PACKAGE_NAME := yourprojectname# Added for source code compile endLOCAL_CERTIFICATE := platforminclude $(BUILD_PACKAGE)# Added for source code compile start include $(CLEAR_VARS)LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := jarlib1:jars/org.apache.commons.codec-1.7.0.jar jarlib2:jars/org.knopflerfish.bundle.kxml-LIB-2.3.0.jar jarlib3:jars/osgi.cmpn-4.3.0.jar jarlib4:jars/osgi.core-4.3.0.jarinclude $(BUILD_MULTI_PREBUILT)# Added for source code compile end# Use the folloing include to make our test apk.include $(call all-makefiles-under,$(LOCAL_PATH))
這裡就有兩個問題:
第一:jar檔案放在android工程的哪裡?
答案是隨便放在哪裡! 這裡舉個例子,比如我放在工程主目錄下的jars檔案夾下面,那麼我在定義變數LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES值的時候就需要指定一個路徑,即jars/。
第二:我在mk檔案中怎樣引用?
可以看到mk檔案中比一般的mk檔案增加了兩個變數
第一個LOCAL_STATIC_JAVA_LIBRARIES即java靜態庫,這裡我們只需要取個名字就好,具體庫對應的庫檔案需要在LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES中去載入即可。至於LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES的值應該怎麼寫,看mk檔案有提示。
初學android源碼編譯,是會遇到很多問題,慢慢來。