483 字
2 分钟
开发日记 03 明文传输问题

一件很令我头疼的问题#

http 请求被拒绝#

由于安卓是默认禁止明文http请求,但是我在开发的时候,和大部分使用场景下,明文http请求都是常见的情况,所以我必须解决这个问题。

修改app.json配置明文传输#

在react native开发时(我使用的是expo框架),可以在app.json配置文件中添加以下内容来开启明文传输:

{
"expo": {
"android": {
"config": {
"usesCleartextTraffic": true
}
}
}
}

在构建安卓的时候,便会自动添加明文传输的配置到AndroidManifest.xml文件中:

<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>

这样便开启了安卓的明文http请求。

配置文件未更新#

配置明文传输是之后的事情,我在使用expo测试的时候没有任何问题,主要是因为expo go是已经硬编码了明文传输的配置,所以我在使用expo go测试的时候没有任何问题,但是在打包Release版本的时候,明文传输的配置就没有生效,导致在Release版本中http请求被拒绝。

折磨我好几天,最后才发现是配置文件未更新的问题。

百思不得其解,我明明已经设置了明文传输,但是打包后还是连不上,后来我尝试了https请求,发现是可以的,所以还是没有正确配置的原因。

问题解决#

后来我不断测试,并使用AI帮我一起分析,最后claude提到了,在第一次构建安卓文件后,即使后续修改了app.json配置文件,也需要重新构建才能生效。

我以为会自动更新,但是实际上需要重新构建才能生效。同时我也知道了expo go的环境和Release版本的环境是不同的,所以需要分别构建。

开发日记 03 明文传输问题
https://fuwari.vercel.app/posts/iceplayer/开发日记03/
作者
IceZheng
发布于
2025-12-07
许可协议
CC BY-NC-SA 4.0