向 AOSP 添加自己的框架或库
Adding own framework or library to AOSP
我正在尝试将自定义包添加到 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)
在别的框架里,我是用这个包出来的。例如在电话包中。
但不幸的是,电话框架无法使用我的包。我将我的包添加到电话 Android.mk
中的 LOCAL_JAVA_LIBRARIES
变量但是当代码执行时它给我 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
效果很好。尽管如此:问题是为什么它不适用于非静态库。
这是因为您需要本地图书馆的许可文件。
按照以下步骤操作:
将你的库名称"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 位于设备上的指定位置。
- 在您的 AndroidManifest 中使用
<uses-library android:name="com.mypackage.platform_library" />
Here你可以找个例子。
我正在尝试将自定义包添加到 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)
在别的框架里,我是用这个包出来的。例如在电话包中。
但不幸的是,电话框架无法使用我的包。我将我的包添加到电话 Android.mk
中的 LOCAL_JAVA_LIBRARIES
变量但是当代码执行时它给我 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
效果很好。尽管如此:问题是为什么它不适用于非静态库。
这是因为您需要本地图书馆的许可文件。
按照以下步骤操作:
将你的库名称"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 位于设备上的指定位置。
- 在您的 AndroidManifest 中使用
<uses-library android:name="com.mypackage.platform_library" />
Here你可以找个例子。