Android4.4 在系统中添加自己的System Service

添加系统service时,源码限制只能添加以android开头的包名,如果不是android开头的,编译时会提示找不到对应的文件。

比如说在系统中添加一个包名为:tel.gateway.connservice的系统服务。

1.在framework/base目录下面创建如下路径:tianyi/java/tel/gateway/connservice/。在这个目录中添加对用的aidl和service。

2.在framework/base/android.mk中的LOCAL_SRC_FILES添加对应的aidl。

3.在framework/base/android.mk中找到LOCAL_SRC_FILES,并且添加tel/*,否则编译时会提示找不到添加的java文件或者aidl文件

4.在SystemService.java中注册对应的Service。此时编译之后系统里面已经有了添加的系统service了,但是上层apk还不能调用。

5.在framework/base/core/java/android/app/ContextImpl.java注册服务代理。也就是上层apk通过Context.getSystemService函数获取的代理。

6.开发上层apk时需要替换原生sdk中的android.jar。需要在build/core/pathmap.mk中找到FRAMEWORKS_BASE_SUBDIRS将tianyi添加上。系统编译时会将自动扩展成tianyi/java,并且将包tel/gateway/connservice打包进android.jar中。

7.生成的可以换android.jar路径为:out/target/product/p201_iptv/obj/JAVA_LIBRARIES/framework_intermediates/javalib.jar

解压查看内容如下:

相关推荐
COSMOS_*3 小时前
2025最新版 Android Studio安装及组件配置(SDK、JDK、Gradle)
android·ide·jdk·gitee·android studio
jian110583 小时前
android studio Profiler性能优化,查看内存泄漏
android·性能优化·android studio
建群新人小猿6 小时前
陀螺匠企业助手——组织框架图
android·java·大数据·开发语言·容器
TheNextByte16 小时前
如何将文件从Android无线传输到 iPad
android·ios·ipad
赫萝的红苹果7 小时前
实验探究并验证MySQL innoDB中的各种锁机制及作用范围
android·数据库·mysql
叶落无痕527 小时前
Android Studio 2024.3.1 连接夜神模拟器
android·ide·android studio
玲子的猫7 小时前
安卓原生开发实现图片双指放大预览功能
android
2501_915106328 小时前
如何在iPad上高效管理本地文件的完整指南
android·ios·小程序·uni-app·iphone·webview·ipad
似霰9 小时前
AIDL Hal 开发笔记5----实现AIDL HAL
android·framework·hal
2501_915106329 小时前
iOS 成品包加固,在只有 IPA 的情况下,能做那些操作
android·ios·小程序·https·uni-app·iphone·webview