[实践] Android5.1.1源码 - 在Framework中添加自定义系统服务

Android9.0系统中添加自定义系统服务给APP调用 软件平台:Android9.0 硬件平台:Mtk8175 近日开发了一个产品需求,APP端需要控制硬件LED灯,由于是多个APP需要调用,固计划将控制接口做成System Service级别的服务,APP可以通过跨进程调用相关的方法,话不多说,开干: 1、在frameworks/base/core/java/android/app/目录添加aidl接口文件,内容如下: /** * Lamp brightness controller */ package android.app... 阅读详情

前言

本文的方法要修改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源码即可。



作者:寻禹@阿里聚安全,更多安全技术文章,请访问阿里聚安全博客

Android在framework层添加自定义服务的流程 可能有人会问,现在都2024了怎么还在用android4版本,早都过时了。确实,现在最新的都是Android13、Android14了,不过我这里主要是用于demo的演示学习使用,只要整个的流程掌握了,哪个版本的流程都是大同小异;再一个就拿Android13来说,源码100G多非常庞大,代码clone、源码编译都是很慢的,而Android4.1源码才4G多,编译运行就快多了,省时省力。仿照系统中现有服务的编写方式,新增服务需要编写aidl接口(也就是提供什么服务),在frameworks/base/core 阅读详情

相关推荐

Android 5.1 - 7.1 系统(framework)定制、修改、移植、总结 - 下篇

定位上篇 Android 5.1 - 7.1 系统(framework)定制、修改、移植、总结 - 上篇 1:Android系统将位置信息模式默认设置为高精确度 GPS位置信息模式默认为“仅限设备”, 应客户的需求,需要默认为“高精确度” 请把 /frameworks/base/packages/SettingsProvider/res/values/defaults.xml <string name="def_location_providers_a...

gjy_it的博客 5566

Android framework自定义系统服务

主要分享在Android9.0上的添加自定义服务的过程,和遇到的SELinux权限的问题,接下来开工。

qq_35993502的博客 2156

Framework简介

这里写自定义目录标题简单介绍framework在Android系统的位置Android架构图Android系统源码中的framework重要类及其介绍服务端客户端Linux驱动从apk程序的运行过程,去看看上面各个组件在啥时候干啥活的源码地址FrameWork的开发1 源码的目录结构。2 Framework 的学习方法汇总3 Framework启动分析应用程序启动分析APK中的线程自定义Thre...

mybook1122的专栏 6610

Android13添加自定义服务

Android13系统源码下添加系统服务的大致流程;

明光的博客 1512

Android12 源码下载、编译、刷机、单编调试Framework

由于在国内使用 Google 的官方下载站点,会有下不动的情况,有时候 .repo 都下载不下来,所以本教程是以国内的镜像站点为例子,如果你有方法可以爬墙,那么可以简单参考 官方的教程 https://source.android.google.cn/source/downloading。代码下载完成之后,我们先不着急编译,如果要想在真机上跑,需要下载一些厂商闭源的驱动文件,这样后续编译的代码才可以跑到真机上,此处对应的。直接下载的代码使用的是 master 分支,驱动程序需要在这里下载。

知难行易 1万+

如何阅读android的framework层源码

如何阅读framework层源码 我们先提出4个问题来分解“如何阅读framework层源码”这个问题 源码从哪里可以看到? 阅读源码需要哪些基础? 阅读源码需要哪些工具? 如何有效地阅读源码? 一、源码从哪里可以看到? 阅读源码可以通过在线阅读和离线阅读两种方式 在线阅读 https://www.androidos.net.cn/ http://androidxref.com/ 离线阅读...

qq_23081779的博客 4106

android os5.1主题,[实践] Android5.1.1源码 - 在Framework中添加自定义系统服务

[实践] Android5.1.1源码 - 在Framework中添加自定义系统服务@(Android研究)[添加自定义系统服务][TOC]前言本文的方法要修改Android源码。但只要将系统服务写出来,也可以注入system_server进程将系统服务加载到system_server中。步骤1. 添加一个aidl文件,我将aidl文件添加到这个路径下:frameworks/base/core/j...

weixin_42527654的博客 199

Android Framework源码编译全流程详解

Android Framework作为系统核心层,承载着应用与底层硬件的交互桥梁作用。其编译过程涉及复杂的工具链配置和依赖管理,是深入理解Android系统架构的关键切入点。从环境准备到源码同步,再到编译优化,每个环节都需要精准控制。通过配置ccache缓存和增量编译策略,可以显著提升大型代码库的构建效率。掌握Framework编译技术不仅有助于ROM定制开发,更能为系统级性能优化和功能扩展奠定基础。本文以AOSP最新分支为例,详细解析从环境搭建到产物部署的全流程实践。

weixin_34130389的博客 479

android aidl继承stub,[实践] Android5.1.1源码 - 在Framework中添加自定义系统服务

前言本文的方法要修改Android源码。但只要将系统服务写出来,也可以注入system_server进程将系统服务加载到system_server中。步骤1.添加一个aidl文件,我将aidl文件添加到这个路径下:frameworks/base/core/java/android/content/bw/IBWService.aidl,IBWService.aidl是我的aidl文件。下面是一个例子...

weixin_36432438的博客 266

Android 14.0 frameworks添加自定义服务

在14.0的系统rom定制化产品开发中,对于提供系统接口来给app调用,来控制系统的某些功能,所以需要添加自定义服务也是常有功能,因此需要来在frameworks层中添加自定义系统服务的功能

安卓兼职framework和app工程师的博客 2087

Android中添加自定义服务

但是,有时候我们需要在应用程序中添加自定义服务来满足特定的需求。本文将介绍如何在Android应用程序中添加自定义服务,并提供相应的源代码示例。你可以根据自己的需求编写自定义服务类,并在。通过自定义服务,你可以在后台执行长时间运行的操作,满足特定的应用程序需求。在上面的示例中,我们创建了一个意图(Intent),并将服务类的完整路径作为参数传递给。在上面的示例中,我们创建了一个意图(Intent),并将服务类的完整路径作为参数传递给。方法用于支持绑定服务,如果你的服务不需要支持绑定,可以返回null。

2301_79326510的博客 322

Android5.1.1源码 - 在Framework中添加自定义系统服务

前言 本文的方法要修改Android源码。但只要将系统服务写出来,也可以注入system_server进程将系统服务加载到system_server中。 步骤 1. 添加一个aidl文件,我将aidl文件添加到这个路径下: frameworks/base/core/java/android/content/bw/IBWService.aidl,IBWSer

Demon_xiaochunjie的博客 892

frameworks中增加自定义服务使其也成为系统服务

前言 在Android开发framework层的时候,如果我们想增加自定义的功能,这个时候又不想改动系统原有的组件,那通常我们可以增加自己服务成为系统服务,用自己服务统一来进行管理。 Kernel: v4.4.126 Device: rk3399 Platform Version: Android 7.1 步骤 例如: 在frameworks/base/services/core/java/com/android/server下创建自定义文件夹,例如cat,然后在cat文件夹下创建CatManagerService.java。 package com.android.server.cat;

上一篇: 安卓动态调试七种武器之长生剑 - Smali Instrumentation
下一篇: Android安全开发之Provider组件安全
阿里安全
博客等级 码龄11年 260粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值