Skip to content

Host /.well-known/assetlinks.json — App Links verification currently fails for every https deep link #128

Description

@Adron

Found while implementing #89. Pre-existing, and it silently disables a feature that already
shipped.

The problem

https://interlinedlist.com/.well-known/assetlinks.json returns 404 (verified).

app/src/main/AndroidManifest.xml declares an autoVerify="true" intent filter covering:

Android App Links verification requires the site to host a Digital Asset Links file naming the
app's package and signing-certificate fingerprints.
Without it, verification fails, and on
Android 12+ the system will not auto-open the app for any of those URLs — the user gets a
browser, or at best a disambiguation dialog they have to opt into via Settings → Default apps →
Opening links.

So every https:// deep link the app has shipped so far is effectively inert on modern Android.
The interlinedlist:// custom-scheme equivalents work regardless, which is why this has not been
noticed.

The fix (server side)

Host at https://interlinedlist.com/.well-known/assetlinks.json, served as
application/json over HTTPS with no redirect:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.interlinedlist.android",
    "sha256_cert_fingerprints": [
      "<debug keystore SHA-256>",
      "<release keystore SHA-256>",
      "<Play App Signing SHA-256, if Play re-signs>"
    ]
  }
}]

All three fingerprints matter. If Play App Signing is enabled, the certificate users actually
get is Play's, not the upload key — omitting it means verification passes in testing and fails in
production.

Confirm the package_name against the release applicationId (the debug build uses a .debug
suffix, which needs its own entry or its own file if both are to verify).

Verifying afterwards

  • adb shell pm get-app-links com.interlinedlist.android should report verified per host.
  • Google's checker: https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://interlinedlist.com&relation=delegate_permission/common.handle_all_urls

Related

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Big hole in a shipped feature

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions