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

fre*_*yle 16 android deep-linking android-deep-link android-app-links

我已通过在此处上传 assetlinks.json 文件来设置深度链接

https://example.com/.well-known/assetlinks.json
Run Code Online (Sandbox Code Playgroud)

它在 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?

我在这里看到我应该同时使用两者。如果应该的话,如何将 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..."]
  }
}]
Run Code Online (Sandbox Code Playgroud)

我希望深层链接既可以在调试版本中也可以在发布版本中工作。

fre*_*yle 12

经过几个小时的解决后终于解决了这个问题。

基本上,如果您使用 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......"
      ]
    }
  }]
Run Code Online (Sandbox Code Playgroud)

就我而言,Playstore 版本已经发布。当我发布一个新的更新并修复了一些其他错误时,新的更新会自动验证深层链接。

  • 是的。您可以进入``play console->settings(sidebar)->App完整性->App Signing```验证是否与``assetslinks.json```中上传的相同。如果是相同的,这不应该是你的问题。 (2认同)

Mor*_*ari 11

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

事实证明,如果你打破了

<data android:scheme="http" android:host="www.example.com"/>
Run Code Online (Sandbox Code Playgroud)

分成2个标签

<data android:scheme="http" />
<data android:host="www.example.com" />
Run Code Online (Sandbox Code Playgroud)

在 中AndroidManifest.xml,应用程序链接将在 Android 12 上成功验证。此更改似乎也向后兼容旧版本的 Android,尽管文档没有明确说明。

答案参考