阅读更多

0顶
0踩

编程语言
引用
译者|核子可乐
编辑|覃云

上个月,我们曾报道过Android 9.0 将禁止使用非官方 API,引起了开发者的热烈的讨论,时隔一个多月,Android 团队终于发声证实了这个说法,声称从 Android 9.0 开始,对非 SDK 的 API 的限制从 NDK 扩展到 Java,并表明这样做的目的是为了提高系统的稳定性,接下来,我们来看看他们是怎么说的。

谷歌声明全文

在 Android 系统当中,我们一直在寻找各种方法以尽可能保证理想的稳定性,从而改善用户与开发人员体验。本着这一思路,我们努力确保应用程序不使用非 SDK 接口,因为此类作法往往会导致用户遭遇崩溃,并给开发人员的紧急发布造成困扰。

在 Android N 当中,我们限制了 C/C++ 代码所能使用的符号组合。此项变更确保使用 C++ 代码的应用程序能够始终对接稳定的 NDK 接口,而不会因依赖于不稳定的非 NDK 接口而引发崩溃机率提升。从 Android 的下一个版本开始,我们将进一步扩展此类限制,从而涵盖 SDK 的 Java 语言接口以进一步巩固稳定性水平。

将带来哪些影响?

自 Android 的下一个版本开始,非 SDK 方法与字段的使用将受到限制,您将无法对其进行访问——无论通过直接、反射或者 JNI 等方式。如果加以尝试,您会看到 NoSuchFieldException 或者 NoSuchMethodException 等错误提示。

最初,此项限制主要涵盖使用率较低或并未得到实际使用的接口。我们在规划与设计工作当中,充分重视我们的开发者社区,并希望在解决用户及设备制造商所反馈的应用程序稳定性问题的同时,尽可能避免引入大幅度变更。如果您在实际开发当中存在一些能够迁移至 SDK 进行解决,但在技术层面存在挑战性的需求,我们将允许您继续使用原有方法,直到您逐步将应用程序更新至最新 API。

我们计划在未来的 Android 版本当中进一步扩大这些限制,为开发人员提供充分的迁移时间,同时长期发布警报通告,并在此期间收集与所需 SDK 接口相关的反馈意见。我们一直在强调使用非 SDK 接口的风险性影响——当我们重构代码以添加功能或修复 bug 时,使用非 SDK 接口可能在各类 Android 版本当中引发不可知的变化。因此,如果您的应用程序目前仍依赖于非 SDK 接口,则应尽快着手向 SDK 备选方案进行迁移。

由于 Java 语言与 C++ 在特性方面存在巨大差异,因此对 Java 语言的具体限制方式将与立足符号的 C++ 限制略有区别。您不应访问不属于我们 SDK 的类,同时亦需要确保仅使用各个类当中被纳入官方文档的部分。具体来讲,这意味着当您通过反射等语义与某个类进行交互时,所访问的方法或字段皆在 SDK 当中得以明确列出。

如果缺少 SDK 替代选项,该如何处理?

我们知道,某些应用程序所使用的非 SDK 接口可能还找不到可行的 SDK 替代选项。我们非常重视您对于公共 API 扩展及改进方面提出的反馈意见。如果您确信在 SDK API 得到对应扩展之前无法停止使用非 SDK 接口,请通过我们的 bug 追踪器提供相关信息。及时获取这些反馈意见对我们来说非常重要,我们需要利用这部分资讯继续调整限制黑名单,从而最大限度降低此次迁移对开发人员的影响,同时着手为未来将陆续推出的各 Android 系统平台开发一切必要的替代方案。

接下来将发生哪些变化?

在下一个 Android 开发者预览版当中,您将能够运行现有应用程序,并在使用非 SDK 接口时收到警告提示——该接口将在最终版本中受到黑名单或灰名单机制的限制。请确保您的应用在开发者预览版中始终遵循最佳实践 ; 另外,如果您担心自己的应用可能受到影响,请特别关注接口兼容性警告信息。

