Skip to main content

Android v26.7.0

Compatibility

NameVersionImplementation
Compile SDK36compileSdk = q2libs.versions.compileSdk.get()
Target SDK36targetSdk = q2libs.versions.targetSdk.get()
Min SDK29minSdk = q2libs.versions.minSdk.get()
Java / JVM21javaVersion = q2libs.versions.javaVersion
Gradle9.4.1gradle-wrapper.properties
Android Gradle Plugin9.1.0id(q2libs.plugins.android.application)
Kotlin Gradle Plugin2.3.20(built into AGP 9; no explicit plugin alias)
KSP2.3.6id(q2libs.plugins.ksp)
Google Services Plugin4.4.2id(q2libs.plugins.google.services)
Kotlin Serialization2.3.20id(q2libs.plugins.kotlin.serialization)

Migration from 26.6.0 to 26.7.0

Doing a multi-version migration?

If you're jumping more than 2–3 versions at once, walking each version's migration notes individually can be tedious and error-prone. Consider the Large Version Migrations guide instead — it walks you through replacing your local DevApp with a fresh copy at the target tag and dropping your module back in, which atomically picks up every scaffolding change at once.

No toolchain bumps in this release. Do the following in every module's build.gradle (not the app or root build.gradle).

1. Q2MobileSDK is deprecated — depend on sdk_interfaces directly

com.q2:Q2MobileSDK is no longer maintained and no longer publishes. The Q2Utils helper shipped inside it, so Q2Utils is also gone. Swap the dependency in every module's build.gradle:

dependencies {
- implementation "com.q2:Q2MobileSDK:$q2Version"
+ implementation "com.q2.msdk:sdk_interfaces:$q2Version"
}

2. Update the security channel id import

The nested PushReceiverModule.NotificationChannelId constant moved to a top-level NotificationChannelIds object.

- import com.q2.sdk_interfaces.PushReceiverModule
+ import com.q2.sdk_interfaces.NotificationChannelIds

val channelId =
- PushReceiverModule.NotificationChannelId.SECURITY_ALERTS
+ NotificationChannelIds.SECURITY_ALERTS

The old constant still compiles but emits a deprecation warning pointing at the new object.

3. Replace Q2Utils call sites

Q2Utils.openUIModule → run the JavaScript yourself through sdkUtils:

sdkUtils.runJavascriptInUUX(
"(function() { return __MOB.modules.open(\"$moduleId\", \"$moduleData\", console.log); })();",
callback
)

Q2Utils.requestPermission → use AndroidX ActivityResultContracts directly:

private val permissionLauncher =
registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
// handle result
}

fun askForCamera() {
permissionLauncher.launch(Manifest.permission.CAMERA)
}

Version Updates

Library Version Changes

Library26.6.0 Version26.7.0 VersionImpact
Q2 SDK Interfacescom.q2.app:sdk_interfaces @ 0.3.13com.q2.msdk:sdk_interfaces @ q2VersionCoord rename — Publishing group changed; version now tracks q2Version
com.q2:Q2MobileSDKpublished @ $q2Version(removed)Breaking — Depend on sdk_interfaces directly
AndroidX WebKit1.8.01.14.0Updated — Required for WebSettingsCompat.setWebAuthenticationSupport
AndroidX Credentials(not present)1.6.0New catalog entry — Version pinned for upcoming passkey work

PushReceiverModule is now deprecated

PushReceiverModule is marked @Deprecated as of this release and will be fully removed by end of year. Existing implementations continue to work and continue to be dispatched during the deprecation window — no immediate action is required — but no new work should be built on it.

