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

Flutter应用Deep Link调试正常但Release模式失效求解决方案

Flutter Release版本Deep Link失效解决方案

1. 确认App Links验证文件配置正确

你用了android:autoVerify="true",必须在域名根目录(https://applink-steama.web.app/.well-known/assetlinks.json)放置验证文件,内容要匹配你的Release签名证书SHA-256指纹:

[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "你的应用包名",
      "sha256_cert_fingerprints": ["Release签名的SHA-256指纹"]
    }
  }
]
  • 调试和Release签名指纹不一样,用keytool -list -v -keystore 你的Release密钥库路径获取正确指纹。
  • 验证文件必须能通过HTTPS直接访问,不能有重定向,MIME类型得是application/json。

2. 检查Release构建的签名配置

确保Release构建用的是正确签名密钥,在android/app/build.gradle里确认:

android {
    signingConfigs {
        release {
            keyAlias '你的密钥别名'
            keyPassword '你的密钥密码'
            storeFile file('你的密钥库路径.jks')
            storePassword '你的密钥库密码'
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            // 其他配置...
        }
    }
}

签名配置错了,系统就验证不了App Links,直接跳网页。

3. 禁用ProGuard/R8对Deep Link代码的混淆

开了代码混淆可能会搞坏Flutter处理Deep Link的逻辑,在android/app/proguard-rules.pro加规则:

# Flutter Deep Link相关保护
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }
# 保留自己写的Deep Link处理类(如果有)
-keep class com.yourpackage.DeepLinkHandler { *; }

同时在build.gradle里确认混淆配置:

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

4. 确认Intent Filter的位置

把intent-filter放在MainActivity标签里,还要确保android:exported="true"开启,不然收不到外部Intent:

<activity
    android:name=".MainActivity"
    android:exported="true"
    android:launchMode="singleTop"
    android:theme="@style/LaunchTheme"
    android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
    android:hardwareAccelerated="true"
    android:windowSoftInputMode="adjustResize">
    <!-- 你的Deep Link Intent Filter放在这里 -->
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data
            android:scheme="https"
            android:host="applink-steama.web.app"
            android:pathPrefix="/app"
        />
    </intent-filter>
</activity>

5. 测试Release构建的验证状态

用ADB命令查App Links验证结果:

adb shell dumpsys package domain-preferred-apps | grep applink-steama.web.app

输出里显示status: always就是验证成功,要是ask或never,就得回头查assetlinks.json和签名。

6. 清除应用默认打开方式

如果之前用户选了“始终用浏览器打开”,去系统设置→应用→你的应用→打开方式→清除默认值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:28:18