同一域名下多Android应用的App Link配置问题咨询
同一域名下不同路径对应不同Android应用的App Links配置方案
这个需求完全可以实现,你遇到的「同一时间仅一款应用能处理App Link」的问题,是因为配置细节或验证缓存导致的系统识别冲突。以下是具体的配置步骤和问题解决方法:
一、正确配置 .well-known/assetlinks.json
assetlinks.json的作用是验证域名与应用的归属关系,你需要在同一个文件中同时声明两个应用的授权信息,路径匹配规则无需在此文件中定义(由应用内的Intent Filter处理)。
示例配置:
[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.yourcompany.appA", "sha256_cert_fingerprints": ["App A的SHA256签名指纹"] } }, { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.yourcompany.appB", "sha256_cert_fingerprints": ["App B的SHA256签名指纹"] } } ]
- 确保文件放置在域名根目录的
.well-known文件夹下,可通过https://mywebsite.com/.well-known/assetlinks.json直接访问 - 签名指纹要与应用的构建签名一致(测试包和正式包指纹不同,需对应匹配)
二、应用内配置Intent Filter
每个应用需要在AndroidManifest.xml中配置独立的Intent Filter,指定匹配的路径前缀,并开启autoVerify触发系统自动验证。
Application A的Manifest配置
<activity android:name=".AppADeepLinkActivity"> <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" /> <!-- 仅匹配mywebsite.com/applicationA路径下的所有链接 --> <data android:scheme="https" android:host="mywebsite.com" android:pathPrefix="/applicationA" /> </intent-filter> </activity>
Application B的Manifest配置
<activity android:name=".AppBDeepLinkActivity"> <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" /> <!-- 仅匹配mywebsite.com/applicationB路径下的所有链接 --> <data android:scheme="https" android:host="mywebsite.com" android:pathPrefix="/applicationB" /> </intent-filter> </activity>
关键:两个应用的pathPrefix必须完全不重叠,确保系统能根据链接路径精准匹配到对应应用。
三、解决设备上的验证冲突问题
你遇到的「添加一款应用后另一款的支持被移除」,通常是以下原因导致的,可按对应方法解决:
- 验证缓存残留:
进入设备「设置」→「应用」→ 找到对应应用 →「打开方式」→「默认应用」,清除App Links的默认设置;也可以用adb命令强制重新验证:adb shell pm verify-app-links --re-verify com.yourcompany.appA com.yourcompany.appB - Intent Filter路径重叠:检查两个应用的
pathPrefix是否有重叠(比如都配置了根路径/),这种情况系统会优先选择先验证的应用,导致另一款失效。 - assetlinks.json配置错误:比如某个应用的包名或签名指纹写错,导致验证失败。可通过adb命令查看应用的验证状态:
输出中如果显示adb shell pm get-app-links com.yourcompany.appAverified: true则说明验证成功,否则检查assetlinks.json的配置。
四、验证效果
- 确保两个应用都安装到测试设备上,且签名与assetlinks.json中的指纹一致
- 触发重新验证后,分别测试链接:
- 点击
https://mywebsite.com/applicationA/test应直接打开Application A - 点击
https://mywebsite.com/applicationB/test应直接打开Application B
- 点击
内容的提问来源于stack exchange,提问作者justin
相关产品推荐
相关产品推荐

