1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148ext {
buildToolsVersion = "36.0.0"
minSdkVersion = 24
compileSdkVersion = 36
targetSdkVersion = 36
ndkVersion = "27.1.12297006"
kotlinVersion = "2.1.20"
kotlin_version = "2.1.20"
androidXBrowser = "1.8.0"
}
ext.versions = [
androidTest : '1.6.1',
androidTestJunit : '1.2.1',
androidxActivity : '1.9.3',
androidxAnnotation : '1.9.1',
androidxAppcompat : '1.7.0',
androidxBrowser : '1.8.0',
androidxCompose : '1.7.8',
androidxComposeUi : '1.7.8',
androidxConstraintlayout : '2.2.0',
androidxCore : '1.13.1',
androidxFragment : '1.8.6',
androidxLegacySupport : '1.0.0',
androidxLifecycle : '2.8.7',
androidxPreference : '1.2.1',
androidxRecyclerview : '1.3.2',
androidxWebkit : '1.14.0',
cameraX : '1.4.1',
espresso : '3.6.1',
fuel : '2.3.1',
instantApps : '1.1.0',
junit : '4.13.2',
json : '20240303',
kotlin : '2.1.10',
kotlinCoroutines : '1.10.1',
kotlinSerialization : '1.8.0',
lint : '31.4.0',
leakCanary : '2.14',
material : '1.12.0',
okhttp : '4.12.0',
okio : '3.10.2',
places : '3.5.0',
playServicesCoroutines : '1.10.1',
playServicesTfLite : '16.4.0',
playServicesWallet : '19.4.0',
playIntegrity : '1.4.0',
litert : '1.4.0',
eventBus : '3.3.1',
]
ext.buildLibs = [
androidGradlePlugin : "com.android.tools.build:gradle",
kotlinGradlePlugin : "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}",
kotlinSerializationPlugin : "org.jetbrains.kotlin:kotlin-serialization:${versions.kotlin}",
]
ext.configs = [
androidLibrary : "${project.rootDir}/build-configuration/android-library.gradle",
androidApplication: "${project.rootDir}/build-configuration/android-application.gradle",
]
ext.libs = [
androidx: [
activity : "androidx.activity:activity-ktx:${versions.androidxActivity}",
annotation : "androidx.annotation:annotation:${versions.androidxAnnotation}",
appCompat : "androidx.appcompat:appcompat:${versions.androidxAppcompat}",
browser : "androidx.browser:browser:${versions.androidxBrowser}",
constraintLayout : "androidx.constraintlayout:constraintlayout:${versions.androidxConstraintlayout}",
core : "androidx.core:core:${versions.androidxCore}",
coreKtx : "androidx.core:core-ktx:${versions.androidxCore}",
fragment : "androidx.fragment:fragment-ktx:${versions.androidxFragment}",
legacySupport : "androidx.legacy:legacy-support-v4:${versions.androidxLegacySupport}",
lifecycle : "androidx.lifecycle:lifecycle-runtime-ktx:${versions.androidxLifecycle}",
viewModel : "androidx.lifecycle:lifecycle-viewmodel-ktx:${versions.androidxLifecycle}",
savedState : "androidx.lifecycle:lifecycle-viewmodel-savedstate:${versions.androidxLifecycle}",
preference : "androidx.preference:preference-ktx:${versions.androidxPreference}",
recyclerView : "androidx.recyclerview:recyclerview:${versions.androidxRecyclerview}",
webkit : "androidx.webkit:webkit:${versions.androidxWebkit}",
],
// use bcprov-jdk15to18 (1.5 to 1.8) instead of bcprov-jdk15on (1.5 onwards)
// to avoid conflicts with newer Java versions
camera : [
core : "androidx.camera:camera-core:${versions.cameraX}",
camera2 : "androidx.camera:camera-camera2:${versions.cameraX}",
lifecycle: "androidx.camera:camera-lifecycle:${versions.cameraX}",
view : "androidx.camera:camera-view:${versions.cameraX}",
],
compose : [
activity : "androidx.activity:activity-compose:${versions.androidxActivity}",
material : "androidx.compose.material:material:${versions.androidxCompose}",
ui : "androidx.compose.ui:ui:${versions.androidxComposeUi}",
uiViewBinding : "androidx.compose.ui:ui-viewbinding:${versions.androidxComposeUi}",
viewModels : "androidx.lifecycle:lifecycle-viewmodel-compose:${versions.androidxLifecycle}",
],
fuel : "com.github.kittinunf.fuel:fuel:${versions.fuel}",
fuelCoroutines : "com.github.kittinunf.fuel:fuel-coroutines:${versions.fuel}",
instantApps : "com.google.android.instantapps:instantapps:${versions.instantApps}",
kotlin : [
standard : "org.jetbrains.kotlin:kotlin-stdlib:${versions.kotlin}",
coroutines : "org.jetbrains.kotlinx:kotlinx-coroutines-core:${versions.kotlinCoroutines}",
coroutinesAndroid : "org.jetbrains.kotlinx:kotlinx-coroutines-android:${versions.kotlinCoroutines}",
coroutinesPlayServices: "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:${versions.playServicesCoroutines}",
serialization : "org.jetbrains.kotlinx:kotlinx-serialization-json:${versions.kotlinSerialization}",
parcelizeRuntimePlugin: "org.jetbrains.kotlin:kotlin-parcelize-runtime:${versions.kotlin}",
],
lint : "com.android.tools.lint:lint-api:${versions.lint}",
lintChecks : "com.android.tools.lint:lint-checks:${versions.lint}",
leakCanary : "com.squareup.leakcanary:leakcanary-android:${versions.leakCanary}",
okhttp : "com.squareup.okhttp3:okhttp:${versions.okhttp}",
loggingInterceptor : "com.squareup.okhttp3:logging-interceptor:${versions.okhttp}",
material : "com.google.android.material:material:${versions.material}",
okio : "com.squareup.okio:okio:${versions.okio}",
places : "com.google.android.libraries.places:places:${versions.places}",
playServicesWallet : "com.google.android.gms:play-services-wallet:${versions.playServicesWallet}",
playIntegrity : "com.google.android.play:integrity:${versions.playIntegrity}",
litert : "com.google.ai.edge.litert:litert:${versions.litert}",
litertSupport : "com.google.ai.edge.litert:litert-support:${versions.litert}",
tensorflowLitePlayServices : "com.google.android.gms:play-services-tflite-java:${versions.playServicesTfLite}",
tensorflowLitePlayServicesSupport : "com.google.android.gms:play-services-tflite-support:${versions.playServicesTfLite}",
eventBus : "org.greenrobot:eventbus:${versions.eventBus}"
]
ext.testLibs = [
androidx : [
junitKtx : "androidx.test.ext:junit-ktx:${versions.androidTestJunit}",
coreKtx : "androidx.test:core-ktx:${versions.androidTest}",
],
espresso : [
accessibility : "androidx.test.espresso:espresso-accessibility:${versions.espresso}",
core : "androidx.test.espresso:espresso-core:${versions.espresso}",
contrib : "androidx.test.espresso:espresso-contrib:${versions.espresso}",
intents : "androidx.test.espresso:espresso-intents:${versions.espresso}",
web : "androidx.test.espresso:espresso-web:${versions.espresso}",
],
json : "org.json:json:${versions.json}",
junit : "junit:junit:${versions.junit}",
kotlin : [
annotations: "org.jetbrains.kotlin:kotlin-test-annotations-common:${versions.kotlin}",
coroutines : "org.jetbrains.kotlinx:kotlinx-coroutines-test:${versions.kotlinCoroutines}",
junit : "org.jetbrains.kotlin:kotlin-test-junit:${versions.kotlin}",
reflect : "org.jetbrains.kotlin:kotlin-reflect:${versions.kotlin}",
test : "org.jetbrains.kotlin:kotlin-test:${versions.kotlin}",
],
leakCanaryInstrumentation : "com.squareup.leakcanary:leakcanary-android-instrumentation:${versions.leakCanary}",
lint : "com.android.tools.lint:lint-tests:${versions.lint}",
detox : "com.wix:detox:+",
]