颤动的 Image.network 无法在发布 apk 上运行

Posted

技术标签:

【中文标题】颤动的 Image.network 无法在发布 apk 上运行【英文标题】:flutter Image.network not working on release apk 【发布时间】:2019-07-24 03:28:52 【问题描述】:

遇到奇怪的问题。如果我在模拟器中运行应用程序,工作正常。如果我通过连接 android 设备安装应用程序工作正常。但是,如果我通过flutter build apk 制作了 apk 并安装在设备中。

网络图片不来了?为什么?有什么问题吗?无需提供代码。对于显示网络图片,我使用简单的Image.network 和来自谷歌图片的网址。

我尝试了flutter clean 然后flutter build apk --release 但同样的问题来了

不能通过发布 APK 工作:

Uer-MacBook-Air:AppName user$ flutter build apk --release
Initializing gradle...                                              2.0s
Resolving dependencies...                                           3.1s
Running Gradle task 'assembleRelease'...                                
Running Gradle task 'assembleRelease'... Done                      63.4s
Built build/app/outputs/apk/release/app-release.apk (8.1MB).

通过调试 APK 工作

Uer-MacBook-Air:AppName user$ flutter build apk --debug 
Initializing gradle...                                              3.5s
Resolving dependencies...                                           5.5s
Running Gradle task 'assembleDebug'...                                  
Running Gradle task 'assembleDebug'... Done                        36.2s
Built build/app/outputs/apk/debug/app-debug.apk.

有人遇到过这种问题吗?我已经通过flutter build apk 安装了许多 apk,并且工作正常,现在无法在发布模式下工作?但是当我尝试使用调试模式flutter build apk --debug 时,它工作正常意味着图像正在显示?

我必须为发布模式 apk 添加一些权限吗?

【问题讨论】:

不是在所有安卓版本中都可以使用吗? 只有图片不工作? 【参考方案1】:

是的,将这些权限添加到 AndroidManifest.xml 就可以了

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

更新:只有 INTERNET 权限就足够了

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

【讨论】:

只有 就足够了。谢谢 ios 版本会出现同样的问题吗?【参考方案2】:

在调试模式下默认启用服务扩展和多个权限(在颤振中)

由于您处于发布模式,您必须手动在 androidmanifest.xml 中添加互联网权限。(就像您在本机开发中添加它一样)

导航到 android-> app-> src-> main-> AndroidManifest.xml 并将这一行添加到应用程序范围之外。

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

【讨论】:

我也应该把权限放在 main 中吗?我已将权限放入配置文件 androidmanifest【参考方案3】:

打开你的

android/app/src/main/AndroidManifest.xml

&lt;/application&gt; 之后 添加这个android权限

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

现在,发布您的 apk,然后检查。

【讨论】:

【参考方案4】:

只需要给INTERNET的权限

Debug 模式下我们不会遇到这个问题,因为已经给出了permission

只要去路径

android/app/src/main/AndroidManifest.xml

然后将这一行粘贴到&lt;manifest&gt;标签中:

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

【讨论】:

【参考方案5】:

只需将其添加到您的 AndroidManifest.xml 文件中即可:

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

AndroidManifest.xml路径:

android/app/src/main/AndroidManifest.xml

【讨论】:

以上是关于颤动的 Image.network 无法在发布 apk 上运行的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中将 ImageCache 保存到磁盘?

如何在颤动中为 CachedNetworkImage 编写小部件测试

Flutter:为啥 Image.network 无法加载图像

无法使用 Flutter Image Network 从 Firebase 存储加载图像

无法在运行发布颤动时发布 https 请求

在 Flutter 中使用 network_image_mock 包进行图像测试