如何向Android框架添加系统服务
我想添加在Android“system_server”(处理所有系统级服务)中运行的我自己的框架代码。我的服务加载一个JNI库,该库与我添加到内核中的驱动程序对话。该服务旨在允许应用程序向其注册侦听器,以从驱动程序获取更新。我发现了一篇很好的博客文章()解释了如何添加系统服务,但我无法让它完全工作 首先,文章提到应该使用一个“合适的”Android.mk文件来编写客户机/测试应用程序,但没有给出一个例子。当我尝试构建它时,我会收到构建错误,说它找不到我添加的服务。有人能举个例子说明这可能是什么样子吗 另外,我希望在供应商目录(或froyo中的设备目录)中实现这一点,而不是在Android开源代码中实现。这篇博文提到了这个合适的地方是供应商目录,但没有给出一个这样的例子。有人知道吗 任何关于在Android中实现您自己的系统服务的附加信息都会很有帮助。我的具体工作流程是:如何向Android框架添加系统服务,android,java-native-interface,android-source,Android,Java Native Interface,Android Source,我想添加在Android“system_server”(处理所有系统级服务)中运行的我自己的框架代码。我的服务加载一个JNI库,该库与我添加到内核中的驱动程序对话。该服务旨在允许应用程序向其注册侦听器,以从驱动程序获取更新。我发现了一篇很好的博客文章()解释了如何添加系统服务,但我无法让它完全工作 首先,文章提到应该使用一个“合适的”Android.mk文件来编写客户机/测试应用程序,但没有给出一个例子。当我尝试构建它时,我会收到构建错误,说它找不到我添加的服务。有人能举个例子说明这可能是什么样
Android应用程序->系统服务->JNI(本机)库->设备驱动程序德克萨斯仪器公司提供了一个很好的例子: 此外,CyanogenMod SystemServer.java还具有动态加载系统服务的代码,如config.xml中数组“config_vendorServices”中定义的(请参阅core/res/res/values/config.xml),我相信可以使用覆盖在供应商或设备目录中覆盖。这是一种特定于氰莫德的添加剂,添加在本提交中:
按照以下步骤在android框架中编写您自己的系统服务
聚苯乙烯;若您的服务出现致命异常,设备将软重启,因为您的服务正在系统服务下运行 下面是一个Android.mk示例,用于编译位于system/extras/JNItest的JNItest.c。Android.mk也位于system/extras/JNITest目录中
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= JNITest1.c
LOCAL_MODULE:= JNITest
#LOCAL_FORCE_STATIC_EXECUTABLE := true
#LOCAL_STATIC_LIBRARIES := libc
LOCAL_SHARED_LIBRARIES := libc
#LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
LOCAL_MODULE_TAGS := eng
include $(BUILD_EXECUTABLE)
添加系统服务有多种方式(或者说,明确地说,有6种方式)
您尝试的(Android应用程序->系统服务->JNI(本机)库->设备驱动程序)就是其中之一。您可能需要关于系统服务实现模式的深入解释
感谢您发布此邮件。我不知道TI已经发布了这个文档。我还没有机会仔细研究一下,但我现在会接受你的回答,因为这似乎提供了一些很好的信息。如果有其他人来到这里,几年前随着ICS的升级,CyanogenMod中的VendorService功能被删除了。