React Native Android 应用在发布版中无法正常运行

10
我使用React Native制作了一个应用程序,该应用程序连接到我创建的API。我按照这些步骤:https://facebook.github.io/react-native/docs/signed-apk-android,现在如果我运行react-native run-android --variant=release,该应用程序无法工作。应用程序已安装,但是我不能在应用程序中登录。有没有办法查看是否有任何错误或其他问题?
我尝试搜索一种方法,即使variant为release,也可以显示调试控制台,但我找不到任何内容。
我希望该应用程序能像非release变体的应用程序一样正常工作。

这是一个HTTP还是HTTPS请求? - Sanyam Jain
这是一个HTTP请求。 - Darius Biro
当您在设备上拥有发布版本时,请将其插入并打开LogCat。选择您的设备,选择与您的应用程序匹配的捆绑标识符。在崩溃时,您将收到堆栈跟踪。您能否将堆栈跟踪粘贴到您的问题中? - Dan
5个回答

34

也许你需要在AndroidManifest.xml文件中的application标签内添加android:usesCleartextTraffic="true"

像这样:

<application
  ...
  android:usesCleartextTraffic="true"
  ...
>
   ...
</application>

我修改完后,需要执行gradlew assembleRelease吗?还是只需使用run-android --variant=release重新运行即可?我不确定它的工作原理...这是我的第一个应用程序。 - Darius Biro
只需运行-android - SmoggeR_js
1
哦,我的天啊...非常感谢...我一整天都在尝试这个...非常感谢...现在我还有一个问题,你能帮我吗?既然我添加了这个,我是否需要执行所有步骤<a href='https://facebook.github.io/react-native/docs/signed-apk-android'>here</a>,还是会自动保存? - Darius Biro
很高兴听到这个消息!关于第二个问题,如果你完成了所有的步骤,你只需要通过assembleRelease创建一个新的APK,并上传一个新版本到Google Play。记得更改compileVersion和NameVersion,就可以完成了。 - SmoggeR_js
将其修改在/<Project Folder>/android/app/src/main/AndroidManifest.xml中。 - George

1

是的,就是这样。@mtg-kha-jeskai 回复了并且它起作用了。谢谢你的回答。 - Darius Biro

0

请尽量准确描述问题,否则很难理解。

为了在发布模式下发现问题,我们有几个库可以帮助我们进行调试,即使真正的用户正在使用应用程序。请查看以下两个库,它们可能会帮助您找到问题。

  1. Busgnag
  2. Crashalytics,一个在react-native-firebase中的模块

我制作了这个应用程序。当我使用react-native run-android运行它时,它可以正常工作。我没有收到任何错误或其他提示。但是,当我尝试使用react-native run-android --variant=release运行它时,它会安装应用程序并启动应用程序,但是当我按下登录按钮时,什么也没有发生……我没有收到任何错误或其他提示……它只是无法将我从登录界面重定向到应用程序界面。 - Darius Biro

0
对我来说,我看到了相同的行为,但原因与接受的解决方案非常不同。我会把我的答案留在这里,以防对其他人有帮助。
简而言之:确保你的模拟器/设备时间正确!
问题:
如果你使用HTTPS,设备和服务器的时间必须同步,否则将无法建立连接。
通常这不是个问题,但我的模拟器由于某种原因一直在重置时间。结果是,当我以调试模式连接时,时间是正确的,连接也正常。然而,当我切换到发布模式时,时间是错误的,连接就无法建立。
问题很微妙,因为我的构建变体使用不同的服务器,所以即使时间改变了,调试中的安全连接仍然有效,而发布模式下却无法工作,这让人误以为是构建配置的问题。
解决方案:
你可以通过以下方法轻松确定是否存在相同的问题:
1. 检查你的设备时间。 2. 在浏览器中打开URL。浏览器可能会注意到时间差异问题,并向你发出警告。
如果是这个问题,只需进入设备设置,更新时间,问题应该就解决了!

0
只需在AndroidManifest.xml文件中添加----- android:usesCleartextTraffic="true"-----,如下所示。
<application
  ...
  android:usesCleartextTraffic="true"
  ....
  >
 </application> </manifest>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接