1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 import org.gradle.api.Plugin
6 import org.gradle.api.initialization.Settings
8 // If you ever need to force a toolchain rebuild (taskcluster) then edit the following comment.
9 // FORCE REBUILD 2023-05-24
11 class DependenciesPlugin : Plugin<Settings> {
12 override fun apply(settings: Settings) = Unit
15 // Synchronized version numbers for dependencies used by (some) modules
17 const val kotlin = "1.9.22"
18 const val coroutines = "1.8.0"
19 const val serialization = "1.6.3"
20 const val python_envs_plugin = "0.0.31"
22 const val junit = "4.13.2"
23 const val robolectric = "4.11.1"
24 const val mockito = "5.10.0"
25 const val maven_ant_tasks = "2.1.3"
26 const val jacoco = "0.8.11"
27 const val okhttp = "4.12.0"
28 const val okio = "3.8.0"
29 const val coil = "2.4.0"
31 const val android_gradle_plugin = "8.2.2"
33 // This has to be synced to the gradlew plugin version. See
34 // http://googlesamples.github.io/android-custom-lint-rules/api-guide/example.md.html#example:samplelintcheckgithubproject/lintversion?
35 const val lint = "31.2.2"
36 const val detekt = "1.23.5"
37 const val ktlint = "0.49.1"
39 const val sentry = "7.3.0"
41 const val zxing = "3.5.3"
43 const val disklrucache = "2.0.2"
44 const val leakcanary = "2.13"
46 // DO NOT MODIFY MANUALLY. This is auto-updated along with GeckoView.
47 const val mozilla_glean = "57.0.0"
49 const val material = "1.9.0"
50 const val ksp = "1.0.17"
51 val ksp_plugin = "$kotlin-$ksp"
53 // see https://android-developers.googleblog.com/2022/06/independent-versioning-of-Jetpack-Compose-libraries.html
54 // for Jetpack Compose libraries versioning
55 const val compose_version = "1.5.4"
56 const val compose_compiler = "1.5.9"
59 const val activityCompose = "1.7.2"
60 const val annotation = "1.7.1"
61 const val appcompat = "1.6.1"
62 const val autofill = "1.1.0"
63 const val browser = "1.7.0"
64 const val biometric = "1.1.0"
65 const val cardview = "1.0.0"
66 const val compose = compose_version
67 const val constraintlayout = "2.1.4"
68 const val coordinatorlayout = "1.2.0"
69 const val core = "1.12.0"
70 const val drawerlayout = "1.2.0"
71 const val fragment = "1.6.2"
72 const val recyclerview = "1.3.2"
73 const val test = "1.5.0"
74 const val test_ext = "1.1.5"
75 const val test_runner = "1.5.2"
76 const val espresso = "3.5.1"
77 const val room = "2.6.1"
78 const val savedstate = "1.2.1"
79 const val paging = "3.2.1"
80 const val palette = "1.0.0"
81 const val preferences = "1.2.1"
82 const val lifecycle = "2.7.0"
83 const val media = "1.7.0"
84 const val navigation = "2.7.7"
85 const val work = "2.7.1"
86 const val arch = "2.2.0"
87 const val uiautomator = "2.2.0"
88 const val localbroadcastmanager = "1.0.0"
89 const val swiperefreshlayout = "1.1.0"
90 const val data_store_preferences="1.0.0"
94 const val messaging = "23.4.1"
98 // Synchronized dependencies used by (some) modules
99 @Suppress("Unused", "MaxLineLength")
100 object ComponentsDependencies {
101 const val kotlin_coroutines = "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.coroutines}"
102 const val kotlin_reflect = "org.jetbrains.kotlin:kotlin-reflect:${Versions.kotlin}"
103 const val kotlin_json = "org.jetbrains.kotlinx:kotlinx-serialization-json:${Versions.serialization}"
105 const val testing_junit = "junit:junit:${Versions.junit}"
106 const val testing_robolectric = "org.robolectric:robolectric:${Versions.robolectric}"
107 const val testing_mockito = "org.mockito:mockito-core:${Versions.mockito}"
108 const val testing_mockwebserver = "com.squareup.okhttp3:mockwebserver:${Versions.okhttp}"
109 const val testing_coroutines = "org.jetbrains.kotlinx:kotlinx-coroutines-test:${Versions.coroutines}"
110 const val testing_maven_ant_tasks = "org.apache.maven:maven-ant-tasks:${Versions.maven_ant_tasks}"
111 const val testing_leakcanary = "com.squareup.leakcanary:leakcanary-android-instrumentation:${Versions.leakcanary}"
113 const val androidx_activity_compose = "androidx.activity:activity-compose:${Versions.AndroidX.activityCompose}"
114 const val androidx_annotation = "androidx.annotation:annotation:${Versions.AndroidX.annotation}"
115 const val androidx_appcompat = "androidx.appcompat:appcompat:${Versions.AndroidX.appcompat}"
116 const val androidx_autofill = "androidx.autofill:autofill:${Versions.AndroidX.autofill}"
117 const val androidx_arch_core_common = "androidx.arch.core:core-common:${Versions.AndroidX.arch}"
118 const val androidx_arch_core_testing = "androidx.arch.core:core-testing:${Versions.AndroidX.arch}"
119 const val androidx_biometric = "androidx.biometric:biometric:${Versions.AndroidX.biometric}"
120 const val androidx_browser = "androidx.browser:browser:${Versions.AndroidX.browser}"
121 const val androidx_cardview = "androidx.cardview:cardview:${Versions.AndroidX.cardview}"
122 const val androidx_compose_animation = "androidx.compose.animation:animation:${Versions.AndroidX.compose}"
123 const val androidx_compose_ui = "androidx.compose.ui:ui:${Versions.AndroidX.compose}"
124 const val androidx_compose_ui_graphics = "androidx.compose.ui:ui-graphics:${Versions.AndroidX.compose}"
125 const val androidx_compose_ui_test = "androidx.compose.ui:ui-test-junit4:${Versions.AndroidX.compose}"
126 const val androidx_compose_ui_test_manifest = "androidx.compose.ui:ui-test-manifest:${Versions.AndroidX.compose}"
127 const val androidx_compose_ui_tooling = "androidx.compose.ui:ui-tooling:${Versions.AndroidX.compose}"
128 const val androidx_compose_ui_tooling_preview = "androidx.compose.ui:ui-tooling-preview:${Versions.AndroidX.compose}"
129 const val androidx_compose_foundation = "androidx.compose.foundation:foundation:${Versions.AndroidX.compose}"
130 const val androidx_compose_material = "androidx.compose.material:material:${Versions.AndroidX.compose}"
131 const val androidx_compose_runtime_livedata = "androidx.compose.runtime:runtime-livedata:${Versions.AndroidX.compose}"
132 const val androidx_safeargs = "androidx.navigation:navigation-safe-args-gradle-plugin:${Versions.AndroidX.navigation}"
133 const val androidx_navigation_fragment = "androidx.navigation:navigation-fragment-ktx:${Versions.AndroidX.navigation}"
134 const val androidx_navigation_ui = "androidx.navigation:navigation-ui:$${Versions.AndroidX.navigation}"
135 const val androidx_compose_navigation = "androidx.navigation:navigation-compose:${Versions.AndroidX.navigation}"
136 const val androidx_constraintlayout = "androidx.constraintlayout:constraintlayout:${Versions.AndroidX.constraintlayout}"
137 const val androidx_core = "androidx.core:core:${Versions.AndroidX.core}"
138 const val androidx_core_ktx = "androidx.core:core-ktx:${Versions.AndroidX.core}"
139 const val androidx_coordinatorlayout = "androidx.coordinatorlayout:coordinatorlayout:${Versions.AndroidX.coordinatorlayout}"
140 const val androidx_drawerlayout = "androidx.drawerlayout:drawerlayout:${Versions.AndroidX.drawerlayout}"
141 const val androidx_fragment = "androidx.fragment:fragment:${Versions.AndroidX.fragment}"
142 const val androidx_lifecycle_common = "androidx.lifecycle:lifecycle-common:${Versions.AndroidX.lifecycle}"
143 const val androidx_lifecycle_livedata = "androidx.lifecycle:lifecycle-livedata-ktx:${Versions.AndroidX.lifecycle}"
144 const val androidx_lifecycle_process = "androidx.lifecycle:lifecycle-process:${Versions.AndroidX.lifecycle}"
145 const val androidx_lifecycle_runtime = "androidx.lifecycle:lifecycle-runtime-ktx:${Versions.AndroidX.lifecycle}"
146 const val androidx_lifecycle_service = "androidx.lifecycle:lifecycle-service:${Versions.AndroidX.lifecycle}"
147 const val androidx_lifecycle_viewmodel = "androidx.lifecycle:lifecycle-viewmodel-ktx:${Versions.AndroidX.lifecycle}"
148 const val androidx_media = "androidx.media:media:${Versions.AndroidX.media}"
149 const val androidx_paging = "androidx.paging:paging-runtime:${Versions.AndroidX.paging}"
150 const val androidx_palette = "androidx.palette:palette-ktx:${Versions.AndroidX.palette}"
151 const val androidx_preferences = "androidx.preference:preference-ktx:${Versions.AndroidX.preferences}"
152 const val androidx_recyclerview = "androidx.recyclerview:recyclerview:${Versions.AndroidX.recyclerview}"
153 const val androidx_room_runtime = "androidx.room:room-ktx:${Versions.AndroidX.room}"
154 const val androidx_room_compiler = "androidx.room:room-compiler:${Versions.AndroidX.room}"
155 const val androidx_room_testing = "androidx.room:room-testing:${Versions.AndroidX.room}"
156 const val androidx_savedstate = "androidx.savedstate:savedstate:${Versions.AndroidX.savedstate}"
157 const val androidx_test_core = "androidx.test:core-ktx:${Versions.AndroidX.test}"
158 const val androidx_test_junit = "androidx.test.ext:junit-ktx:${Versions.AndroidX.test_ext}"
159 const val androidx_test_runner = "androidx.test:runner:${Versions.AndroidX.test_runner}"
160 const val androidx_test_rules = "androidx.test:rules:${Versions.AndroidX.test}"
161 const val androidx_test_uiautomator = "androidx.test.uiautomator:uiautomator:${Versions.AndroidX.uiautomator}"
162 const val androidx_work_runtime = "androidx.work:work-runtime-ktx:${Versions.AndroidX.work}"
163 const val androidx_work_testing = "androidx.work:work-testing:${Versions.AndroidX.work}"
164 const val androidx_espresso_core = "androidx.test.espresso:espresso-core:${Versions.AndroidX.espresso}"
165 const val androidx_localbroadcastmanager = "androidx.localbroadcastmanager:localbroadcastmanager:${Versions.AndroidX.localbroadcastmanager}"
166 const val androidx_swiperefreshlayout = "androidx.swiperefreshlayout:swiperefreshlayout:${Versions.AndroidX.swiperefreshlayout}"
167 const val androidx_data_store_preferences = "androidx.datastore:datastore-preferences:${Versions.AndroidX.data_store_preferences}"
169 const val google_material = "com.google.android.material:material:${Versions.material}"
171 const val plugin_serialization = "org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin:${Versions.kotlin}"
173 const val leakcanary = "com.squareup.leakcanary:leakcanary-android:${Versions.leakcanary}"
175 const val tools_androidgradle = "com.android.tools.build:gradle:${Versions.android_gradle_plugin}"
176 const val tools_kotlingradle = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}"
178 const val tools_lint = "com.android.tools.lint:lint:${Versions.lint}"
179 const val tools_lintapi = "com.android.tools.lint:lint-api:${Versions.lint}"
180 const val tools_lintchecks = "com.android.tools.lint:lint-checks:${Versions.lint}"
181 const val tools_linttests = "com.android.tools.lint:lint-tests:${Versions.lint}"
183 const val tools_detekt_api = "io.gitlab.arturbosch.detekt:detekt-api:${Versions.detekt}"
184 const val tools_detekt_test = "io.gitlab.arturbosch.detekt:detekt-test:${Versions.detekt}"
186 val mozilla_geckoview = "org.mozilla.geckoview:${Gecko.channel.artifactName}:${Gecko.version}"
187 val mozilla_appservices_fxaclient = "${ApplicationServicesConfig.groupId}:fxaclient:${ApplicationServicesConfig.version}"
188 val mozilla_appservices_nimbus = "${ApplicationServicesConfig.groupId}:nimbus:${ApplicationServicesConfig.version}"
189 const val mozilla_glean_forUnitTests = "org.mozilla.telemetry:glean-native-forUnitTests:${Versions.mozilla_glean}"
190 val mozilla_appservices_autofill = "${ApplicationServicesConfig.groupId}:autofill:${ApplicationServicesConfig.version}"
191 val mozilla_appservices_logins = "${ApplicationServicesConfig.groupId}:logins:${ApplicationServicesConfig.version}"
192 val mozilla_appservices_places = "${ApplicationServicesConfig.groupId}:places:${ApplicationServicesConfig.version}"
193 val mozilla_appservices_syncmanager = "${ApplicationServicesConfig.groupId}:syncmanager:${ApplicationServicesConfig.version}"
194 val mozilla_remote_settings = "${ApplicationServicesConfig.groupId}:remotesettings:${ApplicationServicesConfig.version}"
195 val mozilla_appservices_push = "${ApplicationServicesConfig.groupId}:push:${ApplicationServicesConfig.version}"
196 val mozilla_appservices_tabs = "${ApplicationServicesConfig.groupId}:tabs:${ApplicationServicesConfig.version}"
197 val mozilla_appservices_suggest = "${ApplicationServicesConfig.groupId}:suggest:${ApplicationServicesConfig.version}"
198 val mozilla_appservices_httpconfig = "${ApplicationServicesConfig.groupId}:httpconfig:${ApplicationServicesConfig.version}"
199 val mozilla_appservices_full_megazord = "${ApplicationServicesConfig.groupId}:full-megazord:${ApplicationServicesConfig.version}"
200 val mozilla_appservices_full_megazord_forUnitTests = "${ApplicationServicesConfig.groupId}:full-megazord-forUnitTests:${ApplicationServicesConfig.version}"
202 val mozilla_appservices_errorsupport = "${ApplicationServicesConfig.groupId}:errorsupport:${ApplicationServicesConfig.version}"
203 val mozilla_appservices_rust_log_forwarder = "${ApplicationServicesConfig.groupId}:rust-log-forwarder:${ApplicationServicesConfig.version}"
204 val mozilla_appservices_sync15 = "${ApplicationServicesConfig.groupId}:sync15:${ApplicationServicesConfig.version}"
206 const val thirdparty_okhttp = "com.squareup.okhttp3:okhttp:${Versions.okhttp}"
207 const val thirdparty_okhttp_urlconnection = "com.squareup.okhttp3:okhttp-urlconnection:${Versions.okhttp}"
208 const val thirdparty_okio = "com.squareup.okio:okio:${Versions.okio}"
209 const val thirdparty_sentry = "io.sentry:sentry-android:${Versions.sentry}"
210 const val thirdparty_zxing = "com.google.zxing:core:${Versions.zxing}"
211 const val thirdparty_disklrucache = "com.jakewharton:disklrucache:${Versions.disklrucache}"
213 * ⚠️️ DO NOT use any NETWORK based operations provided by the Coil library.
214 * ⚠️️ The Coil library should be used for DECODING data only.
216 * Fenix is using SvgDecoder.kt for SVG decoding. However this dependency will also expose other
217 * API features that Fenix should not use.
219 const val thirdparty_coil_svg = "io.coil-kt:coil-svg:${Versions.coil}"
221 const val firebase_messaging = "com.google.firebase:firebase-messaging:${Versions.Firebase.messaging}"