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

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

在上一篇文章中: Android Framework 添加新的 系统服务

我们添加了 新的 系统服务 DemoManagerService, 客户端可以通过 DemoManager.java 访问。

但是 使用 Android Studio 新建一个项目时,是不能直接使用DemoManager.java, 因为当前Android Studio使用的是Google 原生的SDK (API31),并没没有我们新增的服务.

由此,产生一个debug 的需求: 使用系统编译的文件 替换掉 SDK 的源码

以达到我们可以在Android studio 可以使用新的服务。

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

(JAVA_LIBRARIES, 不同厂商产物不一样)

例如路径: android\out\target\common\obj\JAVA_LIBRARIES\framework_intermediates

然后解压这个路径下 class 的 jar 包

则可以在路径:

(1) android\app 下, 找到:

(2) android\content

先找到 如: [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)

则可以使用DemoManager

下面分两种情况介绍一下如何导入第三方类库。

1、对于jar的类库,非常简单,只要在项目根目录下新建一个libs目录,然后把jar复制进去,在jar上点击右键,选择Add as library,即可完成依赖的添加。

2、对于github等网站上下载的源码类库,是无法通过这种方式添加的。首先把git clone下来的整个文件夹放入项目根目录下,这里以我自己的开发包为例,我的开发包名字是ShunixDevKit,里面有一个lib目录才是真正的类库,那么我们要做的就是手动在settings.gradle里面添加:

include ':ShunixDevKit:lib'

注意,gradle使用:作为路径分隔符。这样Android Studio就知道了我们的类库放在哪里,当然这样还是不够的,要让项目能使用类库,我们还需要添加这个类库作为项目的依赖,选择File->Project Structure,然后选中主module的名称,点击dependencies,添加:ShunixDevKit:lib就可以了,gradle的build就能成功。

以上就是添加第三方类库作为依赖的过程。这里需要注意一下的地方就是,导入的类库根目录下的gradlew文件一定要可执行,否则Android Studio会提示错误,而且根据错误信息很难找出来这个错误,我自己因为这个搞了很久,希望对大家有帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11358899.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存