我有一个实时工作的宁静API,它返回用nodeJS创建并上传到WebServer的JSON数据。另外,我正在使用react native来为android和iOS构建前端。当我使用'react-native run-android'在android中构建应用的调试版本时,api可以正常工作并返回预期的数据。但是,当我使用“ cd android && ./gradlew assembleRelease”在android中构建发行版时,该应用似乎无法从API提取数据。我的应用程序在节点服务器上找不到任何匹配。 我将axios用于我的http请求。
答案 0 :(得分:0)
我的问题已解决。根据Google的官方文档,只有使用有效SSL证书的安全域才能向Web服务器请求。要强制来自不安全域或具有自签名证书的域的HTTP请求,只需在其中添加文件
“ yourProject / android / app / src / main / res / xml / network_security_config.xml”
具有以下内容-
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<!-- For React Native Hot-reloading system -->
<!-- If you are running on a device insert your computer IP -->
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">your own domain ip</domain>
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</domain-config>
<base-config cleartextTrafficPermitted="false" />
</network-security-config>
,然后通过在应用程序标记之间将这一行添加到AndroidManifest.xml中来导入xml文件-
<application...
android:networkSecurityConfig="@xml/network_security_config"
...>
答案 1 :(得分:0)
在 android/app/src/main/AndroidManifest.xml 中添加 android:usesCleartextTraffic="true"
对我来说效果很好。我们可能还想在 debug 文件夹(main 的同级)中添加用于开发目的。