Android Framework 之 使用系统编译的文件 添加到 SDK 的源码

在上一篇文章中: Android Framework 添加新的 系统服务
我们添加了 新的 系统服务 DemoManagerService, 客户端可以通过 DemoManager.java 访问。
但是 使用 Android Studio 新建一个项目时,是不能直接使用DemoManager.java, 因为当前Android Studio使用的是Google 原生的SDK (API31),并没没有我们新增的服务.
由此,产生一个debug 的需求: 使用系统编译的文件 替换掉 SDK 的源码
以达到我们可以在Android studio 可以使用新的服务。

总的思想是,将新增、修改的类的编译成字节码文件,然后把它放到 android.jar中.

1. 找到系统编译的 jar 包

(JAVA_LIBRARIES, 不同厂商产物不一样)
例如路径: android\out\target\common\obj\JAVA_LIBRARIES\framework_intermediates
然后解压这个路径下 class 的 jar 包
则可以在路径:
(1) android\app 下, 找到:

DemoManager.class

IDemoManager$Default.class
IDemoManager$Stub$Proxy.class
IDemoManager$Stub.class
IDemoManager.class

(2) android\content

Context.class

2. 添加上面的 class文件到SDK中(android.jar)

先找到 如: [SDK安装路径]\platforms\android-31\目录,
将目录下的 android.jar 解压,将上面的五个文件, 添加到SDK 源码对应的目录中,即

[SDK安装路径]\platforms\android-31\android\android\app
[SDK安装路径]\platforms\android-31\android\android\content

然后,重新压缩 android文件, 并把后缀改为 android.jar (即替换掉原来的android.jar)

3. 重启Android studio

则可以使用DemoManager

你可能感兴趣的:(Android Framework 之 使用系统编译的文件 添加到 SDK 的源码)