.
Ontem, um dos usuários do Android me enviou um e-mail e descreveu seu problema. Quando inicio o aplicativo no emulador, ele trava, e assim que verifiquei os logs, constatou que “Tráfego HTTP de texto não criptografado * não é permitido,” e por causa disso, não consigo testar a funcionalidade do meu aplicativo.
Isso é um problema real no sentido que descrevi ou estou fazendo algo errado? Então, por favor, me ajude a resolver esse problema e ficarei grato a você.
Pelo correio, retornei a solução para ele e seu problema foi resolvido. Depois disso, pensei que deveria escrever uma solução para esse problema, porque mais pessoas podem enfrentar esse problema ao acessar conexões HTTP.
Método para corrigir o tráfego HTTP Cleartext não permitido
Esse problema pode ser resolvido com vários métodos, portanto, primeiro começaremos com as etapas de menor desempenho e, em seguida, aumentaremos gradualmente a complexidade.
Em vez de usar HTTP, use HTTPS
A maneira mais simples de corrigir isso é usar um HTTPS conexão sobre HTTP. Como você sabe, uma conexão HTTP não é uma maneira segura de fazer um handshake com uma conexão. Isso traz muitos riscos, então, para evitar isso, o Android não recomenda o uso de uma conexão HTTP após o lançamento do Android Marshmallow.
Para evitar isso, basta ir ao arquivo onde você declarou explicitamente seu IP endereço e, se possível, alterá-lo para HTTPS sobre HTTP e execute o aplicativo.
estou testando o appwrite ferramenta de back-end em meu host local e usando meu telefone celular para testar a funcionalidade, portanto, para acessar o host local, preciso encaminhar a conexão usando ngrok.
Sei que este não é um exemplo apropriado, mas para fins de compreensão, mostrei onde e como modificar o arquivo.

Depois de fazer alterações significativas, execute seu aplicativo pressionando Shift + F10e você descobrirá que seu aplicativo funcionará sem erros.
Adicione useCleartextTraffic=”true” em AndroidManifest.xml
O que fazer quando você não tem um HTTPS conexão? Tudo bem, nós temos uma solução para isso. Você só precisa adicionar a solteiro atributo para o AndroidManifest.xml arquivo que permitirá que você use HTTP conexões em seu Android aplicativo.
Abra o AndroidManifest.xml arquivo e sob o
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android_name="android.permission.INTERNET" />
<application
android_allowBackup="true"
...
...
******** SNIPPED OUT ************
android_usesCleartextTraffic="true" >
<activity
android_name=".MainActivity"
android_exported="true">
******** SNIPPED OUT ************
Agora execute seu aplicativo.
Crie res/xml/network_security_config.xml e modifique AndroidManifest.xml
Se você deseja obter mais controle sobre a rede, esse método funcionará para você, porque aqui você pode adicionar uma lista de URLs para usar cleartextTraffic e fazer uso de CAs (autoridades de certificação) personalizadas, fixação de certificados e muitos outros aspectos importantes .
você pode se referir a Configuração de segurança de rede aprender mais.
Em primeiro lugar, você precisa criar um network_security_config arquivo no XML diretório sob o res diretório, e acredito que você saiba como fazer isso, então é por isso que estou pulando as etapas básicas.
Dentro de network_security_config.xmlcopie e cole o trecho de código abaixo e substitua o nome de domínio pelo nome real.
network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">example.domain.name</domain>
</domain-config>
</network-security-config>
Adicione a linha destacada em AndroidManifest.xml para especificar o arquivo de configuração de rede sob o
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application
android:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
</manifest>
Este método falhará se você estiver trabalhando em um ambiente de host local ou usando uma conexão HTTP como eu.
Como resultado, este aplicativo falhará com a mensagem de erro “Comunicação CLEARTEXT para ac50-122-177-251-224.ngrok.io não permitida pela política de segurança de rede”.
Para resolver esse problema, adicione o
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">ac50-122-177-251-224.ngrok.io/v1</domain>
</domain-config>
</network-security-config>


Depois de fazer as seguintes alterações, você pode executar seus aplicativos para testar os recursos de trabalho.
Por que esse erro ocorreu e o que é texto não criptografado?
O motivo desse erro é a implementação da política de rede, que não permite usar conexões HTTP para criar uma conexão segura para transmitir dados pela rede. Até o Android Nougat, você pode usar uma conexão HTTP sem fazer alterações, mas depois disso, não poderá até fazer as alterações necessárias.
E sua última pergunta sobre texto simples: em termos simples, texto ou dados aquilo é não criptografado é conhecido como “Texto claro”, que pode ser facilmente lido por qualquer pessoa enquanto passa pela rede.
Embrulhar
Isso é tudo para resolver Tráfego HTTP claro não permitido no Android.
Como discutimos vários métodos para resolver o erro acima, cabe a você decidir qual método prefere corrigir, desde que o Google recomende o uso de uma conexão HTTPS.
Você pode acompanhar o codelab para saber mais sobre o Codelab de configuração de segurança de rede do Android.

Um homem com uma tecnologia efusiva que explorou algumas das incríveis coisas da tecnologia e está explorando mais. Enquanto avançava, tive a chance de trabalhar no desenvolvimento Android, Linux, AWS e DevOps com várias ferramentas de código aberto.
.






