将自己的框架或库添加到AOSP

时间:2015-01-11 16:11:39

标签: android android-source

我尝试将自定义程序包添加到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中效果很好。然而:问题是为什么它不适用于非静态库。

1 个答案:

答案 0 :(得分:5)

这是因为您需要本地库的权限文件。

请按照以下步骤操作:

  1. 添加您的lib名称" mypackage"到您想要使用它的软件包的Android.mk中的LOCAL_JAVA_LIBRARIES

  2. 添加xml权限文件,如下所示:

  3. 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位于设备上的指定位置。

    1. 在AndroidManifest中使用<uses-library android:name="com.mypackage.platform_library" />
    2. Here你可以找到一个例子。