Когда я запускаете приложение на эмуляторе, оно падает, и при проверки журналов, выходит сообщение:“Cleartext HTTP traffic is * not allowed”.. По этой причине вы не можете проверить функциональность своего приложения.
Способ исправить незашифрованный HTTP-трафик
Эта проблема может быть решена несколькими методами, поэтому сначала мы начнем с наименее эффективных шагов и постепенно увеличим сложность.
Вместо использования HTTP используйте HTTPS
Самый простой способ исправить это-использовать HTTPS-соединение через HTTP. Как вы знаете, HTTP-соединение не является безопасным способом соединения. Он несет в себе много рисков, поэтому, чтобы избежать этого, Android не рекомендует использовать HTTP-соединение после выпуска Android Marshmallow.
Чтобы избежать этого, просто перейдите в файл, где вы явно объявили свой IP -адрес, и, если возможно, измените его на HTTPS и запустите приложение.
тест инструмента appwrite backend на локальном хосте и мобильный телефон для тестирования функциональности, для localhost нужно переслать соединение с помощью ngrok.
Ради понимания я показал вам, где и как изменить файл.
После внесения изменений запустите приложение, нажав Shift + F10, и вы обнаружите, что ваше приложение будет работать без каких-либо ошибок.
Добавить usesCleartextTraffic=”true” в AndroidManifest.xml
Что делать, если у вас нет HTTPS -соединения? Хорошо, у нас есть решение для этого. Вам просто нужно добавить один атрибут в AndroidManifest.xml файл, который позволит вам использовать HTTP-соединения в вашем приложении Android.
Откройте AndroidManifest.xml файл и под тегом <application> добавьте строку, android:usesCleartextTraffic=”true” она включает HTTP - соединение, которое по умолчанию отключено после выпуска Marshmallow.
Теперь запустите приложение.
Создать res/xml/network_security_config.xml и изменить AndroidManifest.xml
Если вы хотите получить больше контроля над сетью, то этот метод для вас, потому что здесь вы можете добавить список URL-адресов для использования cleartextTraffic и использовать пользовательские CAS (центры сертификации), закрепление сертификатов и многие другие важные аспекты.
Прежде всего, вам нужно создать файл network_security_config в каталоге XML в каталоге RES.
Внутри network_security_config.xml, скопируйте и вставьте приведенный ниже фрагмент кода и измените доменное имя на фактическое имя.
Добавьте выделенную строку в AndroidManifest.xml чтобы указать файл конфигурации сети под тегом <application>.
Этот метод не сработает, если вы работаете в среде localhost или используете HTTP-соединение.
В результате это приложение выйдет из строя с сообщением об ошибке “CLEARTEXT communication to ac50-122-177-251-224.ngrok.io not permitted by network security policy”.
Чтобы решить эту проблему, добавьте тег <base-config> в network_security_config.xml с cleartextTrafficPermitted=”true”.
После внесения следующих изменений вы можете запустить свои приложения, чтобы проверить рабочие функции.
Почему возникла эта ошибка и что такое cleartext ?
Причиной этой ошибки является реализация сетевой политики, которая не позволяет использовать HTTP-соединения для создания безопасного соединения для передачи данных по сети. До Android Nougat вы можете использовать HTTP-соединение без внесения каких-либо изменений, но после этого вы не сможете, пока не внесете необходимые изменения.
И ваш последний вопрос о cleartext: это проще говоря, текст или данные, которые не зашифрованы, известны как “открытый текст”, который может быть легко прочитан кем угодно при прохождении через сеть.
Завершение
Вот и все, чтобы разрешить использовать HTTP-трафик с открытым текстом, не разрешенный в Android.
Поскольку мы обсудили несколько методов устранения вышеуказанной ошибки, вам решать, какой метод вы предпочитаете использовать, если Google рекомендует использовать HTTPS-соединение.