据 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 过程中遇到其他无法解决的问题,欢迎留言讨论。
如 你有好的文章想和大家分享欢迎投稿,直接向我投递文章链接即可Java 和 Android 架构
微信扫描或者点击下方二维码领取 Android\Python\AI\Java 等高级进阶资源
关注后回复 "百度"、"阿里"、"腾讯"、"资源" 有惊喜公众号:JANiubility
欢迎加入我们的 Java 和 Android 架构圈,已有近 1000 人加入学习交流,更多学习资源更新,更多交流进步更多学习资料点击下面的 " 阅读原文 " 获取来源: http://blog.csdn.net/xJ032w2j4cCjhOW8s8/article/details/78927957