Compatibility
Name | Version | Implementation |
---|
Compile SDK | 35 | compileSdk = q2libs.versions.compileSdk.get() |
Target SDK | 35 | targetSdk = q2libs.versions.targetSdk.get() |
Min SDK | 29 | minSdk = q2libs.versions.minSdk.get() |
Android Gradle Plugin | 8.2.2 | id(q2libs.plugins.android.application) |
Kotlin Gradle Plugin | 2.0.20 | id(q2libs.plugins.kotlin.android) |
Google Services Plugin | 4.3.15 | id(q2libs.plugins.google.services) |
Kotlin Serialization | 1.9.0 | id(q2libs.plugins.kotlin.serialization) |
Migration Guide - Theme Configuration
Required Theme Implementation
With the release of DevApp
Core 25.5.0, Q2 DevApp Core
no longer exposes default
themes. DevApp
implementations must now provide their own theme configuration.
Adding Theme Configuration
Create or update your res/values/theme.xml
file with the following configuration:
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="AppTheme" parent="BaseAppTheme"/>
<style name="BaseAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:colorPrimary">@color/submit_button_color</item>
<item name="android:textAllCaps">false</item>
<item name="android:colorPrimaryDark">@color/submit_button_color</item>
<item name="android:statusBarColor">@color/submit_button_color</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:textColorPrimary">@color/content_text_color</item>
<item name="android:textColorHighlight">@color/content_text_color</item>
<item name="android:editTextStyle">@style/App_EditTextStyle</item>
<item name="android:textViewStyle">@style/App_TextViewStyle</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
<item name="android:fitsSystemWindows">true</item>
</style>
</resources>
Theme Customization
This configuration provides our recommended baseline theme that maintains consistency with
Q2 standards. You can customize any of these theme attributes to match your specific
branding and design requirements.
Edge-to-Edge Support
The current theme configuration disables edge-to-edge display support, as Q2 Mobile App
does not yet fully support this feature in this release. The following two properties
handle this:
android:windowLayoutInDisplayCutoutMode
- Set to shortEdges
android:fitsSystemWindows
- Set to true
If you want to future-proof your implementation and test against edge-to-edge support, you
can remove these two properties from your theme configuration. However, be aware that this
may cause display issues until full edge-to-edge support is implemented in future
releases.
Version Catalog
AndroidX Libraries
Library | Version | Implementation |
---|
AndroidX Core KTX | 1.12.0 | implementation(q2libs.androidx.core.ktx) |
AndroidX AppCompat | 1.6.1 | implementation(q2libs.androidx.appcompat) |
AndroidX Activity KTX | 1.9.0 | implementation(q2libs.androidx.activity.ktx) |
AndroidX Legacy Support | 1.0.0 | implementation(q2libs.androidx.legacy.support) |
AndroidX Constraint Layout | 2.1.4 | implementation(q2libs.androidx.constraintlayout) |
AndroidX CardView | 1.0.0 | implementation(q2libs.androidx.cardview) |
AndroidX Local Broadcast Manager | 1.1.0 | implementation(q2libs.androidx.localbroadcastmanager) |
AndroidX Percent Layout | 1.0.0 | implementation(q2libs.androidx.percentlayout) |
AndroidX Biometric | 1.1.0 | implementation(q2libs.androidx.biometric) |
AndroidX RecyclerView | 1.3.2 | implementation(q2libs.androidx.recyclerview) |
AndroidX WebKit | 1.8.0 | implementation(q2libs.androidx.webkit) |
AndroidX Media | 1.6.0 | implementation(q2libs.androidx.media) |
AndroidX Browser | 1.8.0 | implementation(q2libs.androidx.browser) |
AndroidX Grid Layout | 1.0.0 | implementation(q2libs.androidx.gridlayout) |
AndroidX Preference | 1.2.1 | implementation(q2libs.androidx.preference) |
AndroidX Fragment
Library | Version | Implementation |
---|
AndroidX Fragment | 1.7.0 | implementation(q2libs.androidx.fragment) |
AndroidX Fragment KTX | 1.7.0 | implementation(q2libs.androidx.fragment.ktx) |
AndroidX Navigation
Library | Version | Implementation |
---|
AndroidX Navigation Fragment KTX | 2.7.4 | implementation(q2libs.androidx.navigation.fragment.ktx) |
AndroidX Navigation UI KTX | 2.7.4 | implementation(q2libs.androidx.navigation.ui.ktx) |
AndroidX Lifecycle
Library | Version | Implementation |
---|
AndroidX Lifecycle Runtime KTX | 2.7.0 | implementation(q2libs.androidx.lifecycle.runtime.ktx) |
AndroidX Lifecycle ViewModel KTX | 2.7.0 | implementation(q2libs.androidx.lifecycle.viewmodel.ktx) |
AndroidX Lifecycle Process | 2.7.0 | implementation(q2libs.androidx.lifecycle.process) |
AndroidX Lifecycle Compiler | 2.7.0 | kapt(q2libs.androidx.lifecycle.compiler) |
AndroidX Lifecycle Extensions | 2.2.0 (Deprecated) | implementation(q2libs.androidx.lifecycle.extensions) |
AndroidX Lifecycle ViewModel Compose | 2.7.0 | implementation(q2libs.androidx.lifecycle.viewmodel.compose) |
AndroidX Room
Library | Version | Implementation |
---|
Room Runtime | 2.6.0 | implementation(q2libs.androidx.room.runtime) |
Room Compiler | 2.6.0 | kapt(q2libs.androidx.room.compiler) |
AndroidX CameraX
Library | Version | Implementation |
---|
CameraX Camera2 | 1.3.0 | implementation(q2libs.androidx.camera.camera2) |
CameraX Lifecycle | 1.3.0 | implementation(q2libs.androidx.camera.lifecycle) |
Camera View | 1.0.0-alpha22 | implementation(q2libs.androidx.camera.view) |
AndroidX Compose
Library | Version | Implementation |
---|
Compose BOM | 2024.09.02 | implementation(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) |
Material3 | - | implementation(q2libs.material3) |
Material3 Adaptive | - | implementation(q2libs.androidx.compose.material3.adpative) |
Activity Compose | 1.8.2 | implementation(q2libs.activity.compose) |
Google Libraries
Library | Version | Implementation |
---|
Material | 1.10.0 | implementation(q2libs.google.material) |
GSON | 2.10.1 | implementation(q2libs.google.gson) |
Play Services Vision | 20.1.3 (Deprecated) | implementation(q2libs.google.play.services.vision) |
ZXing Core | 3.5.1 | implementation(q2libs.google.zxing.core) |
Firebase
Library | Version | Implementation |
---|
Firebase Messaging | 23.3.0 | implementation(q2libs.google.firebase.messaging) |
Firebase Messaging KTX | 23.3.0 | implementation(q2libs.google.firebase.messaging.ktx) |
Firebase Instance ID | 21.1.0 | implementation(q2libs.google.firebase.iid) |
Firebase Core | 21.1.1 | implementation(q2libs.google.firebase.core) |
Firebase Crashlytics Build Tools | 2.9.9 | implementation(q2libs.google.firebase.crashlytics.buildtools) |
Kotlin & Jetbrains
Library | Version | Implementation |
---|
Kotlinx Coroutines | 1.6.4 | implementation(q2libs.jetbrains.kotlinx.coroutines) |
Jetbrains Annotations | 20.1.0 | implementation(q2libs.jetbrains.annotations) |
Networking
Library | Version | Implementation |
---|
Retrofit2 | 2.9.0 | implementation(q2libs.retrofit2.retrofit) |
Retrofit2 Converter GSON | 2.9.0 | implementation(q2libs.retrofit2.converter.gson) |
Retrofit2 RxJava Adapter | 2.1.0 | implementation(q2libs.retrofit2.adapter.rxjava) |
OkHttp3 | 4.10.0 | implementation(q2libs.okhttp3.okhttp) |
OkHttp3 Logging Interceptor | 4.10.0 | implementation(q2libs.okhttp3.logging.interceptor) |
RxAndroid | 1.2.0 | implementation(q2libs.reactivex.rxandroid) |
Dependency Injection
Library | Version | Implementation |
---|
Dagger | 2.52 | implementation(q2libs.dagger) |
Dagger Compiler | 2.52 | kapt(q2libs.dagger.compiler) |
Hilt | 2.52 | implementation(q2libs.hilt) |
Hilt Compiler | 2.52 | kapt(q2libs.hilt.compiler) |
Glassfish Annotation | 10.0-b28 | implementation(q2libs.glassfish.annotation) |
Third-Party Libraries
Library | Version | Implementation |
---|
EventBus | 3.3.1 | implementation(q2libs.eventbus) |
EventBus Processor | 3.3.1 | kapt(q2libs.eventbus.processor) |
Commons IO | 2.6 | implementation(q2libs.commons.io) |
Picasso | 2.8 | implementation(q2libs.picasso) |
Coil | 2.7.0 | implementation(q2libs.coil) |
Timber | 5.0.1 | implementation(q2libs.timber) |
Apache Commons Imaging | 1.0-alpha2 | implementation(q2libs.apache.commons.imaging) |
Plugin Declarations
Plugin | ID | Implementation |
---|
Android Application | com.android.application | id(q2libs.plugins.android.application) |
Android Library | com.android.library | id(q2libs.plugins.android.library) |
Kotlin Android | org.jetbrains.kotlin.android | id(q2libs.plugins.kotlin.android) |
Kotlin Kapt | org.jetbrains.kotlin.kapt | id(q2libs.plugins.kotlin.kapt) |
Compose Compiler | org.jetbrains.kotlin.plugin.compose | id(q2libs.plugins.compose.compiler) |
Hilt | com.google.dagger.hilt.android | id(q2libs.plugins.hilt) |
Kotlin Parcelize | org.jetbrains.kotlin.plugin.parcelize | id(q2libs.plugins.kotlin.parcelize) |
Google Services | com.google.gms.google-services | id(q2libs.plugins.google.services) |
Kotlin Serialization | org.jetbrains.kotlin.plugin.serialization | id(q2libs.plugins.kotlin.serialization) |