すべてのプロダクト
Search
ドキュメントセンター

Mobile Platform as a Service:targetsdkversion 28 への対応

最終更新日:Jan 17, 2025

以前の mPaaS 標準ベースラインは、targetSdkVersion に最大 26 までしか対応していませんでした。ただし、10.1.68.21 以降では targetSdkVersion のサポートが追加されています。アプリで targetSdkVersion を 29 にアップグレードする必要がある場合は、「mPaaS プラグインを使用する」をご参照ください。SDK を 10.1.68.21 以降に更新し、以下の説明に従って構成を追加して、関連機能に戻ってください。

SDK と関連構成の更新については、「mPaaS のマルチ CPU アーキテクチャのサポート」をご参照ください。

targetSdkVersion 28 への対応

targetSdkVersion の変更

AAR

プロジェクトのメインモジュールにある build.gradle ファイルで、属性 targetSdkVersion を 28 に変更します。

Portal&Bundle

  • Portal プロジェクトのメインモジュールにある build.gradle ファイルで、属性 targetSdkVersion を 28 に変更します。

  • Bundle プロジェクトの targetSdkVersion は変更せずにそのままにすることができますが、Portal プロジェクトの targetSdkVersion より後にすることはできません。

共通構成

AAR

プロジェクトの AndroidManifest.xml を変更し、アプリケーションノードの下に次のコードを追加します。

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

Portal&Bundle

Portal プロジェクトの AndroidManifest.xml を変更します。

  • アプリケーションノードの下に次のコードを追加します。

    <uses-library android:name="org.apache.http.legacy" android:required="false"/>
  • SDK はコードで設定するように変更されていることに注意してください。LauncherActivity から次の属性を削除する必要があります。

    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 で画面の向きを設定するとクラッシュが発生する

この対応ポイントは、Android 8.0 のバグです。 Android 8.0 デバイスでは、アプリケーションの targetSdkVersion が 26 より大きい場合、透明な背景の Activity を開くと、画面の向きが設定されているとクラッシュが発生します。具体的なトリガー条件は次のとおりです。

  • Activity で使用されているテーマの windowIsTranslucent または windowIsFloating の属性が true である。

  • AndroidManifest.xmlscreenOrientation 属性が設定されているか、setRequestedOrientation メソッドが呼び出されている。

すべての Activity がトリガー条件を満たしているかどうかを確認する必要があります。また、カスタムスタイルに加えて、いくつかの一般的なシステムテーマも条件を満たしていることに注意してください。例:

@android:style/Theme.Translucent.NoTitleBar
@android:style/Theme.Dialog

推奨される対応:

  1. テーマが条件を満たす Activity については、AndroidManifest.xmlscreenOrientation 属性を削除し、代わりに setRequestedOrientation メソッドを呼び出します。

  2. 対応する Activity または親クラスの setRequestedOrientation メソッドをオーバーライドします。基本ルールとして try catch super.setRequestedOrientation() を使用します。

    @Override
     public void setRequestedOrientation(int requestedOrientation) {
         try {
             super.setRequestedOrientation(requestedOrientation);
         } catch (Exception ignore) {
    
         }
     }
  3. mPaaS によって提供される BaseActivityBaseFragmentActivity、および BaseAppCompatActivtiy は、setRequestedOrientation メソッドを基本ルールとしてオーバーライドされました。

  4. 画面の回転によって Activity に例外が発生しないようにしてください。これはクラッシュを防ぐことはできますが、Android 8.0 デバイスで向きのロックが失敗する可能性があります。たとえば、ライフサイクルを再実行すると、一部のメンバー変数が空になります。

Android 8.0 システムに関連するソースコード:

Android 8.0 bug

回帰テスト

完全な回帰テストには、Android 9.0 以降のデバイスを含める必要があります。透明な背景に対する Activity の画面の向き設定におけるクラッシュの問題については、Android 8.0 モデルで具体的なテストを実施してください。

回帰テストでは、使用されている場合は、次のコンポーネント機能に焦点を当てる必要があります。

コンポーネント

検証プロジェクト

モバイル ゲートウェイ

- 署名検証 を有効にした後、RPC 呼び出しが成功するかどうか。

- データ暗号化 を有効にした後、RPC 呼び出しが成功するかどうか。

スキャン

- 標準 UI でコードが正常にスキャンされるかどうか。

- 標準 UI で携帯電話のアルバムが開き、写真が撮影され、プレビューが正しく表示されるかどうか。

- カスタム UI が成功した場合は、「新しい API の一部を対応させる」必要があります。

統合データ ストレージ

- データベース暗号化ストレージ が正常に機能するかどうか。

- ファイル暗号化ストレージ が正常に機能するかどうか。

共有

- 新浪微博または QQ での共有 が正常に機能するかどうか。