从 Google Play 安装应用程序时,Android 中的 AppLinks(已验证的深层链接)不起作用

Abh*_*sal 3 android android-deep-link android-app-links

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

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

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

Sha*_*ain 9

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

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

  2. 重新检查签名的 apk,SHA256以确认您使用正确的方式SHA256对 apk 进行签名。您可以使用命令检查

keytool -list -printcert -jarfile <your_signed.apk>
Run Code Online (Sandbox Code Playgroud)

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

  • 要验证您的应用程序是否确实解析了您的应用程序链接,请使用以下命令
./adb shell dumpsys package domain-preferred-apps
Run Code Online (Sandbox Code Playgroud)

输出如下:

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

Package: com.test.example
Domains: www.xyz.com
Status:  ask
.
.
.
Run Code Online (Sandbox Code Playgroud)

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


You*_*sif 7

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

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

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

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

  1. 从控制台选择应用程序。
  2. 转到发布部分。
  3. 设置下,选择应用程序完整性