非API接口限制介绍

1 原理:

官方介绍:https://developer.android.google.cn/guide/app-compatibility/restrictions-non-sdk-interfaces#feature-request

https://zhuanlan.zhihu.com/p/44131114 这篇文章主要以编译,运行的角度解析

https://blog.csdn.net/Invoker123/article/details/107396759 主要以功能实现流程方面就行解析

2 新增接口

在Framework中新增AIDL接口,默认是non-sdk的接口,APK在调用使用时会因Restrictions on non-SDK interfaces功能导致Crash,日志中有如下打印信息

Accessing hidden method 类完整路径 -> 方法名()V (blacklist, linking, denied)

若要要解决此类问题,可以增加AIDL注释。修改方法属性,注释的使用可参考官方文档https://source.android.google.cn/devices/architecture/aidl/aidl-annotations中对注释的描述

使用@UnsupportedAppUsage这个注释修饰方法,经过验证不会在报以上问题

3 禁用此功能

官方文档上有介绍,可通过修改设置数据库来控制此功能,修改方法因Android版本而存在差异,在代码中通过观察者模式可以动态的生效修改,但实测会有一些问题,建议每次修改完成后重启机器

若想要ROM默认就禁用掉此功能可以通过2种方法进行修改

  1. 修改ActivityManagerService.java 的getValidEnforcementPolicy函数读取设置数据库的默认值
  2. 在SettingsProvider数据库中增加默认值,此项修改代码比方法一种的工作量要大一些(ASOP的代码中没有此项的默认配置,需要手动添加,并且增加配置项)
常亮值含义
序号常亮值含义备注
1HIDDEN_API_ENFORCEMENT_DEFAULT默认配置,功能同HIDDEN_API_ENFORCEMENT_ENABLED 
2HIDDEN_API_ENFORCEMENT_DISABLED关闭非API接口限制,APK可以正常访问 
3HIDDEN_API_ENFORCEMENT_JUST_WARN关闭非API接口限制,APK可以正常访问,若涉及非API接口限制将在日志中打印相关警告信息若要关闭非API接口限制,建议使用此项,方便APK通过日志进行整改
4HIDDEN_API_ENFORCEMENT_ENABLED打开非API接口限制,APK访问非API接口限制将会发生异常,同时日志中打印相关错误信息 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值