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

标签 android java-native-interface android-source

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

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

此外,我想在供应商目录(或 froyo 中的设备目录)而不是在 Android 开源代码中实现它。博客文章提到,合适的位置是 vendor 目录,但没有给出它应该是什么样子的示例。有人知道吗?

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

Android 应用 -> 系统服务 -> JNI( native )库 -> 设备驱动

最佳答案

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

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

关于android - 如何将系统服务添加到 Android Framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3232718/

相关文章:

android - 如何构建Android系统镜像

安卓源。 TextView 。 Eclipse 找不到一些包

java - 无法使用 Android 解析 OpenCV 中的 putText()

Android BLE 数值比较配对实现

java - 只要应用程序打开,AlarmManager 就会关闭

java - JNI 将 jstring 转换为 char *

java - 在微调器中获取用户选择,将其存储在sharedPreferences中,并在另一个 Activity 中使用它

Android 5.0 Lollipop dlopen(RTLD_LAZY) 失败 : dlopen failed: cannot locate symbol "MD5_Init"

Android JNI,如何使用soname libxx.so.1.2.3加载库

android - 在构建之前从下载的 android 源中删除不需要的包