Android插件化、热修复原理简介

1、如何规避Android P对私有API的访问限制

● Android:Pie — 9.0 — 28
● 一般都是通过反射访问私有 API

1.1、私有API

Android源码查看网址
在这里插入图片描述

(1)hide public

在这里插入图片描述
hide public方法无法直接使用,可以自行编译系统源码,并导入项目工程,从而访问到。
比如 convertFromTranslucent() 是 Acticity 中的方法,我们可以直接把 Activity 的源码放到工程里,就可以访问到这个方法。
(android.jar编译的Activity中没有convertFromTranslucent()方法,我们可以自己搞一个privaded.jar把系统源码搞过来,就可以骗过编译器,运行时加载的那个类里面肯定是有这个方法的)

(2)private

在这里插入图片描述

private 彻底访问不到,只能通过反射。

Method initMethod = AssetManager.class.getDeclaredMethod("init");
initMethod.setAccessible(true);

反射:1)不仅可以绕过访问权限控制 2)还可以修改final变量

1.2、Android P 的API名单

在这里插入图片描述

● 白名单中的API:谁都能用
● 浅灰名单中的API:反射可用
● 深灰名单中的API:SDK < 28,允许使用;SDK >= 28,不允许使用,同黑名单
● 黑名单中的API:反射不可用。如 getDeclaredField()、getDeclaredMethod() 获取不到任何东西

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KillerNoBlood

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值