默认情况下,Android 12 中应用程序链接未打开。可能的 SHA256 问题

问题描述 投票:0回答:4

我已通过在此处上传 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..."]
  }
}]

我希望深层链接能够在调试和发布版本中工作。

android deep-linking android-deep-link android-app-links
4个回答
14
投票

花了几个小时解决问题后终于解决了问题。

基本上,如果您使用 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 版本已经发布。当我发布一个新的更新并修复了一些其他错误时,新的更新会自动验证深层链接。


11
投票

这也是我的问题。
下面的答案节省了我的时间

事实证明,如果你打破了

<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,即使文档没有明确说明。

答案参考


1
投票

在我的例子中,完成上述操作后(资产链接中的所有 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"/>

希望对某人有帮助


0
投票

检查您的 https://{domain}/.well-known/assetlinks.json。

在浏览器上点击此 URL 后,它应该在浏览器上打开 json 文件,而不是下载 json 文件。如果可以下载,请从服务器修复它。

© www.soinside.com 2019 - 2024. All rights reserved.