2022-08-02 17:14:08 +02:00
apply plugin: 'com.android.library'
2018-10-03 17:56:33 +02:00
apply plugin: 'kotlin-android'
2020-12-16 00:46:52 +01:00
apply plugin: 'kotlin-parcelize'
2018-10-19 14:26:38 +02:00
apply plugin: 'kotlin-kapt'
2022-10-03 16:30:44 +02:00
apply plugin: 'com.google.devtools.ksp'
2021-10-14 18:47:28 +02:00
apply plugin: 'dagger.hilt.android.plugin'
2018-10-19 14:26:38 +02:00
2022-06-14 16:56:16 +02:00
if ( project . hasProperty ( "coverage" ) ) {
apply plugin: 'jacoco'
}
2018-10-19 14:26:38 +02:00
kapt {
correctErrorTypes = true
}
2018-10-03 17:56:33 +02:00
2019-03-13 17:00:30 +01:00
static def gitRevision ( ) {
2020-01-17 16:06:58 +01:00
def cmd = "git rev-parse --short=8 HEAD"
2019-03-13 17:00:30 +01:00
return cmd . execute ( ) . text . trim ( )
}
2019-02-11 13:47:47 +01:00
project . android . buildTypes . all { buildType - >
buildType . javaCompileOptions . annotationProcessorOptions . arguments =
[
2019-03-12 08:29:49 +01:00
validateEpoxyModelUsage: String . valueOf ( buildType . name = = 'debug' )
2019-02-11 13:47:47 +01:00
]
}
2022-09-14 15:05:40 +02:00
initScreenshotTests ( project )
2018-10-03 17:56:33 +02:00
android {
2022-10-17 09:14:28 +02:00
namespace "im.vector.app"
2020-07-02 23:39:42 +02:00
// Due to a bug introduced in Android gradle plugin 3.6.0, we have to specify the ndk version to use
// Ref: https://issuetracker.google.com/issues/144111441
ndkVersion "21.3.6528147"
2021-09-15 11:28:58 +02:00
compileSdk versions . compileSdk
2018-10-03 17:56:33 +02:00
defaultConfig {
2020-06-18 14:18:40 +02:00
// Set to API 21: see #405
2021-09-15 11:28:58 +02:00
minSdk versions . minSdk
targetSdk versions . targetSdk
2019-03-13 17:00:30 +01:00
2019-01-16 19:25:43 +01:00
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2019-08-07 11:46:38 +02:00
// Keep abiFilter for the universalApk
ndk {
abiFilters "armeabi-v7a" , "x86" , 'arm64-v8a' , 'x86_64'
}
2022-08-02 19:06:43 +02:00
// Generate a random app task affinity
manifestPlaceholders = [ appTaskAffinitySuffix: "H_${gitRevision()}" ]
2020-09-25 08:58:48 +02:00
// The following argument makes the Android Test Orchestrator run its
// "pm clear" command after each test invocation. This command ensures
// that the app's state is completely cleared between tests.
testInstrumentationRunnerArguments clearPackageData: 'true'
2022-10-14 14:00:01 +02:00
vectorDrawables . useSupportLibrary = true
2020-09-25 08:58:48 +02:00
}
testOptions {
// Disables animations during instrumented tests you run from the command line…
// This property does not affect tests that you run using Android Studio.”
animationsDisabled = true
2021-11-10 19:36:28 +01:00
// Comment to run on Android 12
2022-01-04 00:04:41 +01:00
// execution 'ANDROIDX_TEST_ORCHESTRATOR'
2018-10-03 17:56:33 +02:00
}
buildTypes {
2019-03-13 15:11:02 +01:00
debug {
2022-06-14 16:56:16 +02:00
if ( project . hasProperty ( "coverage" ) ) {
2024-07-15 18:12:08 +02:00
testCoverageEnabled = project . properties [ "coverage" ] = = "true"
2022-06-14 16:56:16 +02:00
}
2019-03-13 15:11:02 +01:00
}
2019-03-13 17:00:30 +01:00
}
2018-12-13 11:00:50 +01:00
compileOptions {
2021-09-15 11:28:58 +02:00
sourceCompatibility versions . sourceCompat
targetCompatibility versions . targetCompat
2018-12-13 11:00:50 +01:00
}
2019-09-27 11:42:46 +02:00
kotlinOptions {
2024-07-15 18:12:08 +02:00
jvmTarget = versions . jvmTarget
2021-10-11 14:13:42 +02:00
freeCompilerArgs + = [
2022-05-10 16:07:24 +02:00
"-opt-in=kotlin.RequiresOptIn" ,
2021-10-11 14:13:42 +02:00
// Fixes false positive "This is an internal Mavericks API. It is not intended for external use."
// of MvRx `by viewModel()` calls. Maybe due to the inlining of code... This is a temporary fix...
2022-05-10 16:07:24 +02:00
"-opt-in=com.airbnb.mvrx.InternalMavericksApi" ,
2021-10-11 14:27:55 +02:00
// Opt in for kotlinx.coroutines.FlowPreview too
2022-05-10 16:07:24 +02:00
"-opt-in=kotlinx.coroutines.FlowPreview" ,
2021-10-11 14:27:55 +02:00
// Opt in for kotlinx.coroutines.ExperimentalCoroutinesApi too
2022-05-10 16:07:24 +02:00
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi" ,
2021-10-11 14:13:42 +02:00
]
2019-09-27 11:42:46 +02:00
}
2020-04-28 14:15:23 +02:00
sourceSets {
androidTest {
java . srcDirs + = "src/sharedTest/java"
}
test {
java . srcDirs + = "src/sharedTest/java"
}
}
2020-12-16 00:46:52 +01:00
buildFeatures {
viewBinding true
2024-07-15 18:12:08 +02:00
buildConfig true
2020-12-16 00:46:52 +01:00
}
2024-07-16 11:06:44 +02:00
packaging {
pickFirsts . add ( "META-INF/LICENSE.md" )
pickFirsts . add ( "META-INF/LICENSE-notice.md" )
pickFirsts . add ( "MANIFEST.MF" )
2020-12-16 00:46:52 +01:00
}
2018-10-03 17:56:33 +02:00
}
2022-10-07 14:34:36 +02:00
2018-10-03 17:56:33 +02:00
dependencies {
2022-10-11 17:05:47 +02:00
2022-02-23 18:10:08 +01:00
implementation project ( ":vector-config" )
2022-08-02 17:14:08 +02:00
api project ( ":matrix-sdk-android" )
2021-10-07 11:11:44 +02:00
implementation project ( ":matrix-sdk-android-flow" )
2022-09-16 12:45:20 +02:00
implementation project ( ":library:external:jsonviewer" )
implementation project ( ":library:external:diff-match-patch" )
2023-06-23 17:14:58 +02:00
implementation project ( ":library:external:textdrawable" )
2023-06-23 17:40:29 +02:00
implementation project ( ":library:external:autocomplete" )
2022-08-08 14:00:42 +02:00
implementation project ( ":library:ui-strings" )
2021-06-15 12:23:54 +02:00
implementation project ( ":library:ui-styles" )
2022-01-13 20:14:19 +01:00
implementation project ( ":library:core-utils" )
2022-02-22 19:44:30 +01:00
implementation project ( ":library:attachment-viewer" )
2022-02-22 19:48:48 +01:00
implementation project ( ":library:multipicker" )
2018-10-03 17:56:33 +02:00
2021-09-29 09:41:41 +02:00
implementation libs . jetbrains . kotlinReflect
2021-09-15 11:28:58 +02:00
implementation libs . jetbrains . coroutinesCore
implementation libs . jetbrains . coroutinesAndroid
2019-01-17 15:04:57 +01:00
2021-09-15 19:22:52 +02:00
implementation libs . androidx . recyclerview
2021-09-15 11:28:58 +02:00
implementation libs . androidx . appCompat
2021-09-15 19:22:52 +02:00
implementation libs . androidx . fragmentKtx
implementation libs . androidx . constraintLayout
implementation libs . androidx . core
2022-05-10 01:08:08 +02:00
implementation "androidx.media:media:1.6.0"
2021-06-02 12:03:46 +02:00
implementation "androidx.transition:transition:1.4.1"
2022-05-04 16:48:23 +02:00
implementation libs . androidx . biometric
2019-01-24 18:04:55 +01:00
2022-08-02 17:14:08 +02:00
api "org.threeten:threetenbp:1.4.0:no-tzdb"
2023-04-04 02:02:23 +02:00
api "com.gabrielittner.threetenbp:lazythreetenbp:0.16.0"
2019-10-01 20:11:15 +02:00
2021-09-17 13:58:44 +02:00
implementation libs . squareup . moshi
2021-09-29 09:41:41 +02:00
implementation libs . squareup . moshiKt
2021-09-17 13:58:44 +02:00
kapt libs . squareup . moshiKotlin
2021-11-09 16:56:51 +01:00
// Lifecycle
2021-09-17 13:58:44 +02:00
implementation libs . androidx . lifecycleLivedata
2022-08-02 17:14:08 +02:00
api libs . androidx . lifecycleProcess
2022-02-07 16:10:26 +01:00
implementation libs . androidx . lifecycleRuntimeKtx
2021-09-17 13:58:44 +02:00
2022-08-10 18:40:04 +02:00
api libs . androidx . datastorepreferences
2021-09-20 16:54:39 +02:00
2022-07-06 17:54:29 +02:00
// Opus Encoder
implementation libs . element . opusencoder
2019-03-28 17:28:20 +01:00
2022-10-11 17:05:47 +02:00
// WYSIWYG Editor
implementation libs . element . wysiwyg
2019-03-28 17:28:20 +01:00
// Log
2022-08-02 17:14:08 +02:00
api libs . jakewharton . timber
2019-03-28 17:28:20 +01:00
// Debug
2022-08-02 17:14:08 +02:00
api 'com.facebook.stetho:stetho:1.6.0'
2018-10-16 15:52:30 +02:00
2024-03-27 10:15:57 +01:00
// Analytics
2024-05-29 17:39:16 +02:00
api 'com.github.matrix-org:matrix-analytics-events:0.23.0'
2024-03-27 10:15:57 +01:00
2022-08-08 11:21:34 +02:00
api libs . google . phonenumber
2019-11-21 12:11:58 +01:00
2021-10-27 12:13:49 +02:00
// FlowBinding
implementation libs . github . flowBinding
implementation libs . github . flowBindingAppcompat
2018-12-29 19:57:38 +01:00
2022-08-02 17:14:08 +02:00
api libs . airbnb . epoxy
2021-09-17 13:58:44 +02:00
implementation libs . airbnb . epoxyGlide
2022-10-03 16:30:44 +02:00
ksp libs . airbnb . epoxyProcessor
2021-09-17 13:58:44 +02:00
implementation libs . airbnb . epoxyPaging
2022-08-02 17:14:08 +02:00
api libs . airbnb . mavericks
2018-10-19 15:30:40 +02:00
2022-08-09 14:31:26 +02:00
// Snap Helper https://github.com/rubensousa/GravitySnapHelper
2022-08-09 15:20:16 +02:00
api 'com.github.rubensousa:gravitysnaphelper:2.2.2'
2022-08-09 14:31:26 +02:00
2019-04-02 18:08:43 +02:00
// Work
2022-08-02 17:14:08 +02:00
api libs . androidx . work
2019-04-02 18:08:43 +02:00
2019-07-30 14:51:14 +02:00
// Paging
2021-09-17 13:58:44 +02:00
implementation libs . androidx . pagingRuntimeKtx
2019-07-30 14:51:14 +02:00
2019-03-28 11:53:28 +01:00
// Pref
2022-08-02 17:14:08 +02:00
api libs . androidx . preferenceKtx
2019-03-28 11:53:28 +01:00
2018-12-29 19:57:38 +01:00
// UI
2021-09-17 13:58:44 +02:00
implementation libs . google . material
2023-06-23 18:15:22 +02:00
implementation project ( ":library:external:span" )
2021-09-17 13:58:44 +02:00
implementation libs . markwon . core
2020-09-18 16:22:10 +02:00
implementation libs . markwon . extLatex
2022-04-28 16:53:19 +02:00
implementation libs . markwon . imageGlide
2020-09-18 16:22:10 +02:00
implementation libs . markwon . inlineParser
2021-09-17 13:58:44 +02:00
implementation libs . markwon . html
2021-02-19 22:52:08 +01:00
implementation 'com.googlecode.htmlcompressor:htmlcompressor:1.5.2'
2019-06-03 17:53:04 +02:00
implementation 'me.saket:better-link-movement-method:2.2.0'
2021-12-09 16:05:30 +01:00
implementation 'com.google.android.flexbox:flexbox:3.0.0'
2021-09-15 19:22:52 +02:00
implementation libs . androidx . autoFill
2020-12-01 17:50:59 +01:00
implementation 'jp.wasabeef:glide-transformations:4.3.0'
2021-07-01 19:40:36 +02:00
implementation 'com.github.hyuwah:DraggableView:1.0.0'
2019-02-21 19:21:08 +01:00
2020-06-05 01:06:52 +02:00
// Custom Tab
2023-02-09 00:03:07 +01:00
implementation 'androidx.browser:browser:1.5.0'
2020-06-05 01:06:52 +02:00
2019-05-16 10:23:57 +02:00
// Passphrase strength helper
2022-05-09 15:25:08 +02:00
implementation 'com.nulab-inc:zxcvbn:1.7.0'
2019-05-16 10:23:57 +02:00
2021-09-20 16:54:39 +02:00
// Alerter
2021-12-09 23:37:06 +01:00
implementation 'com.github.tapadoo:alerter:7.2.4'
2019-05-16 10:23:57 +02:00
2019-03-28 11:53:28 +01:00
// Shake detection
2021-09-29 01:06:09 +02:00
implementation 'com.squareup:seismic:1.0.3'
2019-03-28 11:53:28 +01:00
2019-03-12 08:29:49 +01:00
// Image Loading
2021-09-17 13:58:44 +02:00
implementation libs . github . bigImageViewer
implementation libs . github . glideImageLoader
implementation libs . github . glideImageViewFactory
2020-07-05 21:47:38 +02:00
// implementation 'com.github.MikeOrtiz:TouchImageView:3.0.2'
2021-04-30 09:06:20 +02:00
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
2020-07-05 21:47:38 +02:00
2021-09-17 13:58:44 +02:00
implementation libs . github . glide
kapt libs . github . glideCompiler
2022-01-31 17:17:37 +01:00
implementation 'com.github.yalantis:ucrop:2.2.8'
2018-10-29 17:20:08 +01:00
2020-12-09 12:34:22 +01:00
// Chat effects
2022-02-22 22:31:06 +01:00
implementation 'nl.dionsegijn:konfetti-xml:2.0.2'
2022-01-27 09:56:41 +01:00
2021-05-12 16:50:50 +02:00
implementation 'com.github.jetradarmobile:android-snowfall:1.2.1'
2018-12-29 19:57:38 +01:00
// DI
2021-10-14 18:47:28 +02:00
implementation libs . dagger . hilt
kapt libs . dagger . hiltCompiler
2018-10-03 17:56:33 +02:00
2021-11-23 15:34:04 +01:00
// Analytics
2024-05-06 09:28:53 +02:00
implementation 'com.posthog:posthog-android:3.2.0'
2022-10-05 13:19:14 +02:00
implementation libs . sentry . sentryAndroid
2021-11-23 15:34:04 +01:00
2021-07-07 01:49:39 +02:00
// UnifiedPush
2022-10-13 01:07:54 +02:00
implementation 'com.github.UnifiedPush:android-connector:2.1.1'
2020-01-08 15:57:35 +01:00
2023-03-23 08:18:03 +01:00
implementation "androidx.emoji2:emoji2:1.3.0"
2020-02-12 16:48:11 +01:00
2021-02-10 16:55:07 +01:00
// Jitsi
2024-09-18 16:41:30 +02:00
api ( 'org.jitsi.react:jitsi-meet-sdk:10.2.0' ) {
2021-05-19 18:19:49 +02:00
exclude group: 'com.google.firebase'
exclude group: 'com.google.android.gms'
exclude group: 'com.android.installreferrer'
2022-09-16 13:16:03 +02:00
// Exclude jitsi's android-scalablevideoview fork's support library
// The library exports a jetified artifact but doesn't remove the support library dependency
// https://github.com/MatrixFrog/Android-ScalableVideoView/blob/master/gradle.properties#L1
exclude group: 'com.android.support' , module: 'appcompat-v7'
2024-09-18 16:41:30 +02:00
// transitive needed to pull in the react-native dependency
transitive = true
2021-04-06 20:50:43 +02:00
}
2020-05-05 11:46:21 +02:00
2020-01-22 14:19:04 +01:00
// QR-code
2020-02-01 13:52:33 +01:00
// Stick to 3.3.3 because of https://github.com/zxing/zxing/issues/1170
2021-10-28 17:18:34 +02:00
implementation 'com.google.zxing:core:3.3.3'
2022-09-16 13:16:03 +02:00
2023-06-23 18:58:42 +02:00
implementation project ( ":library:external:barcodescanner:zxing" )
2020-01-22 14:19:04 +01:00
2020-12-09 16:45:33 +01:00
// Emoji Keyboard
2022-08-02 17:14:08 +02:00
api libs . vanniktech . emojiMaterial
api libs . vanniktech . emojiGoogle
2020-12-09 16:45:33 +01:00
2022-09-16 12:45:20 +02:00
implementation project ( ":library:external:dialpad" )
2021-01-07 11:15:37 +01:00
2021-05-19 18:19:49 +02:00
// JWT
2021-09-17 13:58:44 +02:00
api libs . jsonwebtoken . jjwtApi
runtimeOnly libs . jsonwebtoken . jjwtImpl
runtimeOnly ( libs . jsonwebtoken . jjwtOrgjson ) {
2021-05-19 18:19:49 +02:00
exclude group: 'org.json' , module: 'json' //provided by Android natively
}
2023-04-18 18:45:39 +02:00
testImplementation ( libs . jsonwebtoken . jjwtOrgjson )
2021-05-19 18:19:49 +02:00
implementation 'commons-codec:commons-codec:1.15'
2021-12-15 11:57:43 +01:00
// MapTiler
2022-08-09 16:00:46 +02:00
api ( libs . maplibre . androidSdk ) {
2022-05-24 10:34:37 +02:00
exclude group: 'com.google.android.gms' , module: 'play-services-location'
}
2022-08-09 16:00:46 +02:00
api ( libs . maplibre . pluginAnnotation ) {
2022-05-24 10:34:37 +02:00
exclude group: 'com.google.android.gms' , module: 'play-services-location'
}
2021-05-19 18:19:49 +02:00
2018-12-29 19:57:38 +01:00
// TESTS
2021-09-15 19:22:52 +02:00
testImplementation libs . tests . junit
2021-09-17 13:58:44 +02:00
testImplementation libs . tests . kluent
2021-09-27 18:16:36 +02:00
testImplementation libs . mockk . mockk
2022-08-02 16:27:29 +02:00
testImplementation libs . androidx . coreTesting
2023-05-05 10:29:57 +02:00
testImplementation libs . tests . robolectric
2020-04-28 14:15:23 +02:00
// Plant Timber tree for test
2021-09-17 13:58:44 +02:00
testImplementation libs . tests . timberJunitRule
2021-10-12 13:47:32 +02:00
testImplementation libs . airbnb . mavericksTesting
2022-10-11 01:21:34 +02:00
testImplementation libs . androidx . coreTesting
2021-10-28 18:17:01 +02:00
testImplementation ( libs . jetbrains . coroutinesTest ) {
exclude group: "org.jetbrains.kotlinx" , module: "kotlinx-coroutines-debug"
}
2020-02-06 23:22:07 +01:00
2022-10-27 14:20:01 +02:00
// Fix issue with Jitsi. Inspired from https://github.com/android/android-test/issues/861#issuecomment-872067868
// Error was lots of `Duplicate class org.checkerframework.common.reflection.qual.MethodVal found in modules jetified-checker-3.1 (org.checkerframework:checker:3.1.1) and jetified-checker-qual-3.12.0 (org.checkerframework:checker-qual:3.12.0)
//noinspection GradleDependency Cannot use latest 3.15.0 since it required min API 26.
2023-06-02 11:59:16 +02:00
implementation "org.checkerframework:checker:3.35.0"
2022-10-27 14:20:01 +02:00
2021-09-17 13:58:44 +02:00
androidTestImplementation libs . androidx . testCore
androidTestImplementation libs . androidx . testRunner
androidTestImplementation libs . androidx . testRules
2021-09-15 19:22:52 +02:00
androidTestImplementation libs . androidx . junit
2021-09-17 13:58:44 +02:00
androidTestImplementation libs . androidx . espressoCore
androidTestImplementation libs . androidx . espressoContrib
androidTestImplementation libs . androidx . espressoIntents
androidTestImplementation libs . tests . kluent
androidTestImplementation libs . androidx . coreTesting
2021-10-28 18:17:01 +02:00
androidTestImplementation ( libs . jetbrains . coroutinesTest ) {
exclude group: "org.jetbrains.kotlinx" , module: "kotlinx-coroutines-debug"
}
2020-04-28 14:15:23 +02:00
// Plant Timber tree for test
2021-09-17 13:58:44 +02:00
androidTestImplementation libs . tests . timberJunitRule
2020-11-03 23:22:12 +01:00
// "The one who serves a great Espresso"
2022-11-16 00:03:53 +01:00
androidTestImplementation ( 'com.adevinta.android:barista:4.3.0' ) {
2020-11-03 23:22:12 +01:00
exclude group: 'org.jetbrains.kotlin'
}
2022-06-10 09:51:20 +02:00
androidTestImplementation libs . mockk . mockkAndroid
2021-09-23 21:24:16 +02:00
androidTestUtil libs . androidx . orchestrator
2023-01-11 12:03:41 +01:00
debugImplementation libs . androidx . fragmentTestingManifest
androidTestImplementation libs . androidx . fragmentTesting
2023-05-05 11:09:58 +02:00
androidTestImplementation "org.jetbrains.kotlin:kotlin-reflect:1.8.21"
2018-10-03 17:56:33 +02:00
}