Android5.1.1源码 - 在Framework中添加自定义系统服务
2016-05-30 17:30
316 查看
前言
本文的方法要修改Android源码。但只要将系统服务写出来,也可以注入system_server进程将系统服务加载到system_server中。步骤
1. 添加一个aidl文件,我将aidl文件添加到这个路径下:frameworks/base/core/java/android/content/bw/IBWService.aidl,IBWService.aidl是我的aidl文件。下面是一个例子:
2. 在frameworks/base/Android.mk文件的LOCAL_SRC_FILES中系统添加了很多aidl文件,我们在系统添加的文件列表中添加一行:core/java/android/content/bw/IBWService.aidl
3. 写一个服务文件继承aidl中的Stub类,这个类我添加到了这个路径下:
frameworks/base/services/core/java/com/android/server/bw/BWService.java。这里有一个技巧,可以在自己的Android项目中先写一个aidl和一个继承它Stub的类,当代码编写无误时将这两个文件拷贝到Android源码目录中。下面是服务文件的例子:
4. 在SystemServer类中添加我们自定义的系统服务,系统如何添加系统服务可以参考Android5.1.1源码
- 分析Android系统服务何时被添加到ServiceManager这篇文章。下面是添加自定义系统服务的一个例子:
5. 由于Android5.1.1中有SeAndroid系统,这个系统中维护了一个系统服务的白名单,如果你要添加的系统服务不在这个白名单中,那么添加系统服务将会失败,这个白名单的路径是:external/sepolicy/service_contexts。下面是我在这个白名单中添加的一行:
bwservice u:object_r:system_server_service:s0
bwservice就是ServiceManager.addService时输入的服务名。
至此添加系统服务成功,重新编译Android源码即可。
转自:阿里聚安全博客
相关文章推荐
- Enterprise Library for .NET Framework 2.0缓存使用实例
- C# Entity Framework中的IQueryable和IQueryProvider详解
- 由vbs sort引发.NET Framework之间的关系说明
- C#修改IIS站点framework版本号的方法
- C#难点逐个击破(6):C#数据类型与.net framework数据类型
- zend framework框架中url大小写问题解决方法
- YII Framework框架教程之安全方案详解
- Yii PHP Framework实用入门教程(详细介绍)
- 微软NET Framework 3.5 Beta 1 发布 提供下载
- 使用Entity Framework(4.3.1版本)遇到的问题整理
- 解决了Ajax、MySQL 和 Zend Framework 的乱码问题
- WINDOWS + WAMP + Zend Framework 配置步骤分享
- zend framework文件上传功能实例代码
- 工厂模式在Zend Framework中应用介绍
- .NET Framework SQL Server 数据提供程序连接池
- Zend Framework教程之视图组件Zend_View用法详解
- Zend Framework教程之配置文件application.ini解析
- Zend Framework教程之MVC框架的Controller用法分析
- Zend Framework教程之Zend_Db_Table表关联实例详解
- Zend Framework教程之Loader以及PluginLoader用法详解