Two new interfaces replace it and cover the same surface with a cleaner split between push notifications and URI-based deep links:

  • NotificationModule — FCM data messages, notification taps, channel creation, push enrollment events. Result-typed dispatch and optional owner-scoped delivery via a new q2_module_id FCM data key.
  • DeepLinkModule — URI-based deep links (app://… and verified https:// app links) with path-prefix pattern matching and auth-deferred re-dispatch.

Both pages include a call-for-call migration table for PushReceiverModule implementations.


Version Catalog

AndroidX Libraries

LibraryVersionImplementation
AndroidX Core KTX1.12.0implementation(q2libs.androidx.core.ktx)
AndroidX AppCompat1.6.1implementation(q2libs.androidx.appcompat)
AndroidX Activity KTX1.8.1implementation(q2libs.androidx.activity.ktx)
AndroidX Legacy Support1.0.0implementation(q2libs.androidx.legacy.support)
AndroidX Constraint Layout2.1.4implementation(q2libs.androidx.constraintlayout)
AndroidX CardView1.0.0implementation(q2libs.androidx.cardview)
AndroidX Local Broadcast Manager1.1.0implementation(q2libs.androidx.localbroadcastmanager)
AndroidX Percent Layout1.0.0implementation(q2libs.androidx.percentlayout)
AndroidX Biometric1.1.0implementation(q2libs.androidx.biometric)
AndroidX RecyclerView1.3.2implementation(q2libs.androidx.recyclerview)
AndroidX WebKit1.14.0implementation(q2libs.androidx.webkit)
AndroidX Media1.6.0implementation(q2libs.androidx.media)
AndroidX Browser1.8.0implementation(q2libs.androidx.browser)
AndroidX Grid Layout1.0.0implementation(q2libs.androidx.gridlayout)
AndroidX Preference1.2.1implementation(q2libs.androidx.preference)
AndroidX Security Crypto1.1.0-beta01implementation(q2libs.androidx.security.crypto)
AndroidX ExifInterface1.4.2implementation(q2libs.androidx.exifinterface)
AndroidX Credentials (ref only)1.6.0(catalog version pin; no library alias yet)

AndroidX Fragment

LibraryVersionImplementation
AndroidX Fragment1.7.0implementation(q2libs.androidx.fragment)
AndroidX Fragment KTX1.7.0implementation(q2libs.androidx.fragment.ktx)

AndroidX Navigation

LibraryVersionImplementation
AndroidX Navigation Fragment KTX2.7.4implementation(q2libs.androidx.navigation.fragment.ktx)
AndroidX Navigation UI KTX2.7.4implementation(q2libs.androidx.navigation.ui.ktx)
AndroidX Navigation Compose2.8.9implementation(q2libs.androidx.navigation.compose)

AndroidX Lifecycle

LibraryVersionImplementation
AndroidX Lifecycle Runtime KTX2.7.0implementation(q2libs.androidx.lifecycle.runtime.ktx)
AndroidX Lifecycle ViewModel KTX2.7.0implementation(q2libs.androidx.lifecycle.viewmodel.ktx)
AndroidX Lifecycle Process2.7.0implementation(q2libs.androidx.lifecycle.process)
AndroidX Lifecycle Compiler2.7.0ksp(q2libs.androidx.lifecycle.compiler)
AndroidX Lifecycle Extensions2.2.0 (Deprecated)implementation(q2libs.androidx.lifecycle.extensions)
AndroidX Lifecycle ViewModel Compose2.7.0implementation(q2libs.androidx.lifecycle.viewmodel.compose)

AndroidX Room

LibraryVersionImplementation
Room Runtime2.8.4implementation(q2libs.androidx.room.runtime)
Room Compiler2.8.4ksp(q2libs.androidx.room.compiler)
Room KTX2.8.4implementation(q2libs.androidx.room.ktx)

AndroidX CameraX

LibraryVersionImplementation
CameraX Camera21.5.0implementation(q2libs.androidx.camera.camera2)
CameraX Lifecycle1.5.0implementation(q2libs.androidx.camera.lifecycle)
Camera View1.5.0implementation(q2libs.androidx.camera.view)

AndroidX Compose

LibraryVersionImplementation
Compose BOM2025.12.01implementation(platform(q2libs.androidx.compose.bom))
Compose Foundation-implementation(q2libs.androidx.compose.foundation)
Compose UI-implementation(q2libs.androidx.compose.ui)
Compose UI Graphics-implementation(q2libs.androix.compose.ui.graphics)
Compose UI Tooling-implementation(q2libs.androix.compose.ui.tooling)
Compose UI Tooling Preview-implementation(q2libs.androix.compose.ui.tooling.preview)
Compose UI Test Manifest-implementation(q2libs.androix.compose.ui.test.manifest)
Compose UI Test JUnit4-implementation(q2libs.androix.compose.ui.test.junit4)
Compose Runtime LiveData-implementation(q2libs.androidx.compose.runtime.livedata)
Material Icons Core-implementation(q2libs.material.icons.core)
Material3-implementation(q2libs.material3)
Material3 Adaptive-implementation(q2libs.androidx.compose.material3.adpative)
Activity Compose1.8.2implementation(q2libs.activity.compose)

Google Libraries

LibraryVersionImplementation
Material1.10.0implementation(q2libs.google.material)
GSON2.10.1implementation(q2libs.google.gson)
Play Services Vision20.1.3 (Deprecated)implementation(q2libs.google.play.services.vision)
ZXing Core3.5.1implementation(q2libs.google.zxing.core)
Age Signals0.0.1-beta02implementation(q2libs.google.age.signals)

Firebase

LibraryVersionImplementation
Firebase Messaging23.3.0implementation(q2libs.google.firebase.messaging)
Firebase Messaging KTX23.3.0implementation(q2libs.google.firebase.messaging.ktx)
Firebase Instance ID21.1.0implementation(q2libs.google.firebase.iid)
Firebase Core21.1.1implementation(q2libs.google.firebase.core)
Firebase Crashlytics Build Tools2.9.9implementation(q2libs.google.firebase.crashlytics.buildtools)

Kotlin & Jetbrains

LibraryVersionImplementation
Kotlinx Coroutines1.7.3implementation(q2libs.jetbrains.kotlinx.coroutines)
Kotlinx Serialization JSON1.11.0implementation(q2libs.kotlinx.serialization)
Jetbrains Annotations20.1.0implementation(q2libs.jetbrains.annotations)

Networking

LibraryVersionImplementation
Retrofit22.9.0implementation(q2libs.retrofit2.retrofit)
Retrofit2 Converter GSON2.9.0implementation(q2libs.retrofit2.converter.gson)
Retrofit2 RxJava Adapter2.1.0implementation(q2libs.retrofit2.adapter.rxjava)
OkHttp34.10.0implementation(q2libs.okhttp3.okhttp)
OkHttp3 Logging Interceptor4.10.0implementation(q2libs.okhttp3.logging.interceptor)
RxAndroid1.2.0implementation(q2libs.reactivex.rxandroid)
Volley1.2.1implementation(q2libs.volley)

Dependency Injection

LibraryVersionImplementation
Dagger2.59.2implementation(q2libs.dagger)
Dagger Compiler2.59.2ksp(q2libs.dagger.compiler)
Hilt2.59.2implementation(q2libs.hilt)
Hilt Compiler2.59.2ksp(q2libs.hilt.compiler)
Hilt Navigation Compose1.2.0implementation(q2libs.androidx.hilt.navigation.compose)
Glassfish Annotation10.0-b28implementation(q2libs.glassfish.annotation)

Dependency Injection (Koin)

LibraryVersionImplementation
Koin Android3.4.3implementation(q2libs.koin.android)
Koin Core3.4.3implementation(q2libs.koin.core)
Koin AndroidX Compose3.5.0implementation(q2libs.koin.androidx.compose)

Third-Party Libraries

LibraryVersionImplementation
EventBus3.3.1implementation(q2libs.eventbus)
EventBus Processor3.3.1ksp(q2libs.eventbus.processor)
Commons IO2.6implementation(q2libs.commons.io)
Picasso2.8implementation(q2libs.picasso)
Coil2.7.0implementation(q2libs.coil)
Timber5.0.1implementation(q2libs.timber)
Apache Commons Imaging1.0-alpha2implementation(q2libs.apache.commons.imaging)

Q2 SDK Components

LibraryCoordVersionImplementation
Q2 SDK Interfacescom.q2.msdk:sdk_interfacesq2Versionimplementation project(':sdk_interfaces')
Q2 UI Componentscom.q2:ui-components0.1.1implementation(q2libs.q2.ui.components)
Q2 Routing Service(local project, unpublished)q2Versionimplementation project(':modules:q2_routing_service')

Plugin Declarations

PluginIDImplementation
Android Applicationcom.android.applicationid(q2libs.plugins.android.application)
Android Librarycom.android.libraryid(q2libs.plugins.android.library)
KSPcom.google.devtools.kspid(q2libs.plugins.ksp)
Compose Compilerorg.jetbrains.kotlin.plugin.composeid(q2libs.plugins.compose.compiler)
Hiltcom.google.dagger.hilt.androidid(q2libs.plugins.hilt)
Kotlin Parcelizeorg.jetbrains.kotlin.plugin.parcelizeid(q2libs.plugins.kotlin.parcelize)
Google Servicescom.google.gms.google-servicesid(q2libs.plugins.google.services)
Artifactorycom.jfrog.artifactoryid(q2libs.plugins.artifactory)
Kotlin Serializationorg.jetbrains.kotlin.plugin.serializationid(q2libs.plugins.kotlin.serialization)
Dokkaorg.jetbrains.dokkaid(q2libs.plugins.dokka)

Library Bundles

BundleLibrariesImplementation
Daggerdagger, glassfish-annotationimplementation(q2libs.bundles.dagger)
Retrofit2retrofit2-retrofit, retrofit2-converter-gsonimplementation(q2libs.bundles.retrofit2)
Koinkoin-android, koin-core, koin-androidx-composeimplementation(q2libs.bundles.koin)