Android 12及以上App Linking失效,Google Play Console域名未验证
解决Android 12+ App Linking域名验证失败问题
结合你给出的配置,以下是几个关键排查点和修复步骤:
1. 修复Firebase Hosting的隐藏目录部署限制
你的firebase.json中ignore规则包含**/.*,这会导致.well-known隐藏目录被Firebase Hosting忽略,根本不会部署到线上,Google无法爬取assetlinks.json自然无法验证域名所有权。
修改firebase.json,在ignore中排除.well-known目录:
{ "hosting": { "public": "public", "ignore": [ "firebase.json", "**/node_modules/**", // 替换原有的**/.*,仅忽略特定隐藏文件,保留.well-known目录 "**/.git", "**/.gitignore" ] } }
修改后重新部署:firebase deploy --only hosting
2. 修正assetlinks.json的包名一致性
你的assetlinks.json中两个条目包名大小写不一致:
com.(myDomain).(myapp)com.(mydomain).(myApp)
Android包名大小写敏感,必须与AndroidManifest.xml中的package属性完全一致,请统一为清单中的包名,避免大小写差异。
同时确认SHA256指纹:
- 确保复制的是Google Play Console「Setup -> App Signing」中的应用签名密钥SHA256(不是上传密钥),指纹格式必须是冒号分隔的大写字母,无多余空格或字符。
3. 调整AndroidManifest.xml的intent-filter配置
- 将
tools:targetApi="m"改为tools:targetApi="n",因为android:autoVerify="true"从API 24(Android 7.0)开始生效,m对应API 23(Android 6.0),不符合AutoVerify的最低要求。 - 确认intent-filter所在的Activity是你希望处理App Link的目标Activity,且没有其他冲突的intent-filter(比如重复的VIEW action)。
修正后的intent-filter示例:
<intent-filter android:autoVerify="true" tools:targetApi="n"> <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="(myDomain).com" android:pathPrefix="/view/"/> </intent-filter>
4. 完成Google Play Console的域名验证流程
- 进入GPC的「Setup -> App integrity -> App Linking」,添加你的域名
(myDomain).com,选择「Digital Asset Links」作为验证方式。 - 部署修改后的配置后,等待1-2小时让Google完成爬取验证(验证不是实时的)。
5. 本地验证调试
使用adb命令检查App Link状态:
# 查看应用的App Link验证状态 adb shell pm get-app-links com.(myDomain).(myapp) # 清除已有的域名偏好,强制重新验证 adb shell pm clear-domain-preferences com.(myDomain).(myapp) # 测试App Link跳转 adb am start -a android.intent.action.VIEW -d "https://(myDomain).com/view/test"
如果输出中显示verified: true,说明验证成功,Android 12+就能正常触发App Link跳转了。
内容的提问来源于stack exchange,提问作者Uraam Asif
相关产品推荐
相关产品推荐

