刚刚有同学问我,不太了解 “非SDK接口” 是什么意思?android9.0有什么限制 ?apache的http也有限制 ?

而且现在的大部分系统都升级上来了,黑名单、灰名单和白名单 也是必须要了解一下的,这里参考Google开发者网站给大家整理一下。

首先,公共 SDK 接口是在 Android 框架软件包索引 中记录的那些接口,什么是框架软件包?

链接地址:https://developer.android.google.cn/reference/packages.html

非 SDK 接口 的处理是 API 抽象出来的实现细节,因此这些接口可能会在不另行通知的情况下随时发生更改。

黑名单 无论应用的目标 API 级别是什么,都无法使用此列表中的非 SDK 接口。如果您的应用尝试访问其中任何一个接口,系统就会抛出错误。
灰名单 从 Android 9(API 级别 28)开始,在每个 API 级别分别会限制某些非 SDK 接口。如果应用的目标 API 级别较低,您可以访问灰名单中的受限 API,但如果您的应用尝试访问在您的目标 API 级别受限的非 SDK 接口,系统就会假定此 API 已列入黑名单。说白了,就是只要在您应用的目标 API 级别不限制此列表中的非 SDK 接口,您就可以使用它们。
白名单 此列表中的接口已在 Android 框架软件包索引中正式记录,它们是受支持的接口,您可以自由使用。

有的同学听完还是比较郁闷……

那换个说法吧,比如应用在通过反射等机制与类互动时(WebView、HTTP等),android9.0之后就不应访问 SDK 中未列出的方法或字段,否则会提示报错,应用老老实实的用谷歌大佬提供的API就好了。

来看谷歌大佬的回应:

尽管您目前仍可以使用灰名单中的某些非 SDK 接口(取决于您应用的目标 API 级别),但是如果您使用任何非 SDK 方法或字段,终归存在很可能会损坏应用的风险。

如果您的应用依赖于非 SDK 接口,则应该开始计划迁移到 SDK 接口或其他替代方案。如果您无法为应用中的功能找到使用非 SDK 接口的替代方案,则应该请求新的公共 API。

尽管还是可以使用,但后果自负。

有frameworks的同学可以看这个路径,此文本包含已列入灰名单的非受限 API 的列表。

如果非常想使用此接口又找不到替代方案?

如果非常想使用此接口又找不到替代方案时怎么办?可以找Google提需求,如下图。

其它的说明都可以忽略,主要是确认自己的SDK接口到底是不是属于非SDK接口。

应用调试时进行测试

先建议开启lintOptions,检测一下其他问题。

另外在搭载 Android 9(API 级别 28)或更高版本的设备或模拟器上构建和运行可调试应用来测试该应用是否使用非 SDK 接口。

在您的应用上运行测试时,如果该应用访问了某些非 SDK 接口,系统就会输出一条日志消息。

您可以检查应用的日志消息,查找以下详细信息:

  • 声明的类、名称和类型(采用 Android 运行时所使用的格式)。
  • 访问方式:链接、反射或 JNI
  • 所访问的非 SDK 接口属于哪个列表。

我们可以使用 adb logcat 来查看这些日志消息,这些消息显示在所运行应用的 PID 下,不过日志消息看起来很痛苦……

举例而言,日志中可能包含如下条目:

Accessing hidden field Landroid/os/Message;->flags:I (light greylist, JNI)

我们也可以使用 StrictMode API 进行测试的
记得在主方法里面开启 StrictMode,用 StrictMode API 来测试应用是否使用 非 SDK 接口 ,怎么开启?打开 detectNonSdkApiUsage 方法 ,然后使用 penaltyListener 来接收每次使用 非 SDK 接口的行为所对应的回调,并且可以在其中实现自定义处理。

回调中提供的 Violation 对象派生自 Throwable,并且封闭式堆栈轨迹会提供相应使用行为的上下文。

当然,我们也可以使用 veridex 工具进行测试的

您还可以在 APK 上运行静态分析工具 veridexveridex 工具 会扫描 APK 的整个代码库(包括所有第三方库),并报告发现的所有使用非 SDK 接口的行为。

不过 veridex 工具存在以下局限性:

  • 它无法检测到通过 JNI 实现的调用。
  • 它只能检测到一部分通过反射实现的调用。
  • 它对非活动代码路径的分析仅限于 API 级别的检查。

有的人会好奇,它对原生代码中的非 NDK 接口是否有限制?Google大佬回应,Android SDK 包含 Java 接口。Android 平台从 Android 7(API 级别 26)开始就已经限制访问原生 C/C++ 代码中的非 NDK 的接口了。


作者:奥特曼超人Dujinyang

来源:CSDN

原文:https://dujinyang.blog.csdn.net/article/details/102858639

