Почему после обновления до Cordova Android 8 появляются ошибки net :: ERR_CLEARTEXT_NOT_PERMITTED? - PullRequest
0 голосов
/ 18 февраля 2019

После обновления до Cordova Android 8.0 я вижу net::ERR_CLEARTEXT_NOT_PERMITTED ошибки при попытке подключения к http:// целям.

Почему это так и как я могу решить эту проблему?

Ответы [ 7 ]

0 голосов
/ 19 июля 2019

Открытый текст здесь представляет незашифрованную информацию.Начиная с Android 9, приложения должны вызывать API-интерфейсы HTTPS, чтобы убедиться, что накануне происходит сброс.

Однако, если нам все еще нужно вызывать API-интерфейсы HTTP, мы можем сделать следующее:

Платформа: Ionic 4

Создайте файл с именем: network_security_config.xml в project-root / resources / android / 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...

Теперь должно работать.

0 голосов
/ 18 августа 2019

Вы должны добавить

<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>
0 голосов
/ 04 июля 2019

Старый ионный cli (4.2) вызывал проблему в моем случае, обновление до 5 решило проблему

0 голосов
/ 07 июня 2019

Для решения проблемы есть другой вариант.в файловых ресурсах / android / xml / network_security_config.xml.insert:

<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 необходим, но если у вас есть домен.просто добавьте домен.

0 голосов
/ 22 мая 2019

В config.xml нужно исправить две вещи. Поэтому правильным ответом должно быть добавление 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 исключена ошибка: несвязанный префикс.появится

0 голосов
/ 22 апреля 2019

Добавление следующего атрибута в открывающий тег работает для меня.Простая и корректная перезагрузка на эмуляторе 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">
0 голосов
/ 18 февраля 2019

Уровень API по умолчанию на платформе Cordova Android был обновлен.На устройстве 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">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...