Deeplio
Sign inStart free
Android Platform8 min read • Updated October 2026

Mastering Android App Links Verification and Fallback Routing

Ensure seamless one-tap app opening on Android 12, 13, 14, and 15 by automating Digital Asset Links verification and eliminating ambiguous disambiguation dialogs.

How Android App Links Differ from Deep Links

Standard Android deep links use custom URL schemes or unverified HTTP URIs. When tapped, Android presents the user with an 'Open with' disambiguation dialog, asking whether to open the browser or the app. Users frequently select the browser or click 'Always', permanently breaking your app opening experience.

Android App Links are verified HTTP(S) URLs that open your installed app immediately without showing a disambiguation dialog. Starting in Android 12, Google enforced strict automatic verification: if your domain fails verification, the OS will only open links in the default browser.

The Digital Asset Links Specification

Android verifies domain ownership by fetching https://yourdomain.com/.well-known/assetlinks.json using strict network requirements: HTTP 200 status, Content-Type application/json, maximum file size under 1MB, zero redirects, and valid TLS certificates trusted by Android CA store.

Here is the standard Assetlinks payload structure generated and served by Deeplio:

/.well-known/assetlinks.jsonjson
[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.yourcompany.yourapp",
      "sha256_cert_fingerprints": [
        "AA:F3:E9:53:DC:7B:8E:31:55:10:5B:C2:21:54:33:9A:B1:34:67:E2:01:43:55:92:10:84:77:E1:92:30:11:AB"
      ]
    }
  }
]

AndroidManifest.xml Intent Filter Configuration

To trigger Android's domain verification engine, your AndroidManifest.xml must declare android:autoVerify='true' inside the target activity's intent-filter:

AndroidManifest.xmlxml
<activity
    android:name=".MainActivity"
    android:exported="true">
    
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        
        <data android:scheme="https" />
        <data android:host="go.yourcompany.com" />
    </intent-filter>
</activity>

Verifying and Troubleshooting Android Domain State

Android verifies domains during app installation and package updates. You can verify the verification status on connected devices or emulators using adb:

terminalbash
# Check domain verification state for your package
adb shell pm get-app-links com.yourcompany.yourapp

# Re-trigger domain verification manually
adb shell pm verify-app-links --re-verify com.yourcompany.yourapp
Production Keystore vs Google Play Signing

If you use Google Play App Signing, Google replaces your upload key with their production signing key. Be sure to register the App Signing key certificate SHA-256 fingerprint from Google Play Console in Deeplio, not just your local debug keystore.

Standard Deep Links vs Verified Android App Links

Why Android 12+ requires certified domain association.

CapabilityDeeplio EdgeAlternative / Legacy
Domain Verification
Zero redirect requirement guaranteed
Instant autoVerify compliance with Anycast CDNRequires self-managed HTTPS web host
Fallback Destination
Converts non-installed traffic automatically
Direct Google Play listing fallbackManual client scripts or 404 page
ENGINEERING SUMMARY

Key Implementation Checkpoints

  • Include android:autoVerify='true' in your intent-filter.
  • Add both development and Google Play App Signing SHA-256 fingerprints.
  • Deeplio automatically hosts the valid assetlinks.json on your custom domain.
START ROUTING IN MINUTES

Ready to deploy branded Smart Links for your mobile app?

Automate your Apple AASA and Android Assetlinks endpoints on your own domain with fast Anycast edge routing. No client SDK required.

Frequently Asked Questions

Can assetlinks.json be served behind a redirect?

No. The Android OS verifier strictly requires an HTTP 200 response with zero redirect hops. Deeplio terminates requests directly on Cloudflare edge workers, serving the JSON immediately.

What happens if a user taps the link on desktop?

Deeplio inspects the User-Agent header at the edge. Desktop requests are routed to your designated web destination or marketing homepage, while mobile Android users launch the app or Google Play.

Related Implementation Guides

One link.
The right destination.

Join mobile developers and indie teams creating seamless, deterministic app links.