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"
更多配置可參考 Google官方文檔 。
透明背景 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 是否成功。 |