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.
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.jsonformat 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.
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.
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.
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.
- Full documentation site: https://airlock.maxisdev.com
- Integration Brief Template — consultant ↔ developer handoff
- API Reference
- Troubleshooting
- App calls
MobileCore.trackAction(...)orMobileCore.trackState(...). - AEP EventHub routes the event; Airlock caches it.
- An Adobe Launch rule with the Evaluate JavaScript Rules action fires; Airlock runs the script in a sandboxed Mozilla Rhino context with
eventandsharedStateavailable. - Script return value → enriched event dispatched as
Airlock Processed Track(or suppressed ifnull/undefined). - 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.
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.
Apache 2.0. See LICENSE.