すべてのアプリケーションがデフォルトのHTTPSを使用し、これは、元のHTTPリクエストが不正だったにつながる:北京では2018年8月7日に、GoogleはAndroidの9.0(API 28)、コードネームの新機能である「パイ」をリリースしました。もちろん、開発者はtargetSdkVersionは26に設定することができますが、今年のGoogle Playストアアプリの新しい要件がtargetSdkVersionは、アプリケーションがHTTPSを適応しなければならないことを、28に設定し提出しなければなりません。
カウンターへの対策に関するポリシーがあります。諺に。ここでは、Android 9.0(APIレベル28)のHttp適応の問題を解決する方法について説明します。3つの解決策があります。
-
APPの使用HTTPS要求(サーバーのサポートを必要とします)
-
targetSdkVersion 27以下まで(27を含みます)
-
Androidのネットワークセキュリティ設定は、ネットワークのセキュリティに応じてカスタマイズします
HTTPS要求(サーバーのサポートを必要とする)に、APPスイッチ
APPは、すべてのHTTP要求はHTTPSを交換している、これは最も完全な解決策は、正規軍のラインと考えることができているが、これは少量の作業ではありません、あなたはまた、サーバーのサポートが必要になります、それは、HTTPは、サーバ・インタフェースがそうでなければ、HTTPSをも交換されている要求のすべてです新しいプロジェクトや重要なプロジェクトでは、無効である、そうすることをお勧めします。
二、targetSdkVersion 27以下まで(27を含みます)
compileSdkVersion 26 defaultConfig { minSdkVersionが19 targetSdkVersion 26 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" }
(27を含む)を27以下にダウンtargetSdkVersion、GoogleがAPI 28(2019.08スタート)を必要とする新しいアプリケーションのための店を再生するが、そのようなBATなど国内の主要アプリケーションプラットフォームは、基本的には唯一のAPI 26を必要とする、またはこのポリシーの最後に行くことができますが、 、これだけ国内市場を有効にするには、それが対象となりますバージョンは、また、一定の期間のために26に設定されています。
第三に、彼らのネットワークのセキュリティ設定をカスタマイズします
このプロジェクトは、HTTPインターフェイスを使用する必要があり、Googleのプレイストア上にある必要があり、海外市場に関与している場合、私はもちろん、同じ効果を得ることができ、ネットワークのセキュリティ設定を構成することによって、対処する方法がありますされ、非常に矛盾を感じます。
APIのターゲットは中build.gradleに設定します。
compileSdkVersion 28 defaultConfig { minSdkVersionが19 targetSdkVersion 28 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" }
networkSecurityConfigプロパティを設定内のアプリケーションのラベルのマニフェストファイルのAndroidManifest.xmlで、次のとおりです。
<アプリケーション ... アンドロイド:allowBackup = "true"の アンドロイド:アイコン= "$ {} app_icon" アンドロイド:ラベル= "@文字列/ APP_NAME" アンドロイド:networkSecurityConfig = "@のXML / network_security_config" ...> </アプリケーション>
resディレクトリの下に新しいXMLフォルダ、次のようにXMLファイルnetwork_security_config.xmlを作成します。
<?xml version = "1.0"エンコード= "UTF-8"?> <ネットワークセキュリティ設定> <ベースコンフィグcleartextTrafficPermitted = "TRUE" /> </ネットワークセキュリティ設定>
若しくは
<?xml version = "1.0"エンコード= "UTF-8"?> <ネットワークセキュリティ-config>の <base-configはcleartextTrafficPermitted = "真"> <信頼アンカー> <証明書のSRC = "システム" /> </信頼アンカー> </ベース-config>の </ネットワーク・セキュリティ設定>