如何将系统服务添加到Android Framework

ash*_*hes 15 java-native-interface android android-source

我想添加自己的框架代码,该代码在Android"system_server"中运行(处理所有系统级服务).我的服务加载了一个JNI库,该库与我添加到内核的驱动程序进行通信.该服务旨在允许应用程序向其注册侦听器以从驱动程序获取更新.我找到了一篇非常好的博客文章(http://www.androidenea.com/2009/12/adding-system-server-to-android.html),解释了如何添加系统服务,但我无法完全开始工作.

首先,帖子提到应该使用"适当的"Android.mk文件来编写客户端/测试应用程序,但是没有举例说明.当我尝试构建它时,我遇到构建错误,说它无法找到我添加的服务.有人能举例说明这可能是什么样的吗?

另外,我想在供应商目录(或froyo中的设备目录)中实现此功能,而不是在Android开源代码中实现.博客文章提到适当的地方是供应商目录,但没有举例说明这应该是什么样子.谁知道?

有关在Android中实施您自己的系统服务的任何其他信息都会有所帮助.我的具体工作流程是:

Android应用程序 - >系统服务 - > JNI(本机)库 - >设备驱动程序

Pek*_*der 15

德州仪器提供了一个很好的例子:

http://processors.wiki.ti.com/index.php/Android-Adding_SystemService

此外,CyanogenMod SystemServer.java还有用于动态加载系统服务的代码,如config.xml中的数组"config_vendorServices"中所定义(请参阅core/res/res/values/config.xml),我相信可以在使用叠加层的供应商或设备目录.这是CyanogenMod特有的添加,在此提交中添加:

https://github.com/CyanogenMod/android_frameworks_base/commit/88fff90131f54d45dc496c45127ac1d16ad257df

  • 如果其他人在这里结束,几年前在CyanogenMod中删除了vendorServices功能并升级到ICS. (2认同)