求解答,Android源码编译时怎的添加第三方jar包

求解答,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源码编译,是会遇到很多问题,慢慢来。