Skip to content

maxisdigital/airlock-android

Repository files navigation

Airlock for Android

Status Build License Platform

JavaScript rules engine for Adobe Experience Platform Mobile SDK events. Drop-in extension that lets Adobe Launch (Tags) authors enrich, mutate, suppress, or pass through trackState / trackAction payloads with on-device JavaScript — no app rebuild required.

Part of the Mission Control suite, developed by Maxis Digital.

What "Public Beta" means

The cross-platform behavioural contract is stable — iOS and Android parity is tested with shared fixtures, and the API surface is small. We're using a Beta tag because:

  • Pre-1.0 SemVer: minor-version bumps may include breaking changes. Each release's breaking changes are listed in CHANGELOG.md.
  • Schema may still move: the rules.json format and Launch UI surface are settled but not frozen.
  • Production use is at your own risk — we recommend pinning to an exact version and testing in non-production first.

Once we cut 1.0, breaking changes will be reserved for major version bumps.

Install (Gradle, via JitPack)

In your root settings.gradle.kts:

dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven { url = uri("https://jitpack.io") }
    }
}

In your app module build.gradle.kts:

dependencies {
    implementation("com.adobe.marketing.mobile:core:3.+")
    implementation("com.adobe.marketing.mobile:identity:3.+")
    implementation("com.adobe.marketing.mobile:lifecycle:3.+")
    implementation("com.adobe.marketing.mobile:analytics:3.+")
    implementation("com.adobe.marketing.mobile:assurance:3.+")
    implementation("com.github.maxisdigital:airlock-android:0.3.17")
}

Maven Central publishing is planned for v1.0 — see the parent project's roadmap.

Register at app launch

import android.app.Application
import com.adobe.marketing.mobile.*
import com.maxisdigital.airlock.Airlock

class MainApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        MobileCore.setApplication(this)

        MobileCore.registerExtensions(
            listOf(
                Identity.EXTENSION,
                Lifecycle.EXTENSION,
                Analytics.EXTENSION,
                Assurance.EXTENSION,
                Airlock.EXTENSION,
            )
        ) {
            MobileCore.configureWithAppID("<your-launch-app-id>")
            MobileCore.lifecycleStart(null)
        }
    }
}

Declare it in your manifest: android:name=".MainApplication".

That's it. Authoring of rules, macros, lookup tables, accumulators, and derived metrics happens entirely in the Adobe Launch UI.

Sample app

testapp/ is a runnable Jetpack Compose harness with Assurance pre-wired. Copy testapp/app/src/main/assets/config.example.json to config.json, fill in your Launch environment file ID, then ./gradlew :app:installDebug.

Documentation

Architecture in 30 seconds

  1. App calls MobileCore.trackAction(...) or MobileCore.trackState(...).
  2. AEP EventHub routes the event; Airlock caches it.
  3. An Adobe Launch rule with the Evaluate JavaScript Rules action fires; Airlock runs the script in a sandboxed Mozilla Rhino context with event and sharedState available.
  4. Script return value → enriched event dispatched as Airlock Processed Track (or suppressed if null/undefined).
  5. A downstream Launch rule picks up the enriched event and sends it to Analytics.

See How It Works for the full mechanism and the two-rule pattern.

Contributing

We develop on a private GitLab instance and mirror releases here. Bug reports and discussions are very welcome via Issues and Discussions.

Pull requests opened on GitHub will be closed with a polite redirect. If you'd like to contribute code, contact airlock@maxisdev.com and we'll add you as a user on the GitLab instance.

Licence

Apache 2.0. See LICENSE.

About

Airlock — Adobe Launch (Tags) extension for AEP Mobile SDK. JavaScript rules engine for Android event payloads.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors