3

我们为深度链接intent-filters定义了一些AndroidManifest。我们还assetlinks.json使用正确的 SHA 指纹将文件放置在我们的域中的适当位置。我们面临一个奇怪的问题,当从 Android Studio 安装应用程序时,这些应用程序链接直接打开我们的应用程序,中间没有任何选择器。

这也是期望的行为,但是,当我们将我们的应用程序上传到 Google play 并从那里下载时,这些应用程序链接App chooser首先打开,这不是期望的行为。

我们做了一些实验,比如为两个不同的链接创建不同的意图过滤器,删除一个链接等,但这种行为保持不变。还仔细检查了 SHA 指纹,它们似乎很好。

4

2 回答 2

10

我知道有一个公认的答案,但还有另一种情况,其他人可能会像我一样面临。

发布到 时Google Play,如果您的应用程序有“ ”,那么在您的本地计算机上签署您的 apk 时,您的App Signing by Google Play is enabled for this app.内容并不重要。keystore SHA256

您需要使用SHA256from Google Play Console-> Relase management-> App signing-> App signing certificate

编辑(2021): App signing key certificate现在在不同的位置:

  1. 从控制台中选择应用程序。
  2. 转到发布部分。
  3. 设置下,选择应用程序完整性
于 2019-12-31T17:22:52.433 回答
5

如果您说您的assetlinks.json文件位于正确的位置,并且 JSON 本身具有正确的语句。那么可能有两个问题

  1. 检查您是否autoVerify=trueAndroidManifest.xml文件中添加了定义意图过滤器的活动。

  2. 重新检查已签名的 apkSHA256以确认您使用正确SHA256的签名 apk。您可以使用命令检查

keytool -list -printcert -jarfile <your_signed.apk>

并验证SHA256您的assetlinks.json 文件中是否存在相同的内容。

  • 要验证您的应用是否真正解析了您的应用链接,请使用命令
./adb shell dumpsys package domain-preferred-apps

输出如下:

Package: com.test.example
Domains: www.test.com
Status:  always : 200000000

Package: com.test.example
Domains: www.xyz.com
Status:  ask
.
.
.

找到您的应用程序的包名称,然后检查Status您的包名称,如果是,always : <some_number>则您的 apk 已正确验证并且应用程序链接应该可以正常工作,否则如果值为Statusaskundefined则存在一些问题,您可以按照上述重构- 提到的步骤。

于 2019-12-20T10:38:26.680 回答