利用即将推出的开发者预览版与新的 bug 追踪器目录,我们将专注于监控非 SDK 接口的使用情况。如果相关接口已经拥有官方支持的 SDK 替代选项,我们将发布官方指南以帮助您了解如何从非 SDK 接口迁移至官方支持方案。
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Android9.0 如何区分SDK接口和非 SDK接口

    尽管您目前仍可以使用灰名单中的某些非 SDK 接口(取决于您应用的目标 API 级别),但是如果您使用任何非 SDK 方法或字段,终归存在很可能会损坏应用的风险。接口的行为所对应的回调,并且可以在其中实现自定义处理...

  • Android针对非SDK接口的限制(基于Android 10)

      从 Android 9(API 级别 28)开始,此平台对应用能使用的非 SDK 接口实施了限制。只要应用引用非 SDK 接口或尝试使用反射或 JNI 来获取其句柄,这些限制就适用。这些限制旨在帮助提升用户体验和开发者体验,为...

  • Android9.0 如何精准区分SDK接口和非 SDK接口

    不太了解 “非SDK接口” 是什么意思,而且现在的大部分系统都升级上来了,**黑名单、灰名单和白名单*,android9.0有什么限制?apache的http也有限制?StrictMode ?veridex工具检测?应用在通过反射等机制与类互动时...

  • Android非SDK接口检测工具--veridex在window 10的使用

    非SDK接口限制在Android P中就已提出,但是在Q中,被限制的接口的分类有较大变化。 针对非 SDK 接口的限制官网说明 2.非SDK接口介绍 为了确保应用稳定性和兼容性,Android 平台开始限制您的应用可在 Android 9...

  • Android 11 行为变更:有关限制非 SDK 接口的更新

    Android 11 包含更新后的受限制非 SDK 接口列表(基于与 Android 开发者之间的协作以及最新的内部测试)。在限制使用非 SDK 接口之前,我们会尽可能确保提供公开替代方案。 如果您的应用并非以 Android 11 为目标...

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

    关于P-OSV中非公开API(非 SDK 接口)的限制及搜索方式,做了以下整理。...主要目的是通过减少使用非SDK接口来提升APP的稳定性。   2、非公开API的分类 非公开API分为3个List,由谷歌人工维护。 具体分类如下:...

  • Android 统计分析 SDK使用指南

    1.建立App,下载SDK 登录你的帐号后,看到友盟的管理后台,点击"+添加新应用",进入新应用信息填写的页面。在新应用信息填写中,请尽量填写真实的信息。App建立成功后,可以获得该App的AppKey,以及最新的开发...

  • Android SDK开发艺术探索实践

    作者:brucevanfdm链接:https://zhuanlan.zhihu.com/p/151406299这是作者实际生产中的 SDK 经验,非常宝贵的经验,系列一共七篇,我分上下两...

  • 神策分析 Android SDK 网络模块解析 | 数据采集

    一、前言 在信息化时代,数据成为...神策分析 Android SDK 针对数据传输,从完整性、正确性以及高效性等多方面综合考虑,设计并实现了一套适用于数据采集的网络传输方案。下面针对神策分析 Android SDK 网络模块..

  • Android第三方SDK集成 —— 极光推送

    总之呢,集成第三方SDK,都不是很难的事情,仔细阅读文档,一步步来,遇到Bug,慢慢解决就行,实在解决不了,可以问问客服小哥哥或者小姐姐,重要的是,你得有着解决它的决心和耐心。 《一》J...

  • Android targetSDK升级到28,gradle升级4.6遇到的问题

      最近看友盟上app使用的设备统计,Android8.1以上的用户超过60%,于是想把targetSDK直接从26改成28,这样就可以更好地适配8.1的用户。但是遇到了如下一些问题,以及最终黑白灰名单的问题无法确认完全搞定,于是...

  • Android 14 又来了?别扶!抬起我来吧!

    虽然目前 Android 14 还没有发布稳定版版,但现在已经是 Beta 版本了,之后 API 这些也不会进行大的变动的,剩下的应该就是性能上的一些优化了,大家可以放心进行查看。其实上面描述的都可以在官方文档中找到,我...

  • 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

    - 1.1 使用方便 - 1.2 通用性强 - 1.3 速度快 - 1.4 可采用总线供电 2. 手机USB接口通信原理 - 2.1 常见手机USB接口 - 2.2 通信过程 - 2.3 体系架构 2.4软件层次 3. 手机USB接口与外设通信方案 - 3.1 USB...

  • 【Android SDK 开发】安卓开发常用工具和第三方库汇总

    原文地址:...今天在这里我会谈论各种 Android 库:它们各自的优点,缺点和其他相关知识。目的是高效地概述尽可能多的库,这样,当你遇到一个问题的时候,你...

  • Android 各 API Level 权限变更和功能限制汇总

    Android 各 API Level 权限变更和功能限制汇总 文章目录信息访问限制序列号不可重置的设备标识符MAC 地址涉及位置信息的 telephony、WLAN、Bluetooth APIAndroid 8WLANAndroid 9TelephonyWLANAndroid ...

  • Google - Android 12 更新预览

    本文主要摘取字Google官方文档关于 Android 12 Beta 版相关修改和变更介绍,手动整理,如有错误,欢迎指正

  • [Android Framework]客户定制接口如何绕开系统权限管控

    之前关于一些需要系统级权限的接口也都是通过将apk进行系统签名的方式来实现的,虽然这种做法也并无不妥,但是仔细考虑了一下应该还是有其他方式可以让apk与系统的耦合度变的更低的。(大不了就是在其他机器上调用不...

  • Android Target 31 升级全攻略 —— 记阿里首个超级 App 的坎坷升级之路

    作者:杨夕凯、张炅轩 简述 Android Target 版本作为应用和系统版本间的“协议”与“桥梁”,在厂商预装合作、应用商店曝光、开放能力方面都是一个重要衡量标准,近年来谷歌和手机厂商对于 Target 升级的推动速度和...

  • Android 12应用适配指南

    Android 12应用适配指南1.Android 12上的主要变更1.1 兼容性1.1.1 前台服务启动限制1.1.2 前台服务通知延迟1.1.3 待处理 intent 必须声明可变性1.1.4 非SDK接口名单更新1.2 用户体验1.2.1 接收内容的统一API1.2.2 ...

  • 一款面向 AIoT 场景的分布式多模数据库产品,支持在同一实例同时建立时序库和关系库并融合处理多模数据

    KWDB 是一款面向 AIoT 场景的分布式多模数据库产品,支持在同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。

Global site tag (gtag.js) - Google Analytics