How to add a system service to the Android Framework(如何将系统服务添加到 Android 框架)
问题描述
我想添加我自己在 Androidsystem_server"中运行的框架代码(处理所有系统级服务).我的服务加载了一个 JNI 库,该库与我添加到内核的驱动程序对话.该服务旨在允许应用程序向其注册侦听器以从驱动程序获取更新.我发现了一篇不错的博文(http://www.androidenea.com/2009/12/adding-system-server-to-android.html),它解释了如何添加系统服务,但我无法让它完全正常工作.
I want to add my own framework code that runs in the Android "system_server" (handles all the system level services). My service loads a JNI library that talks to a driver I have added to the kernel. The service is designed to allow an app to register a listener with it to get updates from the driver. I found a pretty good blog post (http://www.androidenea.com/2009/12/adding-system-server-to-android.html) that explains how to add a system service, but I cannot get it completely working.
首先,帖子提到应该使用适当的"Android.mk 文件来编写客户端/测试应用程序,但没有给出这方面的示例.当我尝试构建它时,我收到构建错误,说它找不到我添加的服务.有人可以举例说明这可能是什么样子吗?
First of all, the post mentions that an "appropriate" Android.mk file should be used to write the client/test application, but does not give an example of this. When I try to build it, I get build errors saying it can't find the service I have added. Could someone give an example of what this might look like?
另外,我想在供应商目录(或 froyo 中的设备目录)中实现此功能,而不是在 Android 开源代码中.博客文章提到了这个合适的地方是供应商目录,但没有给出这个应该是什么样子的例子.有人知道吗?
Also, I'd like to implement this in the vendor directory (or device directory in froyo) rather than in the Android open source code. The blog post mentions that the proper place for this is the vendor directory, but does not give an example of what this should look like. Anyone know?
任何有关在 Android 中实现您自己的系统服务的其他信息都会有所帮助.同样,我的具体工作流程是:
ANY additional information on implementing your own system service in Android would be helpful. Again my specific workflow is:
Android 应用 -> 系统服务 -> JNI(本机)库 -> 设备驱动程序
Android App -> System Service -> JNI (native) library -> Device Driver
推荐答案
德州仪器提供了一个很好的例子:
Texas instruments has provided a nice example:
http://processors.wiki.ti.com/index.php/Android-Adding_SystemService
此外,CyanogenMod SystemServer.java 还具有用于动态加载系统服务的代码,这些代码在 config.xml 中的数组config_vendorServices"中定义(参见 core/res/res/values/config.xml),我相信可以使用覆盖在供应商或设备目录中覆盖.这是 CyanogenMod 特有的添加,在此提交中添加:
Additionally, the CyanogenMod SystemServer.java has also code for dynamically loading system services as defined in the array "config_vendorServices" in config.xml (see core/res/res/values/config.xml), which I believe can be overwritten in the vendor or device directories using the overlays. This is a CyanogenMod-specific addition, added in this commit:
https://github.com/CyanogenMod/android_frameworks_base/commit/88fff90131f54d45dc496c45127ac1d16ad2
这篇关于如何将系统服务添加到 Android 框架的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何将系统服务添加到 Android 框架
基础教程推荐
- Android:对话框关闭而不调用关闭 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01