据 Android Central,谷歌在安卓开发者博客上更新文章,推出了几项新的规定,极可能会对安卓生态有新的影响。其中一条:从 2018 年 8 月开始,所有向 Play 商店提交的 APP 都必须面向 Android Oreo ( 安卓 8.0/8.1 等 ) 开发 。

对于这个最新的系统,谷歌强调,Android Oreo 拥有更好的安全性,同时8.1系统中还新增画中画、桌面角标、通知分组等功能。另外,Android 8.1续航还进行了特别的优化,谷歌加入了后台程序强力监控,提升了整体续航能力。

听起来确实很赞,但是这也给开发者带来了新的挑战。不过不要慌,这就为大家奉上吃“奥利奥”的正确姿势,希望对开发者们有所帮助。

Android 8.1适配规范

兼容性适配

安装、卸载正常

应用核心功能无卡死、停止运行、闪退、无响应等异常现象

UI显示正常

登录账号正常(含第三方登录)

卡顿、耗电适配

功耗:

待机功耗 <= 8mA

运行场景功耗 <= 400mA

性能:

应用启动速度 <= 1500ms

资源加载速度 <= 4000ms

FPS帧率 >= 25帧且不得连续丢3帧

Android 8.1常见问题及处理方式

1

三方加固

问题描述: 由于android 8.1在art部分的变动, 导致很多三方加固出现兼容性问题。

快速定位: 目前已知问题的错误都有比较明显的对应so报错, 此外如果您发现ClassNotFoundException等异常堆栈, 也很有可能是脱壳异常造成的问题。

解决方案: 使用最新三方加固的应用, 请务必更新到最新的加固版本。

2

altas框架

问题描述: 使用atlas框架较低版本的用户, 在android 8.1上存在兼容性问题, 会导致应用100%崩溃。

快速定位: libdexinterpret.so会报出地址异常。

解决方案: 目前atlas开发者已经更新兼容android 8.1的libdexinterpret.so, 请及时更新。

3

registerContentObserver使用

问题描述: 在您的版本升级到8.1及以上, 如果您使用的registerContentObserver无法在系统中指定到对应provider, 将会造成程序崩溃。

快速定位: 该问题发生会打印出java.lang.SecurityException: Failed to find provider***的异常堆栈。

解决方案: 在应用版本升级到android 8.1以上后, 请务必保证您使用的registerContentObserver能指向有效的provider。

4

notification channel

问题描述: android O新特性, 开发者将应用升级到8.1后, 使用notification时, 需要自行定义notification channel, 否则你的notificaiton将不会生效。

快速定位: 能在log找到No Channel found for ***的相关提示log。

解决方案: 仔细阅读谷歌的官方文档, 参照其修改即可。

5

DexPathList类

问题描述: 部分应用反射使用此类, 调用makePathElements这类内部接口, 在android 8.1可能会造成您的程序异常。

解决方案: 请修改您的程序, 不要再尝试使用此方法调用谷歌已经弃用的接口

6

后台执行限制

应用在两个方面受到限制:

后台服务限制:

处于后台空闲状态时,应用可以使用的后台服务存在限制。限制包括应用后台服务会被stop,后台应用创建不了后台服务等。

广播限制:

除了有限的例外情况,应用无法在AndroidManifest.xml清单中为隐式广播注册广播接收器,但可以在运行时注册这些广播,并且可以使用清单注册专门针对它们的显式广播。

如果您在适配Android 8.1过程中遇到其他无法解决的问题,欢迎留言讨论。

android适老化开发 安卓开发适配_android