SDDL Android SDK — App Links setup & quick integration

Add reliable deep linking with deferred context using Android App Links. This guide covers repository & dependency, intent filters with autoVerify, assetlinks.json via SDDL, SHA-256 fingerprints, and a minimal Kotlin usage example.

Requirements

  • Android 5.0+ (SDK 21+)
  • Verified domain for App Links: {YOUR_ID}.sddl.me or your custom domain
  • Internet permission in AndroidManifest.xml

Gradle setup

Add JitPack and the SDK dependency.

Option A — settings.gradle.kts (recommended):

pluginManagement {
  repositories {
    gradlePluginPortal()
    google()
    mavenCentral()
    maven("https://jitpack.io")
  }
}
dependencyResolutionManagement {
  repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  repositories {
    google()
    mavenCentral()
    maven("https://jitpack.io")
  }
}

Add dependency in app/build.gradle.kts:

dependencies {
  implementation("com.github.nonanerz:sddl-android-sdk:2.0.9") // use latest
}

App Links (Manifest)

Declare an intent filter with android:autoVerify="true" for your deep link host. Use either your verified custom domain or {YOUR_ID}.sddl.me.

<uses-permission android:name="android.permission.INTERNET" />

<activity
    android:name=".MainActivity"
    android:exported="true"
    android:launchMode="singleTop">

  <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"
      android:host="{YOUR_ID}.sddl.me OR your.custom.domain"
      android:pathPrefix="/" />
  </intent-filter>

  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>

</activity>

If you use multiple hosts, declare additional <data> entries or separate intent filters.

Get SHA-256 fingerprints

Debug keystore:

keytool -list -v -alias androiddebugkey \
 -keystore ~/.android/debug.keystore \
 -storepass android -keypass android

Release keystore:

keytool -list -v -alias YOUR_ALIAS \
 -keystore /path/to/your-release-key.jks

Copy the SHA256 value(s) into SDDL → App Links Configuration. Include both Debug and Release if you test both builds.

Minimal Kotlin usage

Handle links on launch and when the activity receives a new intent:

class MainActivity : ComponentActivity() {

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    SDDLHelper.resolve(this, intent, ::routeWith, ::handleDeepLinkError, readClipboard = false)
  }

  override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    SDDLHelper.resolve(this, intent, ::routeWith, ::handleDeepLinkError, readClipboard = false)
  }

  private fun routeWith(payload: JsonObject) {
    // Navigate based on payload, e.g. payload["product_id"]
  }

  private fun handleDeepLinkError(error: String) {
    // Optional: log or report
  }
}

Testing & Troubleshooting

  • Verify App Links: adb shell pm verify-app-links your.package.name
  • Force-open test: adb shell am start -a android.intent.action.VIEW -d "https://your.domain/path"
  • Domain preferences: adb shell dumpsys package domain-preferred-apps
  • Match hosts: Manifest host must match the deep link domain (custom or {YOUR_ID}.sddl.me).
  • Intermediate page (optional): enables more reliable capture for certain in-app browsers/ad platforms.

FAQ

Do I need to host assetlinks.json?

No. SDDL publishes it automatically from your App Links Configuration (package + SHA-256).

Links still open in the browser. What should I check?

Confirm android:autoVerify="true", the host matches your domain, fingerprints are correct in SDDL, and run the verification command. Reinstall the app after changing certificates or manifest entries.

Can I use multiple domains?

Yes. Add additional <data> entries or intent filters for each host, and configure each domain in SDDL.