我已通过在此处上传 assetlinks.json 文件来设置深度链接
https://example.com/.well-known/assetlinks.json
它在 Android 11 之前都可以正常工作。如果不是从 Playstore 下载的,它也可以在 Android 12 中使用(即从我的 android studio 或我从 android studio 制作的 apk 文件安装,即使我使用 Keystore 签署 apk 文件也可以工作。)
在Android 12上从Playstore下载时,如果您进入应用程序设置->默认打开->在应用程序中打开的链接。 我们可以看到我的域默认被禁用。我认为这与我在 assetlinks.json 中使用的 sha256 有关
我从 Android studio 中的 App Link Assistant 获取了 assetlinks.json。(我在生成 assetlinks 时也选择了我的密钥库文件)。
如果我去我的
play console->Setup->App integrity->App signing
我可以在数字资产Json部分看到不同的Sha256(也在应用程序签名密钥证书部分)
我可以在上传密钥证书部分看到我上传的Sha256。
我的问题是我应该在 assetlinks.json 中使用哪种 sha256?
我已经看到here我应该同时使用两者。如果应该的话,如何将 sha256 添加到我的 assetlink.json 中。我可以将其添加为像这样的逗号分隔值吗?
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example",
"sha256_cert_fingerprints":
["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5", "NE:XT:SH:A2:56:VA:LU:ER..."]
}
}]
我希望深层链接能够在调试和发布版本中工作。
花了几个小时解决问题后终于解决了问题。
基本上,如果您使用 Google 用于签署每个版本的 google 应用签名密钥,您还需要将 Play 控制台中的 SHA256 添加到 assetlinks.json 文件中,以便您的域在 Play 商店上自动验证应用程序。
这个问题从未被发现,因为用于非应用商店构建(测试构建)的签名密钥不同,这是我从 Android studio 应用链接助手获得的
最终的 assetlinks.json 看起来像这样:
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.android",
"sha256_cert_fingerprints": [
"SH:A2:56:FR:OM:PL:AY:CO:NS:OL:EX:......"
]
}
},
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.android",
"sha256_cert_fingerprints": [
"SH:A2:56:FR:OM:AN:DR:OI:DS:TU:DI:OO......"
]
}
}]
就我而言,Playstore 版本已经发布。当我发布一个新的更新并修复了一些其他错误时,新的更新会自动验证深层链接。
这也是我的问题。
下面的答案节省了我的时间
事实证明,如果你打破了
<data android:scheme="http" android:host="www.example.com"/>
分为2个标签
<data android:scheme="http" />
<data android:host="www.example.com" />
在
AndroidManifest.xml
中,应用程序链接将在 Android 12 上成功验证。此更改似乎也向后兼容旧版本的 Android,即使文档没有明确说明。
在我的例子中,完成上述操作后(资产链接中的所有 SHA-256 键,分离方案标签),最终的罪魁祸首是“路径”标签。
之前(不工作):
<data android:host="dl.example.com"
android:path="/test" />
<data android:scheme="https" />
(工作后):
<data android:host="dl.example.com"/>
<data android:scheme="https"/>
希望对某人有帮助
检查您的 https://{domain}/.well-known/assetlinks.json。
在浏览器上点击此 URL 后,它应该在浏览器上打开 json 文件,而不是下载 json 文件。如果可以下载,请从服务器修复它。