Android 11 Framework 增加自定义API到系统中

基于 Android 11 源码

根据网上的教程, 自己先捣鼓一波:

frameworks\base\services 创建 hzyd文件夹
在这里插入图片描述

Android.bp内容:

android_library_import {
    name: "services.hzyd",
    aars: ["MobileSDK-release.aar"],
    sdk_version: "current",
}
  1. 修改 frameworks\base\Android.bp
    在这里插入图片描述
    在任意java_library 节点引用这个模块即可

  2. 重新编译 make j80
    重新编译系统, 成功后,验证代码有没有增加到framework.jar中
    在这里插入图片描述

直接用jd-gui 打开是看不到的, 里面分了很多个 classes.dex
在这里插入图片描述

将framework.jar 解压出来, 用 d2j-dex2jar 反编译成jar
在这里插入图片描述

没毛病, 自定义的相关类都在framework.jar里了.

  1. 刷机 将 out\target\product\rk3568_r\super.img 刷入系统.
    在这里插入图片描述

  2. 验证SDK是否能调用
    在这里插入图片描述

compileOnly 表示只参与编译不参与打包

直接运行APP看看效果
在这里插入图片描述

毫无疑问, 直接崩溃了, 原因是这个属于未公开的API, android 11不让上层应用调用.

将测试应用切换成系统签名后重新运行.
在这里插入图片描述
在这里插入图片描述

由于客户的应用是自己的签名, 并不属于系统应用, 于是重新修改编译, 将源代码直接复制到framework中.

将代码复制到 frameworks\base\core\java 目录下
设置基线检查, 忽略自定义包名

修改: frameworks\base\StubLibraries.bp 
packages_to_document{
    "com.xxxxx", //你的包名
}

修改: frameworks\base\Android.bp
metalava_framework_docs_args = ... +
	"--api-lint-ignore-prefix com.xxxx. "
  1. 更新系统API 执行 make update-api

  2. 重新编译 make -j80

  3. 刷入 super.img 验证OK 特此记录.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值