Flutter url_launcher 未在发布模式下启动 url

问题描述

我不知道出于某种原因,url_launcher (https://pub.dev/packages/url_launcher) 在从 Google Playstore 下载应用程序后无法正常工作。在调试模式下,它按应有的方式工作。但是在Playstore上上传应用程序并从那里下载后,url启动器没有启动任何url。为什么?

import 'package:url_launcher/url_launcher.dart';

 onTap: () {
  launchURL("https://www.google.com");
},..............
  launchURL(String url) async {
    if (await canLaunch(url)) {
      await launch(url);
    } else {
      throw 'Could not launch $url';
    }
  }

pubspec.yaml url_launcher: ^5.7.6

我还添加android.permission.INTERNET

我没有使用最新版本的 url_launcher,所以可能使用最新版本可以解决问题,但问题是最新版本的 url_launcher 需要最新版本的 Flutter。升级Flutter版本安全吗?由于我的应用已投入生产,因此我不能冒险引发更多问题

这是我尝试升级到最新版本 url_launcher: ^5.7.10 并运行 Flutter pub get

时得到的结果
[xxxxx] Flutter pub get
Running "Flutter pub get" in xxxxx...                       
The current Flutter SDK version is 1.22.0-9.0.pre.

Because url_launcher >=5.7.7 <6.0.0-nullsafety depends on url_launcher_platform_interface >=1.0.9 <2.0.0-nullsafety which requires Flutter SDK version >=1.22.0 <2.0.0,url_launcher >=5.7.7 <6.0.0-nullsafety is forbidden.

So,because xxxxx depends on url_launcher ^5.7.10,version solving Failed.
pub get Failed (1; So,because storeifie depends on url_launcher ^5.7.10,version solving Failed.)
exit code 1

解决方法

我在 Android 11(API 级别 30)上遇到了同样的问题——在软件更新之前一切正常(以及在我运行早期版本的测试设备上)——以下内容似乎让我走上了正轨 https://developer.android.com/training/basics/intents/package-visibility#all-apps

我通过在 AndroidManifest.xml 中添加以下内容解决了我的问题(尽管它可能不是必需的。)

<activity android:name="io.flutter.plugins.urllauncher.WebViewActivity"
           android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
           android:exported="false"/>

仅此一项不起作用,然后我添加到

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

,

首先,您在flutter的开发频道(1.22.0-9.0.pre是开发版,发布于2/9/2020)。由于您的应用正在生产中,请将频道更改为稳定版,因为它没有破坏性错误。

flutter channel stable

然后进行flutter升级。

 flutter upgrade

现在,尝试将 url_launcher 包升级到最新版本。它应该可以工作。

PS:不用担心flutter升级,只要是在stable分支升级就行。始终建议运行最新版本。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...