后续更新 | 减小使用非 SDK 接口以提高稳定性

做者: 软件工程师 David Brazdi 和 Nicolas Geoffrayandroid

在 Android 生态中,咱们很是重视为用户和开发者提供最好的体验。每一次版本更新都会引入新的功能,助力开发者打造完美的用户体验;然而,咱们发现一些应用开发者在开发过程当中调用了非 SDK 接口,致使用户频繁遭遇应用不兼容甚至崩溃,并给开发者带来紧急发布补丁等困扰。咱们但愿能作得更好,所以须要各位开发者的共同协助,来确保每一个 Android 新版本的稳定性。

三个月前,咱们宣布从 Android P 开始限制非 SDK 接口的使用。咱们知道这些限制可能对您的应用发布形成影响,所以咱们为开发者提供了相关工具用以检测违规调用,帮助各位在计划中预留充足时间,针对谷歌新发布的政策调整,并向咱们提供反馈。api

在开发者预览版和 Beta 1 版本中,咱们经过多种方式告知了开发者这些限制对应用形成的影响。 在开发者预览版中,被限制 API 的调用信息会被记录在日志中,并显示相应的 Toast 警告;而在 Beta 1 版本中,开发者能够经过使用 StrictMode 检测非 SDK 接口的调用,并自行记录日志消息。好比: 工具

咱们理解应用调用非 SDK 接口有不少缘由,而确保您的应用可以继续在 Android P 上顺利运行对咱们而言很是重要。咱们十分感谢不少开发者经过 错误追踪器 (issue tracker) 进行反馈并详细解释对一些非 SDK 接口的需求。对于大部分的请求,咱们已将相关的非 SDK 接口添加至灰名单,从而暂时豁免了它们在 Android P 上的限制。同时,咱们团队也投入了大量资源,在百万个应用上运行静态分析,同时处理数千份来自内外部 beta 测试人员的自动生成报告。借助分析结果,咱们识别出了更多应用依赖的非 SDK 接口,并相应地对 灰名单进行了增补。此外,咱们将会在将来发布的系统版本中,探讨是否存在公有 SDK 来替代灰名单中的接口。不过,咱们或许仍然漏掉了一些正在被使用的非 SDK 接口。所以,为了将应用不兼容的风险降至最低,targetSdkVersion 为 Android Oreo 或更低的应用依旧能够调用大部分非 SDK 接口。

总而言之,在 Android P 上运行的应用会受到非 SDK 接口使用限制。若是您的目标版本为 Android P,请查看灰名单中包含的仍然能够调用的非 SDK 接口,灰名单之外的非 SDK 接口均不可调用。若是应用的目标版本为 Android Oreo 或更低,大部分的限制会被豁免,可是若是调用的非 SDK 接口不在灰名单中,那么应用会在 logcat 中收到警告信息 (对用户不可见)。测试

请您在咱们新发布的 Beta 2 版本上进行测试,并使用 StrictMode 来检测仍在使用的非 SDK 接口。请注意:Beta 2 版本和最终稳定版对非 SDK 接口的使用限制基本一致。您可在文章下方留言,提出您在开发过程当中遇到的相关问题或分享您的想法。google

点击查看《对于非 SDK 接口的限制》文档了解详细信息 3d

相关文章
相关标签/搜索