# Android App Links Not Opening? Fix Deep Links > Fix Android app links not opening with this guide. Troubleshoot SHA-256 fingerprints, assetlinks.json errors, autoVerify, and Digital Asset Links setup. - Canonical: https://redirectly.app/debug/android-app-links-not-opening - Site: [Redirectly](https://redirectly.app) — deferred deep linking for Flutter & React Native Complete troubleshooting guide for Android app links failures. Learn about SHA-256 fingerprints, assetlinks.json configuration, autoVerify, Play App Signing, and Digital Asset Links verification. ## Why Android app links fail ### App links open in browser, not app If links open Chrome instead of your app, the assetlinks.json file is not validating or SHA-256 does not match. Without autoVerify, users see app chooser dialog. Android app links require three critical components: correct SHA-256 fingerprint, proper assetlinks.json hosting, and autoVerify enabled. A single mismatch breaks the entire system. ### SHA-256 Fingerprint Must match exactly from your signing key. Use Play Console version if using Play App Signing. ### assetlinks.json Must be valid JSON, properly hosted at .well-known/, and accessible to Google servers. ### autoVerify Intent filter attribute that enables automatic verification when app installs. ## Step-by-step troubleshooting ### 1. Get your correct SHA-256 fingerprint Critical: Use the fingerprint from Google Play Console, not your local keystore. - If using Play App Signing: Go to Google Play Console > App signing for internal testing - Copy the SHA-256 certificate fingerprint shown in the console - If self-signing: Run `keytool -list -v -keystore keystore.jks | grep SHA256` - Format must be pairs separated by colons: AA:BB:CC:DD... (no spaces) - Save this value to use in assetlinks.json ### 2. Create and validate assetlinks.json Your JSON must be valid and include the correct SHA-256 fingerprint. - Create file .well-known/assetlinks.json in your web server root - Use format: `[{"relation":["delegate_permission/common.handle_all_urls"],"target":{"namespace":"android_app","package_name":"com.example.app","sha256_cert_fingerprints":["AA:BB:CC:..."]}}]` - Validate with /assetlinks-validator before deploying - Check for trailing commas, missing quotes, or other JSON syntax errors - Test in browser: domain.com/.well-known/assetlinks.json should return JSON ### 3. Add autoVerify to intent filter This attribute enables automatic verification when your app installs. - Open your AndroidManifest.xml - Find the intent-filter for deep links - Add: `android:autoVerify="true"` to the intent-filter tag - Example: `` - Rebuild and test your app after making this change ### 4. Verify hosting and accessibility Google and Android must be able to fetch your assetlinks.json without restrictions. - Test file is accessible: `curl -I https://yourdomain.com/.well-known/assetlinks.json` - Should return 200 OK with Content-Type: application/json - Verify no authentication, IP restrictions, or WAF blocks Google servers - Check for redirect chains (Google can follow up to 5 redirects) - Ensure DNS resolves correctly and certificate is valid ### 5. Verify in Google Play Console Google Play Console shows verification status and issues. - Go to App Links section in Google Play Console - Check "Digital Asset Links" verification status - If verification fails, follow error messages to identify issues - Common errors: wrong SHA-256, assetlinks.json not found, invalid format - After fixing, re-test verification (may take up to 2 hours) ## Common causes of app link failures ### Wrong SHA-256 fingerprint **Cause:** Using local keystore fingerprint when Play App Signing is enabled **Fix:** Get SHA-256 from Google Play Console > App signing, not keytool output ### assetlinks.json not found (404) **Cause:** File is not at .well-known/assetlinks.json or web server not configured **Fix:** Verify file location and test with curl. Ensure web server serves from correct root. ### Invalid JSON in assetlinks.json **Cause:** Syntax errors like trailing commas, missing quotes, or formatting issues **Fix:** Use /assetlinks-validator to identify JSON errors before deploying ### Wrong content-type header **Cause:** assetlinks.json served as text/plain instead of application/json **Fix:** Configure web server (nginx, Apache, CDN) to serve with application/json ### autoVerify not in intent-filter **Cause:** Attribute missing from AndroidManifest.xml **Fix:** Add `android:autoVerify="true"` to your deep link intent-filter ### assetlinks.json changes not deployed **Cause:** CDN caching or web server not updated with new file **Fix:** Purge CDN cache and verify new file is live before testing ### Package name mismatch **Cause:** assetlinks.json contains different package name than your app **Fix:** Verify package_name in assetlinks.json exactly matches AndroidManifest.xml ### Fingerprint has spaces or lowercase **Cause:** Formatting issues in SHA-256 value **Fix:** Ensure uppercase hex with colons between pairs: AA:BB:CC:DD (no spaces) ## Android app links fix checklist - SHA-256 fingerprint copied from Google Play Console (or keytool for local testing) - assetlinks.json is valid JSON (test with /assetlinks-validator) - assetlinks.json located at /.well-known/assetlinks.json on web server - assetlinks.json is accessible via curl or browser (200 OK, not 404) - Content-Type header is application/json (not text/plain) - Package name in assetlinks.json matches AndroidManifest.xml exactly - SHA-256 fingerprint format is correct (uppercase, colon-separated pairs) - `android:autoVerify="true"` is in your deep link intent-filter - AndroidManifest.xml has proper intent-filter with action, category, and data tags - App is signed with correct signing key matching SHA-256 - App has been uninstalled and reinstalled after code changes - CDN cache has been purged after assetlinks.json updates - Google Play Console Digital Asset Links verification shows success - App is built in release mode (if testing production verification) ## Debug Android app links with Redirectly Use Redirectly's free assetlinks.json validator to test your configuration and identify issues: - [Validate assetlinks.json](https://redirectly.app/assetlinks-validator.md) - [React Native Deep Linking Guide](https://redirectly.app/react-native-deferred-deep-linking.md) ## Frequently asked questions ### What is the difference between Play App Signing and local keystore? Google Play Console can re-sign your app with a different key (Play App Signing). This creates a different SHA-256 fingerprint than your local key. Always use Play Console fingerprint for production verification. ### Can I test app links before uploading to Play Store? Yes. Test locally with your local keystore SHA-256, or use Play Console's internal testing track which shows the actual Play App Signing fingerprint. ### How long does app link verification take? Android verifies assetlinks.json when the app installs. If verification fails, users see app chooser dialog instead of automatic open. Fixing and reinstalling should work immediately. ### Can I have app links for multiple domains? Yes. Create assetlinks.json on each domain, and add multiple data entries in your AndroidManifest.xml intent-filter. Each domain needs its own assetlinks.json file. ### What if my app uses App Links but users still see chooser dialog? autoVerify may be missing, or app is not installed with correct signing key. Check Android System Settings > Apps > Your App > Supported Links for verification status. --- Full site index for AI agents: https://redirectly.app/llms.txt