mPaaS 旧版基线对 targetSdkVersion 最高仅支持到 26。从 10.1.68.21 开始,mPaaS 增加了对 targetSdkVersion 28 的支持。如果您的应用需要将 targetSdkVersion 升级到 28,请使用 mPaaS 插件 将 SDK 更新到 10.1.68.21 或以上版本,并按照下文进行适配和回归相关功能。
适配 targetSdkVersion 28
修改 targetSdkVersion
AAR 接入方式
在工程主 module 下的 build.gradle
文件中修改属性 targetSdkVersion 28。
Portal & Bundle 接入方式
在 Portal 工程主 module 下的
build.gradle
文件中修改属性 targetSdkVersion 28。在 Bundle 工程中的 targetSdkVersion 可不修改,但不得高于 Portal 工程。
通用配置
AAR 接入方式
修改工程 AndroidManifest.xml
,在 application 节点下添加如下代码:
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
Portal & Bundle 接入方式
修改 Portal 工程 AndroidManifest.xml
:
在 application 节点下添加如下代码:
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
从 LauncherActivity 删除以下属性(SDK 已改为通过代码设置):
android:screenOrientation="portrait"
其他配置
允许 HTTP 请求
Android 9.0 的网络配置默认禁止了 HTTP 请求,只允许 HTTPS 请求,设置 targetSdkVersion 28 将在 9.0+ 设备上启用 9.0 的网络配置。如果您仍然需要发送 HTTP 请求(包括小程序中),可通过配置 networkSecurityConfig
开启。
在工程(Portal&Bundle 为 Portal 工程)的
res/xml
目录下创建network_security_config.xml
文件,内容如下:<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> </trust-anchors> </base-config> </network-security-config>
在工程(Portal & Bundle 为 Portal 工程)的
AndroidManifest.xml
中的application
节点添加属性:android:networkSecurityConfig="@xml/network_security_config"
更多配置可参考 谷歌官方文档 。
透明背景 Activity 设置屏幕方向 crash
该适配点为 Android 8.0 系统 bug。在 8.0 设备上,当应用 targetSdkVersion > 26 时,透明背景的 Activity 如果设置了屏幕方向,打开该 Activity 就会触发 crash。触发具体条件为:
Activity 使用的 theme 中
windowIsTranslucent
或windowIsFloating
属性为true
。在
AndroidManifest.xml
中设置了screenOrientation
属性,或调用了setRequestedOrientation
方法。
您需要检查所有 Activity 是否满足触发条件,同时除了您自定义的 style 外,请注意部分常用的系统 theme 也满足条件,例如:
@android:style/Theme.Translucent.NoTitleBar
@android:style/Theme.Dialog
推荐适配方式:
对于 theme 满足条件的 Activity,删除
AndroidManifest.xml
中的screenOrientation
属性,改为调用setRequestedOrientation
方法。在对应 Activity 或父类中重写
setRequestedOrientation
方法,try catch super.setRequestedOrientation()
兜底:@Override public void setRequestedOrientation(int requestedOrientation) { try { super.setRequestedOrientation(requestedOrientation); } catch (Exception ignore) { } }
mPaaS 提供的
BaseActivity
、BaseFragmentActivity
、BaseAppCompatActivtiy
均已重写setRequestedOrientation
方法兜底。完成上述适配后,虽可避免 crash,但仍可能出现在 Android 8.0 设备上锁定方向失效的情况,请确保您的 Activity 不会因旋转屏幕发生异常(例如重走生命周期导致某些成员变量为空)。
Android 8.0 系统相关源码:
回归测试
全量回归测试的设备中必须包含 Android 9.0 以上版本的设备,同时对于透明背景 Activity 设置屏幕方向 crash 问题,请在 Android 8.0 机型上专项测试。
回归测试中您需要重点关注以下组件功能(如果使用):
组件 | 验证项目 |
移动网关 | |
热修复 | 热修复 是否能够生效。 |
扫一扫 |
|
统一存储 | |
分享 | 分享到新浪微博、QQ 是否成功。 |