Flutter应用配置Deep Link后需手动添加可打开URL的问题求助
Flutter App Links默认未自动配置可打开URL的解决方法
我已为Flutter应用配置了Deep Link,App links可正常打开,但应用设置中默认未配置可打开的URL,需手动点击“添加链接”(该URL已在选项列表中)完成配置。
相关界面截图:
- 应用设置界面截图:

- 点击添加链接后的界面截图:

当前配置代码
AndroidManifest.xml中的Deep Link配置
<meta-data android:name="flutter_deeplinking_enabled" android:value="true" /> <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="http" android:host="abc.myurl.com" /> <data android:scheme="https" /> </intent-filter> <meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" />
assetLink.json配置
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.myapp.myapp", "sha256_cert_fingerprints": ["----myapp fingerprint-----"] } }]
排查与解决步骤
修正Intent Filter的URL匹配规则
当前httpsscheme的data标签未指定host,导致系统无法识别完整的URL关联范围。修改为:<data android:scheme="https" android:host="abc.myurl.com" />确保
http和https的data标签都明确指向同一个host。验证assetLinks.json的有效性
- 确认文件已部署到
https://abc.myurl.com/.well-known/assetlinks.json,访问时返回application/jsonMIME类型。 - 用Android Studio的App Links Assistant(路径:Tools > App Links Assistant)完成全流程验证,检查包名、SHA256指纹、文件路径是否完全匹配。
- 确认文件已部署到
强制系统重新验证App Links
- 卸载应用后重新安装,系统会在安装阶段自动执行App Links验证并配置默认关联。
- 或通过ADB命令手动触发验证:
adb shell pm verify-app-links --re-verify com.myapp.myapp - 验证后检查状态,输出显示
verified: true则说明验证成功:adb shell pm get-app-links com.myapp.myapp
确认签名指纹完全匹配
用keytool命令获取应用签名的SHA256指纹,确保与assetLinks.json中的值完全一致(无空格、大小写匹配):# 正式签名文件 keytool -list -v -keystore your-keystore-file.jks # Debug签名文件 keytool -list -v -keystore ~/.android/debug.keystoreAndroid 12+权限处理
对于Android 12及以上版本,可在应用启动时主动检查并请求App Links权限:import 'package:app_links/app_links.dart'; Future<void> checkAndRequestAppLinkPermission() async { final appLinks = AppLinks(); final status = await appLinks.getAppLinkPermissionStatus(); if (status != AppLinkPermissionStatus.approved) { await appLinks.requestAppLinkPermission(); } }
内容的提问来源于stack exchange,提问作者Ashish Tandon
相关产品推荐
相关产品推荐

