React Native Android 12及以上版本Deep Linking失效求助
Android 12/13 Deep Linking 自动跳转失效问题排查与解决
我在React Native中配置的Deep Linking intent-filter如下:
<intent-filter android:label="@string/app_name" android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "https://example.com" or "https://www.example.com" --> <data android:scheme="https" android:host="www.example.com" /> <data android:scheme="https" android:host="example.com" /> </intent-filter>
低版本Android设备上,点击链接会弹出选择框让用户选应用或浏览器打开,但Android 12/13上链接直接在浏览器打开。已经创建assetlinks.json并放在https://www.example.com/.well-known/assetlinks.json,手动设置“Supported web links”后能正常跳转,但不想让用户手动操作。
排查与解决步骤
检查assetlinks.json的正确性
确保文件格式和内容完全符合规范,示例如下:[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "你的应用包名", "sha256_cert_fingerprints": ["应用签名的SHA256指纹"] } } ]注意点:
- 包名必须和
AndroidManifest.xml中声明的一致 - SHA256指纹要使用对应签名的指纹(发布版/测试版要对应,不能混用)
- 文件需为UTF-8编码,不能有语法错误或多余空格
- 包名必须和
验证assetlinks.json的可访问性
- 确保文件能通过HTTPS直接访问,无301/302重定向(Android 12+不支持重定向验证)
- 服务器返回的Content-Type必须是
application/json,不能是text/plain等其他类型 - 确认服务器没有防盗链、CDN缓存等限制,导致Google验证服务无法抓取文件
调整AndroidManifest.xml配置
android:autoVerify="true"只能添加在一个intent-filter上,不要重复配置- 可以给
<data>标签加上android:pathPattern=".*",避免潜在的路径匹配问题:<data android:scheme="https" android:host="example.com" android:pathPattern=".*" /> <data android:scheme="https" android:host="www.example.com" android:pathPattern=".*" /> - 确保intent-filter所在的Activity设置了
android:exported="true"(Android 12+要求可导出的Activity才能接收外部Intent)
检查应用签名与验证状态
- 用Android Studio的
App Links Assistant(Tools > App Links Assistant)一键验证配置,它会自动检查assetlinks.json和Manifest的匹配度 - 安装应用后,在设备
设置 > 应用 > 你的应用 > 打开方式 > 支持的网页链接中查看验证状态,若显示“未验证”,说明签名或assetlinks.json存在问题 - 测试时尽量用正式签名的APK,Debug签名需单独把指纹加到assetlinks.json里才能通过验证
- 用Android Studio的
清除应用缓存与默认设置
- 进入设备设置,找到应用后清除默认打开方式和缓存,再重新安装测试
- Android 12+会缓存App Links的验证结果,修改配置后必须清除缓存或重装应用才能生效
内容的提问来源于stack exchange,提问作者Neha Soni
相关产品推荐
相关产品推荐

