🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### **[向 Android 8.0 迁移应用](https://developer.android.com/about/versions/oreo/android-8.0-migration.html)** Android 8.0 引入了若干新的功能和 API,并加入了即便您未对应用做任何更改仍可能对其行为产生影响的一些变动。为帮助您做好准备,本页面将说明如何执行兼容性测试,以及如何更新应用以便利用 Android 8.0 的新功能: 1. 确保平台兼容性 验证您的应用能够在新版本平台上全功能运行。在此阶段,您不需要使用新的 API,也不需要更改应用的 targetSdkVersion,但可能需要进行一些细微的更改。 2. 使用 Android 8.0 SDK 构建应用 当您准备好利用平台的新功能时,将 targetSdkVersion 更新至“O”,验证应用是否仍可按预期方式运行,然后开始使用新的 API。 ![](https://box.kancloud.cn/62616a458a0cb9de5d34ec02262d227b_574x263.png) #### **确保平台兼容性** 这一步的目标是确保应用在 Android 8.0 上可照常运行。由于一些平台变化可能影响应用的行为方式,因此可能需要进行一些调整,但您不需要使用新的 API 或更改 targetSdkVersion。 ![](https://box.kancloud.cn/595564af505fa4ca94ac171055ba8cc0_562x532.png) #### **准备一台运行 Android 8.0 的设备** * 如果您有一台兼容设备(Pixel、Pixel XL、Pixel C、Nexus 5X、Nexus 6P 或 Nexus Player),请从下载页面获得适合您的设备的 Android 8.0 系统映像,然后按照说明将映像刷入设备。 * 或下载适用于 Android Emulator 的 Android 8.0 系统映像。它列于 SDK 管理器的 Android 8.0 Preview 下,显示为 Google APIs Intel x86 Atom System Image。 > 注:Android 8.0 系统映像只能通过 Android Studio 3.0 Canary 下载。如需了解详细信息,请参阅下面一节以获取 Android 8.0 SDK。 #### **执行兼容性测试** 与 Android 8.0 的兼容性测试多半与您准备发布应用时执行的测试属于同一类型。这时有必要回顾一下核心应用质量准则和测试最佳做法。 不过,测试还有另一个层面:Android 8.0 向 Android 平台引入了一些变化,即便不对 targetSdkVersion 做任何变动,仍可能影响应用的行为或令其根本无法运行。因此,您必须回顾表 1 中的关键变化,并对任何为适应这些变化而实现的修复进行测试。 表 1. 对运行在 Android 8.0 设备上的所有应用都有影响的关键变化。 ![](https://box.kancloud.cn/3768b80c1c02b5e020dd795cbb238a0d_941x392.png) 如需查看更详尽的 Android 8.0 行为变更列表,另请参阅 Android 8.0 行为变更。 #### **构建具有 Android 8.0 功能的应用** 如表 2 所述,除了提供新的 API 外,Android 8.0 还会在您更新 targetSdkVersion 时引发其他行为变更。本节说明如何将开发环境设置为以新平台为目标,以及如何着手构建和测试 Android 8.0 API 带来的变化和新功能。 > 注:上述旨在确保平台兼容性的步骤是面向 Android 8.0 构建应用的先决条件,因此请您务必先完成这些步骤。 ![](https://box.kancloud.cn/039cd4f9faeff2f68e24133763e92218_584x781.png) #### **获取 Android 8.0 SDK** 1. 安装 Android Studio 3.0 Canary。 只有 Android Studio 3.0 包含对 Android 8.0 提供的所有新开发者功能的支持。因此您需要获得 Android Studio 3.0 Canary 版本,以便开始使用 Android 8.0 SDK。但您仍可保留已安装的 Android Studio 稳定版。 2. 启动 Android Studio 3.0,然后点击 Tools > Android > SDK Manager 打开 SDK 管理器。 3. 在 SDK Platforms 标签中,选中 Show Package Details。在 Android 8.0 Preview 下选中下列项: * Android SDK Platform O * Google APIs Intel x86 Atom System Image(只需在使用模拟器时选中) 4. 切换到 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 5. 点击 OK 安装所有选定的 SDK 软件包。 现在您就可以开始使用 Android 8.0 进行开发了。 #### **更新构建配置** 将 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 8.0 repositories { maven { url 'https://maven.google.com' } } ~~~ > 您不能在此配置下发布应用。“O”版本是一个临时 API 级别,只能用于 Android 8.0 期间的开发和测试。您必须等到最终 API 级别发布时再发布 Android 8.0 变更,届时再次更新配置。 #### **从清单文件中移除广播接收器** 由于 Android 8.0 引入了新的广播接收器限制,因此您应该移除所有为隐式广播 Intent 注册的广播接收器。将它们留在原位并不会在构建时或运行时令应用失效,但当应用运行在 Android 8.0 上时它们不起任何作用。 显式广播 Intent(只有您的应用可以响应的 Intent)在 Android 8.0 上仍以相同方式工作。 这个新增限制有一些例外情况。如需查看在以 Android 8.0 为目标平台的应用中仍然有效的隐式广播的列表,请参阅隐式广播例外。 #### **测试 Android 8.0 应用** 完成以上准备工作后,您就可以构建应用,然后对其做进一步测试,以确保 Android 8.0 为目标平台时它能正常工作。这时有必要回顾一下核心应用质量准则和测试最佳做法。 如果您构建应用时设置了适用于 Android 8.0 的 targetSdkVersion,应该注意特定的平台变化。即便您不实现 Android 8.0 中的新功能,其中的一些变化仍可能严重影响应用的行为或令其根本无法运行。 表 2 列出了这些变化以及可获得更多信息的链接。 表 2. targetSdkVersion 设置为“O”时影响应用的关键变化。 ![](https://box.kancloud.cn/4bfcae8bb315be6e6f721c7ce303ee78_940x329.png) 如需查看更详尽的 Android 8.0 行为变更列表,请参阅 [Android 8.0 行为变更](https://developer.android.com/preview/behavior-changes.html)。 要想探究 Android 8.0 提供的新功能和新 API,请参阅 [Android 8.0 功能和 API](https://developer.android.com/preview/api-overview.html)。