谷歌强制升级TargetSdkVersion适配指导,参考华为
谷歌强制升级TargetSdkVersion适配指导
谷歌发布的Android P版本对TargetSdkVersion参数提出了要求,华为终端开放实验室迅速对TOP3000应用展开检测,测试结果不容乐观:超过300个应用出现了兼容性问题,不兼容率超过十分之一。
那么,在 P 版本适配过程中开发者该如何解决由TargetSdkVersion引入的兼容性问题?下面由华为专家带您解读谷歌TargetSdkVersion<17适配指导。
1. 谷歌TargetSdkVersion特性背景
谷歌要求,在 P 版本中应用设置的TargetSdkVersion需要>=17,否则将弹出警告对话框来提示用户,并且谷歌有明确的CDD要求,该提示无法去除。
2. 适配指导
2.1 修改应用的TargetSdkVersion值
建议开发者将 TargetSdkVersion 设置成17+,如果认为 TargetSdkVersion 设置过高,适配工作量太大,也可以将 TargetSdkVersion 设置成17进行适配,此设置适配工作量最小。
2.2 兼容性问题
测试并解决由TargetSdkVersion引入的兼容性问题:开发者可参考谷歌提供的适配指导文档,并且需重点关注谷歌每个新版本中只对TargetSdkVersion 生效的变化和修改。
2.2.1 P版本
将应用迁移到Android P链接: https://developer.android.com/preview/migration
Android P功能和API链接:https://developer.android.com/preview/features
Android P行为变更 链接:https://developer.android.com/preview/behavior-changes
重点关注:
对于非SDK接口的限制,链接:https://developer.android.com/preview/restrictions-non-sdk-interfaces
刘海屏适配,链接:https://developer.android.com/preview/features#cutout
2.2.2 O版本
向Android 8.0迁移应用,链接:https://developer.android.com/about/versions/oreo/android-8.0-migration
Android 8.0功能和API,链接:https://developer.android.com/about/versions/oreo/android-8.0
重点关注:
Android 8.0行为变更,链接:https://developer.android.com/about/versions/oreo/android-8.0-changes
最大屏幕纵横比:如果应用设置 TargetSdkVersion>=26,那么在任何纵横比的屏幕都会默认全屏显示,开发者需注意不同比例屏幕的显示适配。以 Android 7.1(API 级别 25)或更低版本为目标平台的应用默认的最大屏幕纵横比为 1.86。针对 Android 8.0 或更高版本的应用没有默认的最大纵横比。如果您的应用需要设置最大纵横比,请使用定义您的操作组件清单文件中的 maxAspectRatio 属性。
后台执行限制:广播和后台服务管控,链接:https://developer.android.com/about/versions/oreo/background
其他:targetSdkVersion设置为“0”时影响应用的关键变化
变化 | 摘要 | 其他参考资料 |
隐私性 | Android 8.0不支持使用net.dns1、net.dns2、net.dns3或net.dns4系统属性。 |
行为变更: 隐私性 |
实行了可写且可执行的代码段 | 对于原生库,Android 8.0实行的规则是:数据不应可执行,代码不应可写。 |
行为变更: 原生库 |
ELF 标头和节验证 | 动态链接器对ELF标头和节头中的更多值进行检查,如果值无效则失败。 |
行为变更: 原生库 |
通知 | 以SDK的 Android 8.0版本为目标平台的应用必须实现一个或多个通知渠道,以便向用户发布通知。 |
API 概览: 通知 |
List.sort() 方法 | 该方法的实现不得再调用Collections.sort(),否则应用将因堆栈溢出而引发异常。 |
行为变更: 集合的处理 |
Collections.sort() 方法 | 在列表实现中,Collections.sort()现在会引发 ConcurrentModificationException。 |
行为变更: 集合的处理 |
2.2.3 N版本
Android 7.0行为变更,链接:https://developer.android.com/about/versions/nougat/android-7.0-changes
重点关注的特性变化:NDK 应用链接至平台库从 Android 7.0 开始,系统将阻止应用动态链接非公开 NDK 库,这种库可能会导致您的应用崩溃,下表描述的是根据应用使用的私有原生库及其目标 API 级别 (android:targetSdkVersion),应用预期显示的行为:
库 | 目标API级别 | N Developer Preview行为 | 最终Android N版本行为 | 未来的Android平台行为 |
公开NDK | 任意 | 合乎预期 | 合乎预期 | 合乎预期 |
私有 (暂时可访问的私有库) |
23 或更低 | 合乎预期,但您会在目标设备上收到一个logcat警告和一条消息。 | 合乎预期,但您会收到一个logcat警告。 | 运行时错误 |
私有 (暂时可访问的私有库) |
24 或更高 | 运行时错误 | 运行时错误 | 运行时错误 |
私有(其他) | 任意 | 运行时错误 | 运行时错误 | 运行时错误 |
2.2.4 M版本
Android 6.0变更,链接:https://developer.android.com/about/versions/marshmallow/android-6.0-changes
Android 6.0API,链接:https://developer.android.com/about/versions/marshmallow/android-6.0
Android 6.0测试指南,链接:https://developer.android.com/about/versions/marshmallow/android-6.0-testing
2.2.5 L版本
Android 5.1API,链接:https://developer.android.com/about/versions/android-5.1
Android 5.0API,链接:https://developer.android.com/about/versions/android-5.0
Android 5.0行为变更,链接:https://developer.android.com/about/versions/android-5.0-changes
2.2.6 K版本
Android 4.4API,链接:https://developer.android.com/about/versions/android-4.4
2.2.7 J版本
Android 4.3APIs,链接:https://developer.android.com/about/versions/android-4.3
Android 4.2APIs(API Level: 17),链接:https://developer.android.com/about/versions/android-4.2
Android 4.1APIs(API Level: 16), 链接:https://developer.android.com/about/versions/android-4.1
建议开发者多次对应用进行测试验证,避免引入新的兼容性问题。
3. 测试验证方法
3.1 刷P版本
购买谷歌 Pixel、Pixel XL、Pixel2、Pixel 2 XL,刷P版本进行测试。
3.1.1 版本下载
参考:https://developer.android.google.cn/preview/download
设备 | 下载链接 | SHA-256 校验和 |
Pixel | sailfish-ppp2.180412.013-factory-18f60ec5.zip | 18f60ec5d77dc44a2c80ca0819fe3ce3aaeba04cd35a58598b8352eb200b010a |
Pixel XL | marlin-ppp2.180412.013-factory-cf8ae2b1.zip | cf8ae2b1bfe6b9ba8ada311436c29e1cee731c16f1bf790cc36923faf96ee423 |
Pixel 2 | walleye-ppp2.180412.013-factory-6406b348.zip | 6406b348c6dc2349b1dcf33e1031043d3d0a2c3a065f64e0385d8ee6dacfbcbf |
Pixel 2 XL | taimen-ppp2.180412.013-factory-546fdc1f.zip | 546fdc1fa56d4d47f1c729688c8087d66d59ce831f01b08e28b67bb0320463cd |
DP2版本,需要将网页底部的显示语言修改为英文,中文显示的仍为DP1版本
3.1.2 刷机
刷机前需要退出之前登录的谷歌帐号。
1. 下载对应设备的压缩包并解压。
2. 手机连 USB 后,执行 adb reboot bootloader 命令。
3. 手机出现小机器人图案,并显示‘unlock’字样时,执行压缩包中的 bat 脚本。
4. 如果是“lock”字样:
(1)连续点击设置-版本号7次,打开开发人员选项;
(2)在开发人员选项中打开 OEM unlock;
(3)连接手机到电脑,执行 adb reboot bootloader 命令到小机器人界面;
(4)执行 fastboot oem unlock,手机就解锁了,再使用上面的刷机方法即可。
3.2 远程真机调试
新用户如需申请使用华为终端开放实验室的云测功能,需加入安卓绿色联盟,成为会员。可通过以下步骤申请:
1. 登录DevEco平台。
2. 使用所在公司尾缀的邮箱进行帐号注册。
3. 将您新申请的帐号、所在公司、个人姓名及电话、负责的应用名称发送至deveco@huawei.com,申请成为安卓绿色联盟会员,通过审核后,将为您开通使用权限。
4. 登录帐号选择真机进行远程调试。
5. 选择手机:Pixel
6. 点击“立即体验”,上传 APK 进行调试
3.3 使用谷歌模拟器验证
安装和配置 Android P SDK 和模拟器,参考:https://developer.android.google.cn/preview/setup-sdk
更多Android P版本精彩内容请关注安卓绿色联盟
谷歌强制升级TargetSdkVersion适配指导,参考华为相关推荐
- 全面屏适配,参考华为文档
华为全面屏适配技术指导 1. 全面屏介绍 1.1 全面屏定义 普通屏:纵横比为16:9,如1080x1920.1440x2560等,其比值为1.78,全面屏手机出现之前,Android中默认的最大屏幕 ...
- Android Q版本应用兼容性适配指导
目录 Android Q版本应用兼容性适配指导... 1 1. 背景说明... 4 2. 存储空间限制... 4 2.1背景 4 2.2兼容性影响... 5 2.3 适配指 ...
- 华为刘海屏手机安卓O版本适配指导,参考华为
华为刘海屏手机安卓O版本适配指导 1. 背景 刘海屏指的是手机屏幕正上方由于追求极致边框而采用的一种手机解决方案.因形似刘海儿而得名.也有一些其他叫法:挖孔屏.凹口屏等,本文档统一按照刘海屏来命名.市 ...
- Android 12 应用兼容性适配指导
一.兼容性调试工具 Android 11开始引入了新的工具,可针对Android新平台中的行为变更进行测试和调试.这些工具是兼容性框架的一部分,该框架使得开发者可通过开发者选项或adb命令单独打开和关 ...
- Android P版本非SDK接口管控特性,参考华为
Android P版本非SDK接口管控特性解读及适配指导 在Android P版本中,谷歌加入了非SDK接口使用限制,无论是通过调用.反射还是JNI等方式,开发者都无法对非SDK接口进行访问,此接口的 ...
- AndroidQ Scoped Storage终极适配指导
1 背景介绍 为了使用户能够更好地控制自己的文件,并限制文件混乱,AndroidQ修改了外部存储权限.这种外部存储的新特性被称为分区存储(Scoped Storage).官方翻译称为分区储存,也有称为 ...
- android 21什么手机,官宣:安卓10已发布!21款手机已适配,小米华为率先支持
原标题:官宣:安卓10已发布!21款手机已适配,小米华为率先支持 随着今天凌晨谷歌 I/O 大会的召开,Android Q 也就是安卓10正式官宣,新版的安卓10加入了诸多新手势,从 Home 键设计 ...
- Android 10 vivo,适配速度首次超过华为!vivo X27尝鲜Android 10,这一次真不一样
原标题:适配速度首次超过华为!vivo X27尝鲜Android 10,这一次真不一样 要说最近两天啥最火,必然要说到谷歌的I/O大会了!作为一名资深小极客,每年的谷歌IO大会都必然不会错过,今年在谷 ...
- 地理科学师范计算机,地理科学师范考研方向指导参考
地理科学师范考研方向指导参考 考研已经在准备当中,我们要想走好考研的第一步,就必须要了解专业方向,选择好专业和院校.小编为大家精心准备了地理科学师范考研方向,欢迎大家前来阅读. 全国研究生师范相关院校 ...
最新文章
- 比特币挖矿——区块链技术
- 以实用著称的《PHP与MySQL程序设计(第3版)》问世啦!
- 易语言逐条读access数据_易语言操作数据教程之ACCESS实战视频教程
- skywalking es7_SpringCloud下skywalking的快速入门
- JVM的内存结构,Eden和Survivor比例;JVM中一次完整的GC流程,对象如何晋升到老年代,说说你知道的几种主要的JVM参数;CMS 常见参数解析;.你知道哪几种垃圾收集器,各自的优缺点
- JS之this与语句分号问题v(**V**)v
- Very Deep Convolutional Networks for Large-scale Image Recognition(vggnet)
- 通用usb驱动libusb介绍和使用示例
- 超400万用户的Chrome截图插件下架始末
- 命令行模式下获取参数的方法
- Bzoj3065 带插入区间K小值
- ServletContext和ServletConfig
- Makefile常用模板
- Spring源码解析(一)下载及编译(版本5.2.x)
- java分布式框架-JDF
- SCI、EI、IEEE、检索网站的区别
- WH-1000XM3耳机怎么连接蓝牙
- 2.7.0 gitk 打不开 Error in startup script: unknown color name lime
- python上方菜单栏不见了_python tkinter-菜单栏
- vue项目的目录结构图及目录详解
热门文章
- 解决在VMware上安装windows10全屏有黑边的问题
- The 15th Chinese Northeast Collegiate Programming Contest部分题解
- win7打开桌面计算机很慢,Win7电脑反应慢如何解决?Win7电脑反应慢的解决方法
- java pack()
- python制作表白神器_关于python:用-Python-写个七夕表白神器
- 思博伦Spirent Testcenter交换机性能测试主要技术指标_丢帧率/吞吐量/转发速率之间的关系_双极未来
- 数字化转型对企业意味着什么?
- Pytorch 深度学习实战教程:今天,你垃圾分类了吗?
- 【100%通过率】华为OD机试真题 Python 实现【真正的密码】【2022.11 Q4 新题】
- 《数据仓库与数据挖掘》期末复习总结