React Native Android应用Universal Link pathPrefix配置不生效问题
核心问题
配置了android:pathPrefix="/123callback/",但仅https://www.companyname.com/callback/something能唤起应用,修改路径前缀后无效果,已尝试清理构建目录、模拟器数据仍未解决。
排查与解决步骤
1. 检查是否存在重复/冲突的Intent Filter
全局搜索android/app/src/main/AndroidManifest.xml及所有依赖库的Manifest文件,确认是否有其他<intent-filter>包含以下配置:
android:pathPrefix="/callback/"android:pathPattern=".*callback.*"- 其他能匹配到
/callback/路径的规则
如果存在旧的未删除的Intent Filter,会优先匹配或导致规则冲突,需删除冗余配置。
2. 验证构建产物中的Manifest是否生效
本地修改的Manifest可能被构建脚本覆盖,前往以下路径查看最终生成的Manifest文件:android/app/build/intermediates/manifests/full/[debug/release]/AndroidManifest.xml
检查其中的Intent Filter是否确实包含android:pathPrefix="/123callback/",如果不是,需排查:
- gradle配置中的
manifestPlaceholders是否覆盖了路径前缀 react-native.config.js或其他RN链接配置是否强制设置了旧路径
3. 强制刷新系统App Links缓存
仅清除模拟器数据可能无法彻底清理系统缓存的App Links规则,执行以下adb命令强制刷新:
adb shell pm clear-domain-preferences adb shell pm get-app-links com.companyname.mobileapp
执行第二条命令可以查看当前系统识别的应用链接规则,确认是否显示了/123callback/路径。
4. 验证服务器端assetlinks.json配置
虽然路径匹配由本地Manifest控制,但服务器端的assetlinks.json(位于https://www.companyname.com/.well-known/assetlinks.json)如果存在配置错误,可能导致系统无法正确识别新路径。确认文件中包名、签名指纹与当前应用一致,无旧路径的残留配置。
5. 正确测试App Links
避免直接在浏览器地址栏输入链接(部分浏览器会直接跳转而非触发App Links),采用以下方式测试:
- 使用adb命令直接唤起:
adb shell am start -a android.intent.action.VIEW -d "https://www.companyname.com/123callback/test" - 在短信、备忘录中添加链接并点击测试,模拟用户实际操作场景
用户当前的AndroidManifest配置片段:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.companyname.mobileapp"> <application .... <activity .....> ..... <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="www.companyname.com" android:pathPrefix="/123callback/" /> </intent-filter>
内容的提问来源于stack exchange,提问作者Esben von Buchwald

