求解答,Android源码编译时怎的添加第三方jar包
各位大神好,遇到的问题如标题。
我用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 := optional LOCAL_SRC_FILES := $(call all-java-files-under, src) # Added for source code compile start 为jar起一个别名 LOCAL_STATIC_JAVA_LIBRARIES := jarlib1 jarlib2 jarlib3 jarlib4 LOCAL_PACKAGE_NAME := yourprojectname # Added for source code compile end LOCAL_CERTIFICATE := platform include $(BUILD_PACKAGE) # Added for source code compile start 冒号前面为jar别名,后面为jar文件的实际路径 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.jar include $(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源码编译,是会遇到很多问题,慢慢来。