zoukankan      html  css  js  c++  java
  • 如何将应用完美迁移至Android P版本

    Android P(API 级别 P)引入了行为变更以及您的应用中可加以利用的新功能和 API。本文概述了将应用迁移到 Android P 的两个关键阶段的步骤:

    1、确保兼容 Android P

    验证您的应用能够在新版本平台上全功能运行。在此阶段,您不需要使用新的 API,也不需要更改应用的 targetSdkVersion,但可能需要进行一些细微的更改。

    2、更新您的目标版本并使用 Android P 功能

    当您准备好利用平台的新功能时,将targetSdkVersion更新至“P”,验证应用是否仍可按预期方式运行,然后开始使用新的 API。

    如何将应用完美迁移至Android P版本

    Android P升级计划

    确保兼容 Android P

    此处的目标是确保您的现有应用在 Android P(API 级别 P)上照常运行。由于一些平台变化可能影响应用的行为方式,因此可能需要进行一些调整,但您不需要使用新的 API 或更改 targetSdkVersion。

    如何将应用完美迁移至Android P版本

     

    如何将应用完美迁移至Android P版本

     

     

    准备一台运行 Android P 的设备

    如果您有一台兼容设备(Pixel、Pixel XL、Pixel 2、Pixel 2XL),请从官网获取适合您的设备的Android P系统映像,然后按照说明将映像刷入设备。

    执行兼容性测试

    与 Android P(API级别P)的兼容性测试多半与您准备发布应用时执行的测试属于同一类型。

    不过,测试还有另一个层面:Android P 向 Android平台引入了一些变化,即便不对 targetSdkVersion 做任何变动,仍可能影响应用的行为或令其根本无法运行。因此,您必须回顾下表中的关键变化,并对任何为适应这些变化而实现的修复进行测试。

    • 对于非 SDK 接口的限制

    现已禁止访问特定的非 SDK 接口,无论是直接访问,还是通过 JNI 或反射进行间接访问。尝试访问受限制的接口将会生成 NoSuchFieldException 和 NoSuchMethodException 之类的错误。有关详情,请参阅对于非 SDK 接口的限制。

    • 移除加密提供程序

    从 Android P 开始,Crypto JCA 提供程序现已被移除。调用 SecureRandom.getInstance("SHA1PRNG", "Crypto") 将会引发 NoSuchProviderException。

    • 更严格的 UTF-8 解码器

    在 Android P 中,针对 Java 语言的 UTF-8 解码器比以往更严格,并且遵循 Unicode 标准。

    • 禁止空闲应用访问摄像头、麦克风和传感器

    在应用处于空闲状态时,不能再访问摄像头、麦克风或 SensorManager 传感器。

    测试 Android P 应用

    完成以上准备工作后,您就可以构建应用,然后对其做进一步测试,以确保 Android P(API 级别 P)为目标平台时它能正常工作。这时有必要再次回顾一下核心应用质量指南和测试最佳实践。

    如果您构建应用时将 targetSdkVersion设置为P,应该注意特定的平台变化。即便您不实现 Android P 中的新功能,其中的一些变化仍可能严重影响应用的行为或令其根本无法运行。

    • 前台服务权限

    现在,想要使用前台服务的应用必须首先请求 FOREGROUND_SERVICE 权限。这是普通权限,因此,系统会自动为请求权限的应用授予此权限。在未获得此权限的情况下启动前台服务将会引发 SecurityException。

    • 弃用 Bouncy Castle 加密

    Android P 弃用了几个来自 Bouncy Castle 提供程序中的加密技术,代之以由 Conscrypt 提供程序提供的加密技术。调用请求 Bouncy Castle 提供程序的 getInstance() 将会生成 NoSuchAlgorithmException 错误。要解决这些错误,请不要在 getInstance() 中指定提供程序(也就是请求默认实现)。

    • 移除对 Build.serial 的直接访问

    现在,需要 Build.serial 标识符的应用必须请求 READ_PHONE_STATE 权限,然后使用 Android P 中新增的新 Build.getSerial() 函数。

    • 不允许共享 WebView 数据目录

    现在,不允许应用在不同进程之间共享一个 WebView 数据目录。如果您的应用有多个进程使用 WebView、CookieManager 或 android.webkit 软件包中的任何其他 API,则在第二个进程调用 WebView 函数时,您的应用将会崩溃。

    • SELinux 禁止访问应用的数据目录

    系统强制每个应用的 SELinux 沙盒对每个应用的私有数据目录强制执行逐个应用的 SELinux 限制。现在,不允许直接通过路径访问其他应用的数据目录。应用可以继续使用进程间通信 (IPC) 机制(包括通过传递 FD)共享数据。

    兼容性解决方案

    如果您没有支持安卓P版本的兼容设备,可访问华为终端开放实验室云测平台,免费获取Pixel的使用权。

    平台拥有一套完善的移动应用DevOps解决方案,在谷歌IO大会之后,率先上线Android P DP2版本的Pixel机型,免费提供给安卓绿色联盟会员使用。

    在谷歌官方的解决方案基础上,从11项中测试并解决安卓P版本兼容性。

    安卓绿色联盟

     

  • 相关阅读:
    什么是webview
    juqery.fn.extend和jquery.extend
    LeetCode
    5. Longest Palindromic Substring
    42. Trapping Rain Water
    11. Container With Most Water
    621. Task Scheduler
    49. Group Anagrams
    739. Daily Temperatures
    3. Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/androidga/p/9100287.html
Copyright © 2011-2022 走看看