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的代码中没有此项的默认配置,需要手动添加,并且增加配置项)
常亮值含义
序号 常亮值 含义 备注
1 HIDDEN_API_ENFORCEMENT_DEFAULT 默认配置,功能同HIDDEN_API_ENFORCEMENT_ENABLED  
2 HIDDEN_API_ENFORCEMENT_DISABLED 关闭非API接口限制,APK可以正常访问  
3 HIDDEN_API_ENFORCEMENT_JUST_WARN 关闭非API接口限制,APK可以正常访问,若涉及非API接口限制将在日志中打印相关警告信息 若要关闭非API接口限制,建议使用此项,方便APK通过日志进行整改
4 HIDDEN_API_ENFORCEMENT_ENABLED 打开非API接口限制,APK访问非API接口限制将会发生异常,同时日志中打印相关错误信息  

非API接口限制介绍相关推荐

  1. 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口

    无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于PostgreSQL零代码生成CRUD增删改查RESTful API接 ...

  2. 拼多多API接口的实践案例

    近年来,电商行业的崛起给人们的购物带来了极大的方便.同时,随着技术的发展,API(Application Programming Interface,应用程序编程接口)的普及和应用,大大加快了电商的速 ...

  3. 无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口

    无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接 ...

  4. 常见的交易API接口介绍

    考虑到很多用户初次使用时对于各API接口的功能和获取方式存在较多的疑问,这里进行专门介绍. CTP 模块:vn.ctp 经纪商:期货公司.兴业证券 产品:期货.期货期权 特点:国内最早的针对程序化交易 ...

  5. 介绍一个用于EOS区块链的RPC API接口的PHP开发包SDK

    作为我们Block Producer对社区利益的承诺的一部分,我们希望专注于构建有助于提高EOS平台采用率的工具/应用程序.与大多数大型应用程序一样,当你只有少量或过时的文档并且缺乏工具来帮助你进行入 ...

  6. 基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活

    基于Django实现Linux运维管理平台整个实现过程和各种API接口调用以及Echarts绘图的使用介绍 项目内容涉及技术直通车: 我的项目仓库:MyGitHub https://github.co ...

  7. 【Android P】非公开API(非 SDK 接口)相关知识总结

    关于P-OSV中非公开API(非 SDK 接口)的限制及搜索方式,做了以下整理. 1.背景 Android 9(API 级别 28)引入了针对非 SDK 接口的使用限制,无论是直接使用还是通过反射或 ...

  8. 三种常用的企业实名认证api接口介绍

    国内网络实名制政策出台后,各大平台都响应政策要求,开始对用户进行实名认证,其实实名认证不仅仅是针对个人,还有企业也一样,相较而言,因为不做企业实名认证,让不法企业蒙混过关,造成的危害远大于个人用户. ...

  9. springfox源码_【开源项目】springfox-bridge:随心所欲地为非restful接口生成API文档...

    一.引言 目前,利用swagger框架为restful接口编写API文档非常流行,在spring web项目中,利用springfox+swagger更是可以通过注解的方式直接进行API文档的生成,这 ...

最新文章

  1. android:怎样用一天时间,写出“飞机大战”这种游戏!(无框架-SurfaceView绘制)...
  2. 程序猿工作效率的影响因素和管理者怎样推断
  3. Android Telephony分析(五) ---- TelephonyRegistry详解
  4. 说说自己写PHP框架的一些感受
  5. 每秒处理1000万用户请求…云上架构如何实现高性能和高可用
  6. jupyter notebook 某个cell 一直在运行
  7. 线性表9 - 数据结构和算法14
  8. discuz开发学习
  9. 为 Electron / Atom Shell 设置应用icon(应用图标)
  10. 2018年值得推荐的20个Bootstrap网站模板
  11. Silverlight游戏设计(Game Design):(十四)练习用游戏素材资源的获取及相关工具使用心得
  12. 关于网页点击按钮无响应问题分析
  13. jpeg格式说明与解码学习
  14. 若a,b互素,则a必然存在模b的逆元;若a,b不互素,则a必然不存在模b的逆元
  15. TiDB at 丰巢:尝鲜分布式数据库
  16. python 将列表中的英文或者拼音转换为中文
  17. R语言学习记录:unique()函数
  18. LeetCode-39 - 组合总和
  19. 阿里云服务器通用型实例g5 怎么样好不好?性能配置分析
  20. 在 Kubernetes 上安装和运行极狐GitLab实例

热门文章

  1. Spring Cloud Ribbon 全解 (1) - 总览篇
  2. 云原生安全之容器级网站防篡改
  3. 网站如何防止被篡改?
  4. Android学习-使用WebView在app上显示网页
  5. C语言教学模式 教学方法改革,C语言教学模式改革探究.docx
  6. css中鼠标手,css各种鼠标手型集合
  7. siamfc-pytorch代码讲解(三):demotrack
  8. 社交电商平台的消费返利模式——共享购
  9. 前端正则表达式指定邮箱域名匹配
  10. Excel忽略0值求平均分,将某一列分类后求平均值