谷歌强制升级TargetSdkVersion适配指导,参考华为

谷歌强制升级TargetSdkVersion适配指导

谷歌发布的Android P版本对TargetSdkVersion参数提出了要求,华为终端开放实验室迅速对TOP3000应用展开检测,测试结果不容乐观:超过300个应用出现了兼容性问题,不兼容率超过十分之一。

那么,在 P 版本适配过程中开发者该如何解决由TargetSdkVersion引入的兼容性问题?下面由华为专家带您解读谷歌TargetSdkVersion<17适配指导。

1. 谷歌TargetSdkVersion特性背景

谷歌要求,在 P 版本中应用设置的TargetSdkVersion需要>=17,否则将弹出警告对话框来提示用户,并且谷歌有明确的CDD要求,该提示无法去除。

t1.jpg

2. 适配指导

2.1 修改应用的TargetSdkVersion值

t2.png

建议开发者将 TargetSdkVersion 设置成17+,如果认为 TargetSdkVersion 设置过高,适配工作量太大,也可以将 TargetSdkVersion 设置成17进行适配,此设置适配工作量最小。

2.2 兼容性问题

测试并解决由TargetSdkVersion引入的兼容性问题:开发者可参考谷歌提供的适配指导文档,并且需重点关注谷歌每个新版本中只对TargetSdkVersion 生效的变化和修改。

2.2.1 P版本

  1. 将应用迁移到Android P链接: https://developer.android.com/preview/migration

  2. Android P功能和API链接:https://developer.android.com/preview/features

  3. Android P行为变更 链接:https://developer.android.com/preview/behavior-changes

重点关注:

  1. 对于非SDK接口的限制,链接:https://developer.android.com/preview/restrictions-non-sdk-interfaces

  2. 刘海屏适配,链接:https://developer.android.com/preview/features#cutout

2.2.2 O版本

  1. 向Android 8.0迁移应用,链接:https://developer.android.com/about/versions/oreo/android-8.0-migration

  2. Android 8.0功能和API,链接:https://developer.android.com/about/versions/oreo/android-8.0

重点关注:

  1. Android 8.0行为变更,链接:https://developer.android.com/about/versions/oreo/android-8.0-changes

  2. 最大屏幕纵横比:如果应用设置 TargetSdkVersion>=26,那么在任何纵横比的屏幕都会默认全屏显示,开发者需注意不同比例屏幕的显示适配。以 Android 7.1(API 级别 25)或更低版本为目标平台的应用默认的最大屏幕纵横比为 1.86。针对 Android 8.0 或更高版本的应用没有默认的最大纵横比。如果您的应用需要设置最大纵横比,请使用定义您的操作组件清单文件中的 maxAspectRatio 属性。

  3. 后台执行限制:广播和后台服务管控,链接:https://developer.android.com/about/versions/oreo/background

  4. 其他: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版本

  1. Android 6.0变更,链接:https://developer.android.com/about/versions/marshmallow/android-6.0-changes

  2. Android 6.0API,链接:https://developer.android.com/about/versions/marshmallow/android-6.0

  3. Android 6.0测试指南,链接:https://developer.android.com/about/versions/marshmallow/android-6.0-testing

2.2.5 L版本

  1. Android 5.1API,链接:https://developer.android.com/about/versions/android-5.1

  2. Android 5.0API,链接:https://developer.android.com/about/versions/android-5.0

  3. Android 5.0行为变更,链接:https://developer.android.com/about/versions/android-5.0-changes

2.2.6 K版本

  1. Android 4.4API,链接:https://developer.android.com/about/versions/android-4.4

2.2.7 J版本

  1. Android 4.3APIs,链接:https://developer.android.com/about/versions/android-4.3

  2. Android 4.2APIs(API Level: 17),链接:https://developer.android.com/about/versions/android-4.2

  3. 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

  a8.png

 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. 将您新申请的帐号、所在公司、个人姓名及电话、负责的应用名称发送至[email protected],申请成为安卓绿色联盟会员,通过审核后,将为您开通使用权限。

4. 登录帐号选择真机进行远程调试。

a9.png

5. 选择手机:Pixel

a10.png

6. 点击“立即体验”,上传 APK 进行调试

a11.png

3.3 使用谷歌模拟器验证

安装和配置 Android P SDK 和模拟器,参考:https://developer.android.google.cn/preview/setup-sdk

更多Android P版本精彩内容请关注安卓绿色联盟

猜你喜欢

转载自blog.csdn.net/qq_19822039/article/details/83537739