我尝试将自定义程序包添加到frameworks/opt/mypackage
下的AOSP。
我提供了一个Android.mk
Makefile,内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := mypackage
include $(BUILD_JAVA_LIBRARY)
在另一个框架中,我出去使用这个包。例如,在电话包中。
但不幸的是,电话框架无法使用我的软件包。我将我的包添加到了电话LOCAL_JAVA_LIBRARIES
中的Android.mk
变量中,但是当代码执行时,它会给我01-11 16:51:01.835: E/AndroidRuntime(1789): java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
我错过了什么吗?
编辑:在我的Makefile中设置include $(BUILD_STATIC_JAVA_LIBRARY)
而不是include $(BUILD_JAVA_LIBRARY)
,并将我的包添加到框架的LOCAL_STATIC_JAVA_LIBRARIES
中效果很好。然而:问题是为什么它不适用于非静态库。
答案 0 :(得分:5)
这是因为您需要本地库的权限文件。
请按照以下步骤操作:
添加您的lib名称" mypackage"到您想要使用它的软件包的Android.mk中的LOCAL_JAVA_LIBRARIES
。
添加xml权限文件,如下所示:
com.mypackage.platform_library.xml
<?xml version="1.0" encoding="utf-8"?>
<permissions>
<library name="com.mypackage.platform_library"
file="/system/framework/com.mypackage.platform_library.jar"/>
</permissions>
此文件必须放在设备的/ system / etc / permissions中。确保mypackage.jar位于设备上的指定位置。
<uses-library android:name="com.mypackage.platform_library" />
Here你可以找到一个例子。