Android O 迁移应用官方指南
来源:互联网 发布:侠客风云传mac版 编辑:程序博客网 时间:2024/05/16 14:39
Android O 引入了若干新的功能和 API,并加入了即便您未对应用做任何更改仍可能对其行为产生影响的一些变动。为帮助您做好准备,本文将说明如何执行兼容性测试,以及如何更新应用以便利用 Android O 的新功能:
确保平台兼容性
验证您的应用能够在新版本平台上全功能运行。在此阶段,您不需要使用新的 API,也不需要更改应用的 targetSdkVersion,但可能需要进行一些细微的更改。
使用 Android O SDK 构建应用
当您准备好利用平台的新功能时,将 targetSdkVersion 更新至 “O”,验证应用是否仍可按预期方式运行,然后开始使用新的 API。
确保平台兼容性
这一步的目标是确保应用在 Android O 上可照常运行。由于一些平台变化可能影响应用的行为方式,因此可能需要进行一些调整,但您不需要使用新的 API 或更改 targetSdkVersion。
准备一台运行 Android O 的设备
如果您有一台兼容设备(Pixel、Pixel XL、Pixel C、Nexus 5X、Nexus 6P 或 Nexus Player),请从下面链接中包含的下载页面获得适合您的设备的 Android O 系统映像,然后按照说明将映像刷入设备。
(https://developer.android.google.cn/preview/download.html)
或下载适用于 Android Emulator 的 Android O 系统映像。它列于 SDK 管理器的 Android O Preview 下,显示为 Google APIs Intel x86 Atom System Image。
注:Android O 系统映像只能通过 Android Studio 3.0 Canary 下载。如需了解详细信息,请参阅下面一节以获取 Android O SDK。
执行兼容性测试
与 Android O 的兼容性测试多半与您准备发布应用时执行的测试属于同一类型。这时有必要回顾一下核心应用质量准则和测试最佳做法。
核心应用质量准则:
(https://developer.android.google.cn/develop/quality-guidelines/core-app-quality.html)
测试最佳做法:
(https://developer.android.google.cn/training/testing/index.html)
不过,测试还有另一个层面:Android O 向 Android 平台引入了一些变化,即便不对 targetSdkVersion 做任何变动,仍可能影响应用的行为或令其根本无法运行。因此,您必须回顾表 1 中的关键变化,并对任何为适应这些变化而实现的修复进行测试。
表 1. 对运行在 Android O 设备上的所有应用都有影响的关键变化。
net.hostname
查询 net.hostname
系统属性返回的结果为空。无send(DatagramPacket)
引发新异常如果之前执行的 connect(InetAddress, int)
方法失败,send(DatagramPacket)
方法会引发 SocketException
。行为变更:网络连接和 HTTP(S) 连接AbstractCollection
方法引发正常的 NullPointerException
现在,AbstractCollection.removeAll(null)
和 AbstractCollection.retainAll(null)
始终引发 NullPointerException
;之前,当集合为空时不会引发 NullPointerException
。此项变更使行为符合文档要求。行为变更:集合的处理Currency.getDisplayName(null)
引发正常的 NullPointerException
调用 Currency.getDisplayName(null)
会引发 NullPointerException
。行为变更:语言区域和国际化如需查看更详尽的 Android O 行为变更列表,另请参阅以下链接中包含的 Android O 行为变更。
(https://developer.android.google.cn/preview/behavior-changes.html)
构建具有 Android O 功能的应用
如 “如何测试 Android O 应用” 章节中的表 2 所述,除了提供新的 API 外,Android O 还会在您更新 targetSdkVersion 时引发其他行为变更。本节说明如何将开发环境设置为以新平台为目标,以及如何着手构建和测试 Android O API 带来的变化和新功能。
注:上述旨在确保平台兼容性的步骤是面向 Android O 构建应用的先决条件,因此请您务必先完成这些步骤。
获取 Android O SDK
安装 Android Studio 3.0 Canary。
只有 Android Studio 3.0 包含对 Android O 提供的所有新开发者功能的支持。因此您需要获得 Android Studio 3.0 Canary 版本,以便开始使用 Android O SDK。但您仍可保留已安装的 Android Studio 稳定版。
启动 Android Studio 3.0,然后点击 Tools > Android > SDK Manager 打开 SDK 管理器。
在 SDK Platforms 标签中,选中 Show Package Details。在 Android O Preview 下选中下列项:
Android SDK Platform O
Google APIs Intel x86 Atom System Image(只需在使用模拟器时选中)
切换到 SDK Tools 标签,选中所有已提供更新的项(点击每个显示破折号 的复选框)。这应该包括下列必需项:
Android SDK Build-Tools 26.0.0(rc2 或更高版本)
Android SDK Platform-Tools 26.0.0(rc2 或更高版本)
Android Emulator 26.0.0
Support Repository
点击 OK 安装所有选定的 SDK 软件包。
现在您就可以开始使用 Android O Developer Preview 进行开发了。
更新构建配置
将 compileSdkVersion、buildToolsVersion、targetSdkVersion 和 Support Library 版本更新为下列版本:
android { compileSdkVersion 'android-O' buildToolsVersion '26.0.0-rc2' defaultConfig { targetSdkVersion 'O' } ...}dependencies { compile 'com.android.support:appcompat-v7:26.0.0-beta1'}// REQUIRED: Google's new Maven repo is required for the latest// support library that is compatible with Android Orepositories { maven { url 'https://maven.google.com' }}
您不能在此配置下发布应用。“O” 版本是一个临时 API 级别,只能用于 Android O Developer Preview 期间的开发和测试。您必须等到最终 API 级别发布时再发布 Android O 变更,届时再次更新配置。
从清单文件中移除广播接收器
由于 Android O 引入了新的广播接收器限制,因此您应该移除所有为隐式广播 Intent 注册的广播接收器。将它们留在原位并不会在构建时或运行时令应用失效,但当应用
运行在 Android O 上时它们不起任何作用。
显式广播 Intent(只有您的应用可以响应的 Intent)在 Android O 上仍以相同方式工作。
这个新增限制有一些例外情况。如需查看在以 Android O 为目标平台的应用中仍然有效的隐式广播的列表,请通过点击以下链接参阅隐式广播例外。
(https://developer.android.google.cn/preview/features/background-broadcasts.html)
测试 Android O 应用
完成以上准备工作后,您就可以构建应用,然后对其做进一步测试,以确保 Android O 为目标平台时它能正常工作。这时您可以再次查阅我们的核心应用质量准则和测试最佳做法说明文档。
如果您构建应用时设置了适用于 Android O 的 targetSdkVersion,应该注意特定的平台变化。即便您不实现 Android O 中的新功能,其中的一些变化仍可能严重影响应用的行为或令其根本无法运行。
表 2 列出了这些变化以及可获得更多信息的链接。
表 2. targetSdkVersion 设置为 “O” 时影响应用的关键变化。
List.sort()
方法该方法的实现不得再调用 Collections.sort()
,否则应用将因堆栈溢出而引发异常。行为变更:集合的处理Collections.sort()
方法在列表实现中,Collections.sort()
现在会引发 ConcurrentModificationException
。行为变更:集合的处理- Android O 迁移应用官方指南
- Android O 迁移应用官方指南
- 向 Android O 迁移应用
- 向 Android O 迁移应用
- Android O 行为变更官方指南
- Android官方开发指南-应用基础(Application Fundamentals)
- Android O 迁移测试:Room
- Android O 开发指南
- 【cocos2d-x官方文档】Cocos2d-x v2.0迁移指南
- Android官方开发指南-Activity
- Android官方开发指南-Loaders
- Android官方架构组件指南
- 官方API指南之应用基础知识
- Google 官方推出应用开发架构指南
- 支付宝安全支付服务Android应用开发指南(摘取官方文档)
- 【凯子哥带你夯实应用层】Android的Google官方设计指南(上)
- 谷歌官方Android应用架构库——App 架构指南
- Google官方Android O和kotlin Demo
- 谷歌浏览器(Chrome)禁止浏览器缓存 设置
- gulp-- gulp-jshint
- Homebrew安装与使用
- 前端传奇人物
- iOS:SVN出错 Description : The working copy is locked due to a previous error.
- Android O 迁移应用官方指南
- iOS基石——常用的SDK框架
- numpy.transpose难点解析
- 我的java第一步
- poi 导出 Excel
- ZooKeeper—master选举(笔记)
- Fast ICP的VS2010实现
- RaspberryPi sudo apt-get update "E: Some index files failed to download..."
- js实现日期加减,求出时间差