【发布时间】:2020-11-08 14:36:50
【问题描述】:
我有一个使用应用链接的game。从我的计算机运行调试和发布版本时,应用链接工作正常,但不适用于从 Google Play 下载的版本。使用 Google Play 版本时,我会收到一个对话框,询问应由哪个应用打开链接。
我使用“App Signing by Google Play”并了解发布 APK 由 Google 签名并且具有不同的签名。我已将 Google Play 上列出的应用签名证书中的 SHA-256 证书指纹添加到我的 assetlinks.json,因此它包含来自本地和 Google Play 版本的指纹。
我还从 Google Play 下载了一个派生的 APK,并确保指纹与 assetslinks.json 文件中的指纹匹配。
这是一个示例 URL,当在 Android 中单击该 URL 时,应打开应用程序,它适用于本地构建,但不是在 Google Play 版本中。相反,我会收到一个对话框,询问应由哪个应用打开链接。
https://letsdraw.fun/ec?parent=Z0ibN7m-H8jO1jCiMRQtY23VTpKjnIch
我正在从实时发布版本的 logcat 中写出 SHA256 指纹,以仔细检查它是否正确,一切看起来都很好。
原始签名APK和Google Play签名APK可以从here下载。这两个 APK 都是从 Google Play 下载的,一个是“原始的”,一个是“派生的”,所以除了签名之外它们应该是相同的。有趣的是,它们的尺寸略有不同。 11,590,297 字节与 11,601,619 字节。
查看adb shell dumpsys package domain-preferred-apps的输出,原来签名的apk是
Package: com.scribble.exquisitecorpse
Domains: letsdraw.fun scribble-cloud.appspot.com scribble-cloud-v24-test-dot-scribble-cloud.appspot.com
Status: always : 200000000
而 Google Play 签名的 apk 是
Package: com.scribble.exquisitecorpse
Domains: letsdraw.fun scribble-cloud.appspot.com scribble-cloud-v24-test-dot-scribble-cloud.appspot.com
Status: ask
使用@ymindstorm 提到的测试页面进行测试时
https://developers.google.com/digital-asset-links/tools/generator
我收到消息
成功!主机letsdraw.fun 授予应用程序深度链接到 com.scribble.exquisitecorpse.
您对造成这种情况的原因有什么建议吗?
更新: 我现在已将此作为错误报告给 Google,因为我无法弄清楚发生了什么。 https://issuetracker.google.com/issues/162564916
【问题讨论】:
-
您是否在同一设备/模拟器上进行所有测试?还是您的本地版本在模拟器上运行,而 Google Play 版本在真实设备上运行?
-
您是否将 .well-known/assetlinks.json 文件添加到网站根目录? web.letsdraw.fun/.well-known/assetlinks.json返回错误:未找到
-
@karllindmark 全部在多个真实设备上测试。
-
@TheDude android 版本不使用网络。字首。 letsdraw.fun/.well-known/assetlinks.json
-
您是否尝试在您的资产链接中仅保留来自 Google Play 的 SHA-256。它适用于本地版本和实时版本的行为类似于深层链接这一事实可能表明您的数字资产链接存在一些问题。
标签: android applinks android-app-links