旧バージョンの mPaaS ベースラインは、`targetSdkVersion` 26 までをサポートしています。`targetSdkVersion` 28 のサポートは、mPaaS バージョン 10.1.68.21 以降で利用可能です。アプリケーションを `targetSdkVersion` 28 にアップグレードするには、mPaaS プラグインを使用して SDK をバージョン 10.1.68.21 以降に更新してください。更新後、このドキュメントの手順に従ってコードを修正し、回帰テストを実施してください。
targetSdkVersion 28 への対応
targetSdkVersion の変更
AAR 統合方式
プロジェクトのメインモジュールの build.gradle ファイルで、`targetSdkVersion` プロパティを 28 に変更します。
Portal & Bundle 統合方式
Portal プロジェクトのメインモジュールの
build.gradleファイルで、`targetSdkVersion` プロパティを 28 に変更します。Bundle プロジェクトの `targetSdkVersion` を変更する必要はありませんが、Portal プロジェクトの `targetSdkVersion` より高くすることはできません。
一般的な構成
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 以降は HTTPS リクエストのみを許可します。`targetSdkVersion` を 28 に設定すると、Android 9.0 以降を実行しているデバイス上のアプリにこの制限が適用されます。ミニアプリ内のリクエストを含む HTTP リクエストを送信するには、networkSecurityConfig を構成して有効にする必要があります。
プロジェクトの
res/xmlディレクトリに、次の内容でnetwork_security_config.xmlファイルを作成します。Portal & Bundle 統合方式の場合は、このファイルを Portal プロジェクトに作成します。<?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>プロジェクトの
AndroidManifest.xmlファイルで、`application` ノードに次のプロパティを追加します。Portal & Bundle 統合方式の場合は、Portal プロジェクト内のファイルを変更します。android:networkSecurityConfig="@xml/network_security_config"
詳細については、Google の公式ドキュメントをご参照ください。
背景が透明なアクティビティの画面の向きを設定する際のクラッシュ
このセクションでは、Android 8.0 のシステムバグについて説明します。Android 8.0 を実行しているデバイスでは、`targetSdkVersion` が 26 より高く、背景が透明で画面の向きが固定されているアクティビティを開こうとすると、アプリがクラッシュします。このクラッシュをトリガーする特定の条件は次のとおりです。
アクティビティで使用されるテーマの
windowIsTranslucentまたはwindowIsFloating属性が true である。AndroidManifest.xmlでscreenOrientation属性が設定されているか、setRequestedOrientationメソッドが呼び出されている。
すべてのアクティビティをチェックして、これらの条件を満たしているかどうかを確認してください。カスタムスタイルに加えて、次のような一般的なシステムテーマも条件を満たすことに注意してください。
@android:style/Theme.Translucent.NoTitleBar
@android:style/Theme.Dialog推奨されるソリューション:
テーマが条件を満たすアクティビティについては、
AndroidManifest.xmlのscreenOrientation属性を削除し、代わりにsetRequestedOrientationメソッドを呼び出します。対応するアクティビティまたは親クラスで
setRequestedOrientationメソッドをオーバーライドし、try catch super.setRequestedOrientation()を基本ルールとします。@Override public void setRequestedOrientation(int requestedOrientation) { try { super.setRequestedOrientation(requestedOrientation); } catch (Exception ignore) { } }mPaaS が提供する
BaseActivity、BaseFragmentActivity、およびBaseAppCompatActivtiyは、setRequestedOrientationメソッドを基本ルールとして上書きされました。この回避策によりクラッシュは防止されます。ただし、Android 8.0 デバイスでは画面の向きのロックが失敗する可能性があります。画面が回転したときに、ライフサイクルの再起動によってメンバー変数が null になるなどの例外がアクティビティで発生しないことを確認してください。
関連する Android 8.0 のシステムソースコード:

回帰テスト
完全な回帰テストには、Android 9.0 以降を実行しているデバイスを含める必要があります。透明なアクティビティに関連するクラッシュの問題については、Android 8.0 デバイスで特定のテストを実行する必要があります。
回帰テスト中は、以下のコンポーネント機能を使用している場合、それらに特に注意してください。
コンポーネント | 検証項目 |
モバイルゲートウェイ | |
スキャン |
|
統合ストレージ |
|
共有 | Sina Weibo と QQ への共有が成功するかどうかを確認します。 |