Skip to content

About

Android deep linking, verified App Links, Navigation Component, notification navigation, and Firebase Hosting.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

DeepLinkNavigationLab

Android CI

An Android project exploring deep links, Android App Links, navigation behavior, Firebase Hosting, and release signing.

Overview

This project demonstrates how URLs and Android notifications can navigate users to specific destinations in an Android application.

Features

  • Custom scheme deep links (myapp://).
  • HTTPS Android App Links with domain verification.
  • Navigation arguments and default values.
  • Input validation for deep-link parameters.
  • Navigation back-stack management.
  • Notification navigation with NavDeepLinkBuilder.
  • Firebase Hosting with product-page fallback routing.
  • Release-signed APK and Android App Bundle (AAB).

Tech Stack

  • Java
  • Android SDK
  • XML layouts
  • AndroidX Navigation Component
  • AndroidX NotificationCompat
  • Firebase Hosting
  • Gradle Kotlin DSL

Requirements

  • Android Studio
  • Android SDK 37
  • Compatible JDK
  • Firebase CLI for hosting deployment

Minimum Android SDK: 24.

Deep Link Examples

Custom Scheme

myapp://product/123?source=custom-scheme

HTTPS App Link

https://deeplinknavigationlab.web.app/product/123?source=browser

Notification

The notification opens ProductFragment with a product ID and source argument.

Firebase Hosting

Website: https://deeplinknavigationlab.web.app

The hosting directory is public/. The Android App Links association file is:

public/.well-known/assetlinks.json

Deploy the website with:

firebase deploy --only hosting

The SHA-256 fingerprints in assetlinks.json must match the signing certificates used by the relevant builds.

Build

Build the debug APK:

./gradlew assembleDebug

Build the release APK:

./gradlew assembleRelease

Build the Android App Bundle:

./gradlew bundleRelease

Release builds require a locally configured keystore and keystore.properties. Never commit signing credentials or private keys.

Testing

Test a custom scheme:

adb shell am start -W \
  -a android.intent.action.VIEW \
  -c android.intent.category.BROWSABLE \
  -d "myapp://product/777?source=custom-scheme"

Test an HTTPS App Link:

adb shell am start -W \
  -a android.intent.action.VIEW \
  -c android.intent.category.BROWSABLE \
  -d "https://deeplinknavigationlab.web.app/product/321?source=promo"

Check Android App Links verification:

adb shell pm get-app-links com.sayuti.deeplinknavigationlab

Security Notes

  • Validate incoming deep-link parameters before using them.
  • Treat source as metadata, not as authorization.
  • Keep signing credentials and keystore files out of version control.
  • Keep the App Links association file synchronized with the relevant certificate fingerprints.

Project Status

Developed as a hands-on Android learning project covering deep links, navigation, Firebase Hosting, and release signing.

Screenshots

Home Screen

Home Screen

Product Screen — Deep Link

Product Screen showing deep link parameters

Notification Navigation

Notification navigation

Verified Test Scenarios

The release APK was manually tested on an Android emulator.

Scenario Input Expected result Status
HTTPS Android App Link /product/123?source=browser Product ID 123, source browser Passed
Custom URI scheme myapp://product/456?source=custom-scheme Product ID 456, source custom-scheme Passed
Notification navigation Product ID 888 Product ID 888, source notification Passed

Automated validation: Android debug build, unit tests, and Android Lint via GitHub Actions.

About

Android deep linking, verified App Links, Navigation Component, notification navigation, and Firebase Hosting.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages