安卓添加系统自定义服务

简介: 笔记

安卓版本:4.4

因为项目中用到了,做一下简要笔记。

  1. 定义aidl文件,如IFlyscaleManager.aidl,放到frameworks/base/core/java/android/flyscale/IFlyscaleManager.aidl
  2. 定义服务FlyscaleService.java,实现该IFlyscaleManager.aidl,放到frameworks/base/service/java/com/android/server/flyscale/FlyscaleService.java
  3. 调用FlyscaleService服务,定义FlyscaleManager.java,放到frameworks/base/core/java/android/flyscael/FlyscaleManager.java
  4. 添加服务,修改frameworks/base/core/java/android/content/Context.java
    添加:

/**
 *@author bianjb add flyscale service
 */
public static final String FLYSCALE_SERVICE = "flyscale";

修改initAndLoop()方法,添加

//framework/base/services/java/com/android/server/SystemServer.java 
//bianjb:add flyscale service
FlyscaleService flyscaleService = null;
//bianjb: add for flyscale service
try {
    if (PowerGuruService.isEnabled()) {
        Slog.i(TAG, "Flyscale Manager");
        flyscaleService = new FlyscaleService(context);
        ServiceManager.addService(Context.FLYSCALE_SERVICE, flyscaleService);
    }
} catch (Throwable e) {
    Slog.e(TAG, "Failure FlyscaleService", e);
}
  1. 实例化并注册服务
    修改frameworks/base/core/java/android/app/ContextImpl.java
    的static代码块中添加

//bianjb:add for flyscale service
registerService(FLYSCALE_SERVICE, new ServiceFetcher() {
public Object createService(ContextImpl ctx) {
    IBinder b = ServiceManager.getService(FLYSCALE_SERVICE);
    IFlyscaleManager service = IFlyscaleManager.Stub.asInterface(b);
    return new FlyscaleManager(ctx, service);
}});
  1. 编译IFlyscaleService.aidl
    修改frameworks/base/Android.mk
    添加

#add for flyscale service
LOCAL_SRC_FILES += core/java/android/flyscale/IFlyscaleManager.aidl \

之后重新编译即可,在APP调用的方法与调用ActivityManager方法一致。


目录
相关文章
|
3天前
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
16 1
|
4天前
|
Android开发
Android 11 添加Service服务SELinux问题
Android 11 添加Service服务SELinux问题
13 1
|
24天前
|
XML Java Android开发
Android实现自定义进度条(源码+解析)
Android实现自定义进度条(源码+解析)
52 1
|
4天前
|
存储 Java Android开发
Android系统 设置第三方应用为默认Launcher实现和原理分析
Android系统 设置第三方应用为默认Launcher实现和原理分析
18 0
|
3天前
|
Android开发
Android构建系统:Android.mk(2)函数详解
Android构建系统:Android.mk(2)函数详解
12 1
|
3天前
|
存储 Java API
Android系统 文件访问权限笔记
Android系统 文件访问权限笔记
35 1
|
3天前
|
移动开发 Java Unix
Android系统 自动加载自定义JAR文件
Android系统 自动加载自定义JAR文件
21 1
|
3天前
|
Shell Android开发 开发者
Android系统 自定义动态修改init.custom.rc
Android系统 自定义动态修改init.custom.rc
23 0
|
3天前
|
测试技术 Android开发 开发者
RK3568 Android系统客制化动态替换ro任意属性
RK3568 Android系统客制化动态替换ro任意属性
24 1
|
3天前
|
存储 Linux Android开发
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
18 0