React Native Expo Android深度链接失效问题求助
Android App Links 不生效排查方案(Expo React Native)
1. 修正Intent Filter的Host配置
你当前的host: '*my-app.com'写法存在问题:通配符前缀仅匹配xxx.my-app.com这类子域名,若你的链接是my-app.com/claim,该规则不会生效。需根据需求调整:
- 匹配主域名+所有子域名:改为
host: '*.my-app.com'(通配符需以*.开头) - 仅匹配主域名:改为
host: 'my-app.com'
同时确认pathPrefix与实际链接路径完全对应,比如链接是https://my-app.com/claim/123,/claim的配置是正确的,若路径是/claims则不匹配。
2. 验证SHA256指纹准确性
- 确认使用的是对应环境的证书指纹:发布版用正式证书指纹,调试版/dev client用调试证书指纹
- 可通过
expo credentials:manager查看Expo管理的证书信息,或本地执行keytool -list -v -keystore your-keystore.jks获取指纹 - 指纹格式需为大写十六进制字符,无空格,例如
AA:BB:CC:DD:...
3. 检查assetlinks.json的配置与可访问性
- 确保文件放在网站根目录的
/.well-known/assetlinks.json路径下,直接访问https://your-domain.com/.well-known/assetlinks.json能看到正确内容 - 文件必须是数组格式,你的示例缺少外层数组包裹,正确格式如下:
[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "android-package-name", "sha256_cert_fingerprints": ["你的SHA256指纹"] } } ] - 确认网站使用HTTPS协议,且无重定向(App Links强制要求HTTPS)
4. 使用正确的测试方式
- 避免直接在浏览器点击链接测试(浏览器会缓存验证结果),改用adb命令测试:
adb shell am start -W -a android.intent.action.VIEW -d "https://your-domain.com/claim" - 用Android Studio的App Links Assistant(Tools > App Links Assistant)做一键验证,它会给出具体的错误提示
5. 确认Expo插件配置与构建流程
- 确保已安装并配置
expo-app-links插件,在app.json/app.config.ts的plugins数组中添加:"plugins": ["expo-app-links"] - 修改配置后需重新构建应用:使用dev client时执行
expo prebuild --clean && expo run:android,发布版需重新提交构建
6. 清除系统缓存
Android会缓存App Links的验证结果,可执行以下操作重置:
- 进入应用信息页面,选择「打开方式」→ 重置默认应用
- 执行
adb shell pm clear com.android.chrome清除浏览器缓存(若用Chrome测试) - 卸载重装应用,确保新配置完全生效
内容的提问来源于stack exchange,提问作者Andon Mitev
相关产品推荐
相关产品推荐

