谷歌强制升级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 校验和
Pixelsailfish-ppp2.180412.013-factory-18f60ec5.zip18f60ec5d77dc44a2c80ca0819fe3ce3aaeba04cd35a58598b8352eb200b010a
Pixel XLmarlin-ppp2.180412.013-factory-cf8ae2b1.zipcf8ae2b1bfe6b9ba8ada311436c29e1cee731c16f1bf790cc36923faf96ee423
Pixel 2walleye-ppp2.180412.013-factory-6406b348.zip 6406b348c6dc2349b1dcf33e1031043d3d0a2c3a065f64e0385d8ee6dacfbcbf
Pixel 2 XLtaimen-ppp2.180412.013-factory-546fdc1f.zip546fdc1fa56d4d47f1c729688c8087d66d59ce831f01b08e28b67bb0320463cd

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

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版本精彩内容请关注安卓绿色联盟

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值