所有的android软件包(如android.app,android.content,android.view和android.widget)都在默认库中,所有应用程序都会自动链接。但是,某些新增的jar包位于不自动链接的单独库中,应用程序不会自动链接,下面主要分别介绍应用程序和jar包引用共享库的方式
1.应用程序链接共享库
应用程序引用共享库比较简单也比较常见:在程序的AndroidManifest.xml文件里添加:
<uses-library android:name="com.xxx.xxx" android:required="false" />
com.xxx.xxx表示共享库的名称。
2.jar包链接共享库
这种就是一个jar包引用另外一个共享库jar。
例如:为MyAPIImpl添加一个路径在/system/framework/下的Test.jar
Android.mk
###############################################################################
include $(CLEAR_VARS)
LOCAL_MODULE := com.test.api.xml
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions
LOCAL_MODULE_CLASS := ETC
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)
###############################################################################
###############################################################################
include $(CLEAR_VARS)
LOCAL_MODULE := MyAPIImpl
LOCAL_MODULE_PATH := $(TARGET_OUT_JAVA_LIBRARIES)
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
LOCAL_REQUIRED_MODULES := com.test.api.xml
LOCAL_SRC_FILES := $(LOCAL_MODULE).jar
include $(BUILD_PREBUILT)
###############################################################################
首先为MyAPIImpl.jar添加LOCAL_REQUIRED_MODULES依赖com.test.api.xml
在模块内新建一个com.test.api.xml文件,内容如下:
com.test.api.xml
<?xml version="1.0" encoding="utf-8"?>
<permissions>
<library name="com.test.api"
file="/system/framework/MyAPIImpl.jar"
dependency="Test" />
</permissions>
dependency对应的就是共享库Test.jar,这样就成功为jar包链接共享库了。