发布版本和调试版本的应用程序操作有啥区别吗?

Posted

技术标签:

【中文标题】发布版本和调试版本的应用程序操作有啥区别吗?【英文标题】:Is there any difference in the app operation between release and debug versions?发布版本和调试版本的应用程序操作有什么区别吗? 【发布时间】:2020-05-03 09:42:56 【问题描述】:

我的应用程序有一个奇怪的问题。我做了一个非常简单的应用程序来请求车库的汽车零件。用户(车库的汽车修理工)将他需要的零件放入应用程序中,然后计算机(位于车库的另一部分)接收订单并直接打印到热敏打印机。我通过 HTTP post 发送数据,非常简单,我只是将 JSON 发送到 HTTP 地址。

问题是:当我运行调试版本时(通过 vscode 上的“flutter run”命令)它运行完美,但是当我生成 apk 时(通过“flutter build apk”)应用程序运行但它不发送HTTP post(没有错误消息,应用程序只是不发送并且永远停留在同一个屏幕上)。我测试了不同的设备,它们都可以在调试版本上正常工作,直接从 vscode 创建和安装,并且不能与发布应用程序一起工作。

为什么会这样?由于调试和发布 apk 具有相同的代码,不应该以相同的方式工作吗?有没有办法查看运行发布版本的日志(某种调试,我不知道)?

【问题讨论】:

您将请求发送到的站点上是否有有效证书?见***.com/a/44838661/336802。 在我的情况下,它不是一个站点,而是来自服务器的内部 IP。我对此了解不多,但我想证书问题不适用于这种情况...... 您是否在清单中授予了 Internet 权限,清单位于调试和 android 的主文件夹中。 @RenatoAbreu 是我对您问题的解决方案吗? @RenatoAbreu 我已经添加了有关在文件中添加权限的位置的信息。 【参考方案1】:

这个问题很可能与权限有关。请检查您在Android > app > src > 主目录下的AndroidManifest.xml文件是否有以下权限:

<uses-permission android:name="android.permission.INTERNET"/>

如果权限不存在,请将其添加到以&lt;application开头的行上方:

<uses-permission android:name="android.permission.INTERNET"/> // Add here
<application
    android:name="io.flutter.app.FlutterApplication"

【讨论】:

【参考方案2】:

Joao Soares 发布的解决方案有效,但我仍然有一个问题:为什么? 这是应用程序的标准行为吗?默认情况下,使用互联网的权限真的是关闭的吗?我看不出这是什么原因...

【讨论】:

这是典型的 Android 开发。你只要求你需要的权限。有些应用程序不使用互联网。对了,这样的cmet请在评论区留言。

以上是关于发布版本和调试版本的应用程序操作有啥区别吗?的主要内容,如果未能解决你的问题,请参考以下文章

.net 项目在Debug模式下打包跟在release模式下打包有啥区别?

C++中调试(debug) 和 运行(run)有啥区别吗?

python3.5和3.7有啥区别

Debug和Release有啥区别

myeclipse和eclipse之间有啥区别?

管家婆版本分很多种,各版本之间有啥区别吗?