You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter项目url_launcher上架Play商店失效 调试模式运行正常

Flutter发布Play商店后url_launcher失效问题解决

常见原因及对应解决方案

原因1:Android 11+应用可见性权限缺失

Android 11(API 30)及以上系统限制了应用查询其他已安装应用的能力,调试模式下默认放行该权限,正式发布后权限规则严格执行,未配置对应查询规则时url_launcher无法识别可处理跳转请求的应用,导致功能失效。
解决步骤:

  • 打开项目android/app/src/main/AndroidManifest.xml文件
  • 在<manifest>根标签下(非<application>标签内部)添加查询规则:
<queries>
    <!-- 适配http/https链接跳转 -->
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="https" />
    </intent>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="http" />
    </intent>
    <!-- 如需跳转拨号、短信、第三方应用自定义scheme,可对应添加intent规则 -->
    <intent>
        <action android:name="android.intent.action.DIAL" />
        <data android:scheme="tel" />
    </intent>
</queries>

原因2:Release包混淆裁剪了依赖类

调试模式默认不开启代码混淆,正式打包开启R8/ProGuard混淆时,如果没有配置url_launcher的免混淆规则,相关功能类会被误裁剪,导致调用无响应。
解决步骤:

  • 打开项目android/app/proguard-rules.pro文件
  • 添加如下免混淆规则:
-keep class io.flutter.plugins.urllauncher.** { *; }

原因3:HTTP明文流量被系统拦截

如果你跳转的链接为HTTP协议(非HTTPS),Android 9(API 28)及以上系统默认禁止明文流量访问,调试模式下默认允许该行为,正式发布后会被系统拦截。
解决步骤:

  • 优先将所有跳转链接替换为HTTPS协议
  • 如必须使用HTTP链接,在AndroidManifest.xml的<application>标签中添加属性:android:usesCleartextTraffic="true"

原因4:url_launcher调用逻辑不兼容

部分旧版本的url_launcher在release模式下直接调用跳转方法前如果不做可达性校验,会出现调用失效的问题。
解决步骤:

  • 将pubspec.yaml中的url_launcher依赖升级到最新稳定版
  • 调整调用逻辑,先校验链接可访问再执行跳转:
import 'package:url_launcher/url_launcher.dart';

Future<void> jumpToUrl(String targetUrl) async {
  final Uri uri = Uri.parse(targetUrl);
  if (await canLaunchUrl(uri)) {
    await launchUrl(uri);
  }
}

补充注意:如果以AAB格式上传到Play商店,确认打包时未开启过度的资源裁剪规则,避免url_launcher依赖的核心资源被误删除。

内容的提问来源于stack exchange,提问作者Flutterconfusions

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:24:05