版权声明:本文为博主杜锦阳原创文章,转载请附上博文链接!

Android9.0 如何精准区分SDK接口和非 SDK接口相关推荐

  1. android sdk 9.0下载地址,Android9.0对非 SDK 接口的限制

    Android9.0对非 SDK 接口的限制 发布时间:2018-10-19 12:00, 浏览次数:919 , 标签: Android SDK 在 Android 9.0 版本中,谷歌加入了非 SD ...

  2. Android9.0对非 SDK 接口的限制

    在 Android 9.0 版本中,谷歌加入了非 SDK 接口使用限制,无论是通过调用.反射还是JNI等方式,开发者都无法对非 SDK 接口进行访问,此接口的滥用将会带来严重的系统兼容性问题. 在开发 ...

  3. Google针对非 SDK 接口的限制

    Google针对非 SDK 接口的限制 前言 最近在项目中遇到一个问题,非系统签名应用预装到android sdk为28的系统vender或者system分区下,调用隐藏api时,程序崩溃. 报错信息 ...

  4. “对使用非SDK接口的限制”的适配实战

    概述 首先需要说明的是,"对使用非SDK接口的限制"是针对所有应用的.此限制是从9.0(28)开始引入的,只要是运行在9.0及以上系统的app都会有此限制,无论app适配的targ ...

  5. rk3368 Android9.0 HIDL调试记录

    rk3368 Android9.0 HIDL调试记录 Platform: RK3368 OS: Android 9.0 Kernel: 4.4.194 文章目录 rk3368 Android9.0 H ...

  6. Android P非SDK接口限制

    写在前头 Android Pie(API 28)开始对非SDK接口的使用开始做了限制.只要应用引用非 SDK 接口或尝试使用反射或 JNI 来获取其句柄,就会被限制.这些限制旨在帮助提升用户体验和开发 ...

  7. Android 开发---对非SDK接口限制的适配

    前言 项目升级到Android Pie(9),需要考虑适配问题.在此做个总结. Android 9 增加了对非SDK接口访问的限制,无论你是直接访问还是通过反射,JNI等间接访问,都是会被限制的. S ...

  8. (转)Android高级进阶--插曲-从Android5.0到Android9.0各版本变化

    原文:https://blog.csdn.net/gaoxiaoweiandy/article/details/83216001 从Android5.0到Android9.0 自从公司提出了一些出其不 ...

  9. 一种绕过Android P对非SDK接口限制的简单方法

    众所周知,Android P 引入了针对非 SDK 接口(俗称为隐藏API)的使用限制.这是继 Android N上针对 NDK 中私有库的链接限制之后的又一次重大调整.从今以后,不论是native层 ...

最新文章

  1. 干货分享:自动驾驶核心技术进展之车用毫米波雷达
  2. 无锁数据结构二-乱序控制(栅栏)
  3. 重温2 在Activity中使用Menu
  4. 安卓* 系统级 Java*/C++ 代码调试
  5. nginx配置url重定向-反向代理
  6. c语言libjpeg处理图像,解决使用 libjpeg 保存图片时因磁盘写入失败导致程序退出的有关问题...
  7. 针式打印机打印发虚_针式打印机使用技巧
  8. 二、设置开发、运行环境 (基础教程2)
  9. dd wrt php,HG255D(DDWRT)挂载U盘安装emlog和Discuz!教程
  10. 诚邀参加“低噪声飞秒激光”( 上海交大)研讨会
  11. Flask 数据库迁移(详解)
  12. YAPI返回值怎么是html页面,Yapi部署
  13. Android:Canvas: trying to draw too large
  14. Php7.5,phpwind7.5灵活的业务支持体系
  15. go 并发goroutines,channal
  16. 快速获取SAS数据集观测数
  17. Openjudge NOI题库 ch0111/10 河中跳房子|NOIP2015 day2 stone
  18. 大数据时代,传输软件的优势与应用
  19. 入门级选手浅写一下关于前端的知识点
  20. PC端网站转换为webApp工具

热门文章

  1. 趣味故事掌握类和对象,关于鞋厂的大学问!
  2. 商业邮箱申请方法及建议
  3. 学生们能够使用计算机,学生用计算机基础复习题带答案.doc
  4. 智慧配煤解决方案,焦化行业产能提升解决方案
  5. 张一鸣:白手起家干到千亿身价,位列中国富豪第7位,只用了7年
  6. 黑莓7130G - 以惊人的特征的手机
  7. 操作系统原理_田丽华(2)操作系统结构
  8. GP技术的展望——先有鸿钧后有天 转自 longshanks
  9. (八十)第五章编程练习
  10. 重装Windows,只用53款全免费软件:下 (xbeta译)