如何解决 Android get-app-links 返回状态 1024?

Ale*_*les 19 java android android-deep-link

我无法获得在 Android 13 上工作的深层链接,我已经遵循了那里的每个教程,但无法让应用程序在进入网站后简单地启动。

我在 android studio 终端中使用了命令:

adb shell pm get-app-links com.where44444.cleanbook
Run Code Online (Sandbox Code Playgroud)

它返回

  com.where44444.cleanbook:
    ID: 0892ecd5-a93b-4064-bb2c-5d6cae6e7ac6
    Signatures: [9D:F7:97:FE:92:94:1A:67:96:80:D4:07:84:F8:42:8E:96:50:2B:C2:2D:CC:19:AD:0F:CC:F1:A4:E0:72:39:BE]
    Domain verification state:
      cleanassistant.net: 1024
      www.cleanassistant.net: 1024
Run Code Online (Sandbox Code Playgroud)

文档说

错误代码为 1024 或更大

特定于设备验证程序的自定义错误代码。

仔细检查您是否已建立网络连接,然后再次调用域验证过程。

我确实通过笔记本电脑和手机连接到互联网。

任何帮助,将不胜感激。

小智 13

我认为问题是您需要将该签名包含到您的assetlinks.json. 我在这里看到你的文件:

https://cleanassistant.net/.well-known/assetlinks.json

它在您的输出中没有签名:9D:F7:97:FE:92:94:1A:67:96:80:D4:07:84:F8:42:8E:96:50:2B:C2:2D:CC:19:AD:0F:CC:F1:A4:E0:72:39:BE

是否正在进行未经 Google Play 商店签名的本地构建?我们遇到了同样的问题,问题是我们assetlinks.json只包含了 Google Play 证书指纹,而不是创建本地构建时使用的证书指纹(无论是.aab.apk)。添加本地指纹后assetlinks.json,应用程序链接成功verified。如果没有这个,我们就会不断收到1024错误。

您的assetlinks.json信息在其他方面是有效的,您可以在此处验证:

https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://cleanassistant.net&relation=delegate_permission/common.handle_all_urls


san*_*eko 9

对我有用的解决方案是将 assetlinks.json 中的 SHA256 指纹替换为从返回的签名

adb shell pm get-app-links com.package.name
Run Code Online (Sandbox Code Playgroud)

大多数文档建议使用从签名密钥返回的指纹:

keytool -list -v -keystore release-key.keystore -alias <alias> -storepass <password> -keypass <password>
Run Code Online (Sandbox Code Playgroud)

但这对我不起作用,因为 Google Play 现在似乎正在签署我的应用程序,即使当我在 Android Studio 中生成 .aab 时,使用的是本地密钥。我不完全理解其内部工作原理,但我已经收到1024错误数周了。

脚步:

  1. 跑步adb shell pm get-app-links com.package.name
  2. 这将返回类似:
ID: a07e3734-cdbd-4389-946c-b9ebda8c3892
    Signatures: [00: .... the actual fingerprint ..... 00]
    Domain verification state:
      app.revillager.com: 1024
Run Code Online (Sandbox Code Playgroud)
  1. 获取该签名并将其粘贴到 assetlinks.json 中:
{
 ...
 "sha256_cert_fingerprints": [
        "00: .... the actual fingerprint ..... 00"
      ]
 ...
}
Run Code Online (Sandbox Code Playgroud)
  1. 将该文件推送到您的托管服务。
  2. 运行重新验证命令,10 秒后检查状态(可能需要多次执行此操作):
adb shell pm verify-app-links --re-verify com.package.name
adb shell pm get-app-links com.package.name
Run Code Online (Sandbox Code Playgroud)
  1. 一旦您看到Domain verification state: com.package.name: verified,请使用以下命令测试其是否正常工作:
adb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d "https://deeplinksite.com"
Run Code Online (Sandbox Code Playgroud)

这应该会在您的设备上启动该应用程序,而不是在 Chrome 中。