【问题标题】:AppLinks(verified Deeplinks) in android does not work when app is installed from Google Play从 Google Play 安装应用程序时,Android 中的 AppLinks(已验证的深层链接)不起作用
【发布时间】:2019-12-20 07:44:41
【问题描述】:

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

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

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

【问题讨论】:

    标签: android android-deep-link android-app-links


    【解决方案1】:

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

    发布到Google Play时,如果你的应用有“App Signing by Google Play is enabled for this app.”,那么在本地机器上签名你的apk时你的keystore SHA256是什么都没关系。 p>

    您需要使用来自Google Play ConsoleSHA256 -> Relase management -> App signing -> App signing certificate

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

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

    【讨论】:

    • 是的,这解决了我的问题。我的应用使用了 Google Play 的应用签名。谢谢你拯救了我。
    • 完美答案,谷歌用了多长时间检测到SHA256的变化?
    【解决方案2】:

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

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

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

    3. 进行检查
    keytool -list -printcert -jarfile <your_signed.apk>
    

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

    • 要验证您的应用是否真正解析了您的应用链接,请使用命令
    ./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 : &lt;some_number&gt;,那么你的apk被正确验证并且应用链接应该可以正常工作,否则如果Status的值是@987654333 @ 或undefined,则有一些问题可以按照上述步骤进行重构。

    【讨论】:

    • 如果我从发行版运行调试会有所不同吗?
    猜你喜欢
    • 1970-01-01
    • 2019-07-21
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多