📜  capcitor FERR_CLEARTEXT_NOT_PERMITTED - Java (1)

📅  最后修改于: 2023-12-03 15:14:05.872000             🧑  作者: Mango

Capacitor FERR_CLEARTEXT_NOT_PERMITTED - Java

如果你在开发使用Java的Capacitor应用程序时遇到“FERR_CLEARTEXT_NOT_PERMITTED”错误,那么你来到了正确的地方。在本篇文章中,我们将介绍这个错误的含义,以及如何解决它。

错误含义

“FERR_CLEARTEXT_NOT_PERMITTED”错误是由安卓9(Android 9)引入的。Android 9 自带了一个可选的设置,该设置限制了未加密的网络流量。如果你的应用程序尝试访问未加密的网络资源,即使用 HTTP 协议而不是 HTTPS 协议,那么就会出现这个错误。

解决方案

为了解决这个问题,你需要执行以下步骤:

  1. 在你的项目的 AndroidManifest.xml 文件中添加以下代码:
<application android:usesCleartextTraffic="true">

这个设置将允许应用程序使用未加密的网络流量。

  1. 如果你的应用程序使用的是 OkHttp3 客户端,那么你需要将以下代码片段添加到你的 OkHttpClient.Builder 中:
ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
                .tlsVersions(TlsVersion.TLS_1_2)
                .build();
        OkHttpClient.Builder builder = new OkHttpClient.Builder()
                .connectionSpecs(Collections.singletonList(spec));

这个设置将强制客户端使用 TLS 1.2 或更高版本的协议进行通信,从而遵守加密标准。

结论

在开发 Capcitor 应用程序时,这个错误是一个常见的问题。但是通过遵循以上的解决方案,你可以轻松地解决这个问题并成功运行你的应用程序。