アップグレードした後コルドバのAndroid 8.0、私は見ていますnet::ERR_CLEARTEXT_NOT_PERMITTED
に接続しようとするとエラーがhttp://
ターゲット。
それはなぜですか、どうすれば解決できますか?
アップグレードした後コルドバのAndroid 8.0、私は見ていますnet::ERR_CLEARTEXT_NOT_PERMITTED
に接続しようとするとエラーがhttp://
ターゲット。
それはなぜですか、どうすれば解決できますか?
回答:
Cordova AndroidプラットフォームのデフォルトのAPIレベルがアップグレードされました。Android 9デバイスでは、クリアテキスト通信はデフォルトで無効になっています。
クリアテキストコミュニケーションを再度許可するandroid:usesCleartextTraffic
には、application
タグのをに設定しますtrue
。
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
</edit-config>
</platform>
コメントに記載されているように、android
以前にXML名前空間を定義していない場合は、error: unbound prefix
ビルド中にを受け取ります。これは、次のようにwidget
同じのタグに追加する必要があることを示していますconfig.xml
。
<widget id="you-app-id" version="1.2.3"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
AndroidManifest.xml
Androidプロジェクトでに変更が加えられたことを確認しましたか?
config.xmlには2つの修正事項があるため、正しい答えはxmls:androidを追加することです。
<widget id="com.my.awesomeapp" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
さらに、設定を編集して以下を許可します:
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
</edit-config>
</platform>
手順1が回避される場合、エラー:バインドされていないプレフィックス。表示されます
ここの平文は暗号化されていない情報を表します。Android 9以降では、アプリでHTTPS APIを呼び出して、前夜に落ちないようにすることをお勧めします。
ただし、それでもHTTP APIを呼び出す必要がある場合は、以下を実行できます。
プラットフォーム:Ionic 4
project-root / resources / android / xmlの下にnetwork_security_config.xmlという名前のファイルを作成します
次の行を追加します。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain>ip-or-domain-name</domain>
</domain-config>
</network-security-config>
ここで、project-root / config.xmlで、次の行を更新します。
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:usesCleartextTraffic="true" />
<application android:networkSecurityConfig="@xml/network_security_config" />
</edit-config>
... other statements...
これで動作するはずです。
config.xml
、edit-config
タグの前にこの行を追加する必要があります:<resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
。ありがとう!
問題を解決するには、他のオプションがあります。ファイルresources / android / xml / network_security_config.xml内。インサート:
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<domain-config cleartextTrafficPermitted="true">
<domain>localhost</domain>
<domain includeSubdomains="true">192.168.7.213:8733</domain>
</domain-config>
</network-security-config>
私の場合、IPアドレスを使用しているので、base-configが必要ですが、ドメインがある場合。ドメインを追加するだけです。
私は本日この問題に遭遇し、Apache Cordovaアプリケーションに対してAndroid 9以降でクリアテキストトラフィックを手動で許可する手間を省く本当に気の利いたプラグインを見つけました。cordova-plugin-cleartextをインストールするだけで、プラグインがAndroidの舞台裏のすべてを処理します。
$ cordova plugin add cordova-plugin-cleartext
$ cordova prepare
$ cordova run android
数日間の苦労の後、これは私にとってはうまくいきます。これがあなたにとってもうまくいくことを願っています。
これを、コードの先頭にあるCONFIG.XMLに追加します。
<access origin="*" />
<allow-navigation href="*" />
そして、これはandroidプラットフォームの下です。
<edit-config file="app/src/main/AndroidManifest.xml"
mode="merge" target="/manifest/application"
xmlns:android="http://schemas.android.com/apk/res/android">
<application android:usesCleartextTraffic="true" />
<application android:networkSecurityConfig="@xml/network_security_config" />
</edit-config>
<resource-file src="resources/android/xml/network_security_config.xml"
target="app/src/main/res/xml/network_security_config.xml" />
このファイル「resources / android / 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>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">YOUR DOMAIN HERE/IP</domain>
</domain-config>
</network-security-config>
trust-anchors
タグは他のすべてのものを機能させるための最後のコンポーネントであるように思われました。
<widget>の開始タグ内に次の属性を追加すると、うまくいきました。Android 9エミュレータでは、シンプルでライブのリロードが正しく行われます。 xmlns:android = "http://schemas.android.com/apk/res/android"
<widget id="com.my.awesomeapp" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
edit-config
ます(unbound prefix
エラーを修正します)
追加する必要があります
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
に
resources / android / xml / network_security_config.xml
このような
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
</domain-config> </network-security-config>
以下は私のために働いた解決策です。更新したファイルは以下の通りです。
対応するファイルの変更は次のとおりです。
1. config.xml
config.xmlファイルの<application android:usesCleartextTraffic="true" />
タグ内に<edit-config>
タグを追加しました
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:usesCleartextTraffic="true" />
<application android:networkSecurityConfig="@xml/network_security_config" />
</edit-config>
...
<platform name="android">
2. network_security_config.xml
このファイルでは、プロジェクト要件に従って、<domain>
タグ内に2つのタグ<domain-config>
、メインドメインとサブドメインを追加しました
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">mywebsite.in</domain>
<domain includeSubdomains="true">api.mywebsite.in</domain>
</domain-config>
</network-security-config>
ヘルプを提供してくれた@Ashutoshに感謝します。
それが役に立てば幸い。
IONIC 5.4.13、cordova 9.0.0(cordova-lib@9.0.1)を使用しています
情報を繰り返しているかもしれませんが、プラグインを追加した後で問題が発生し始めました(まだわかりません)。上記のすべての組み合わせを試しましたが、何もうまくいきませんでした。追加して初めて機能し始めました:
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
プロジェクトに提出する
resources / android / xml / network_security_config.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>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">10.1.25.10</domain>
</domain-config>
</network-security-config>
ありがとうございます。
私の場合、古いionic cli(4.2)が問題を引き起こしていました。5に更新すると問題が解決します
このcordova-custom-config
プラグインを使用して、Android構成を管理しています。この場合の解決策は、に新しいcustom-preference
を追加することでしたconfig.xml
:
<platform name="android">
<preference name="orientation" value="portrait" />
<!-- ... other settings ... -->
<!-- Allow http connections (by default Android only allows https) -->
<!-- See: /programming/54752716/ -->
<custom-preference
name="android-manifest/application/@android:usesCleartextTraffic"
value="true" />
</platform>
これを開発ビルドでのみ行う方法を誰かが知っていますか?私はリリースビルドがこの設定を残してくれると嬉しいですfalse
。
(iOS構成buildType="debug"
でそれが提供されているようですが、これがAndroid構成に当てはまるかどうかはわかりません。)
@Der Hochstaplerソリューションに感謝します。
しかしIONIC 4ではプロジェクトconfig.xmlのいくつかのカスタマイズが私のために機能します
ウィジェットタグに行を追加する
<widget id="com.my.awesomeapp" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
この後、androidのPlatformタグで、いくつかの行をカスタマイズして以下
を確認しますnetworkSecurityConfigおよびresource-fileタグの後にusesCleartextTraffic = trueを追加します
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:networkSecurityConfig="@xml/network_security_config" />
</edit-config>
<resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
</edit-config>
</platform>
Ionic 4コンデンサプロジェクトで、テストのためにパッケージ化してAndroidフォンに展開すると、このエラーが発生しました。コンデンサを再インストールし、Androidプラットフォームを更新することで解決しました。
npm run build --prod --release
npx cap copy
npm install --save @capacitor/core @capacitor/cli
npx cap init
npx cap update android
npx cap open android
レガシーCordovaフレームワークでNPMおよびCordovaコマンドに問題がある場合。以下のオプションをお勧めします。
ファイルandroid / res / xml / network_security_config.xmlを作成します-
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">Your URL(ex: 127.0.0.1)</domain>
</domain-config>
</network-security-config>
AndroidManifest.xml-
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...>
...
</application>
</manifest>
次の解決策は私のために働いた-
goto resources/android/xml/network_security_config.xml
変更-
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">api.example.com(to be adjusted)</domain>
</domain-config>
</network-security-config>
error: unbound prefix.
Cordovaアプリケーションをビルドしようとしたときにエラー()が発生しました。解決策は、私のconfig.xml
ファイルに、ルート<widget>
要素に属性を追加することでしたxmlns:android="http://schemas.android.com/apk/res/android