element-android-Github/vector/build.gradle

330 lines
11 KiB
Groovy
Raw Normal View History

apply plugin: 'com.android.library'
2018-10-03 23:56:33 +08:00
apply plugin: 'kotlin-android'
2020-12-16 07:46:52 +08:00
apply plugin: 'kotlin-parcelize'
2018-10-19 20:26:38 +08:00
apply plugin: 'kotlin-kapt'
2022-10-03 22:30:44 +08:00
apply plugin: 'com.google.devtools.ksp'
2021-10-15 00:47:28 +08:00
apply plugin: 'dagger.hilt.android.plugin'
2018-10-19 20:26:38 +08:00
if (project.hasProperty("coverage")) {
apply plugin: 'jacoco'
}
2018-10-19 20:26:38 +08:00
kapt {
correctErrorTypes = true
}
2018-10-03 23:56:33 +08:00
static def gitRevision() {
def cmd = "git rev-parse --short=8 HEAD"
return cmd.execute().text.trim()
}
project.android.buildTypes.all { buildType ->
buildType.javaCompileOptions.annotationProcessorOptions.arguments =
[
validateEpoxyModelUsage: String.valueOf(buildType.name == 'debug')
]
}
initScreenshotTests(project)
2018-10-03 23:56:33 +08:00
android {
namespace "im.vector.app"
// 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 17:28:58 +08:00
compileSdk versions.compileSdk
2018-10-03 23:56:33 +08:00
defaultConfig {
2020-06-18 20:18:40 +08:00
// Set to API 21: see #405
2021-09-15 17:28:58 +08:00
minSdk versions.minSdk
targetSdk versions.targetSdk
2019-03-14 00:00:30 +08:00
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
// Keep abiFilter for the universalApk
ndk {
abiFilters "armeabi-v7a", "x86", 'arm64-v8a', 'x86_64'
}
// Generate a random app task affinity
manifestPlaceholders = [appTaskAffinitySuffix: "H_${gitRevision()}"]
2020-09-25 14:58:48 +08: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 20:00:01 +08:00
vectorDrawables.useSupportLibrary = true
2020-09-25 14:58:48 +08: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-11 02:36:28 +08:00
// Comment to run on Android 12
// execution 'ANDROIDX_TEST_ORCHESTRATOR'
2018-10-03 23:56:33 +08:00
}
buildTypes {
2019-03-13 22:11:02 +08:00
debug {
if (project.hasProperty("coverage")) {
testCoverageEnabled = project.properties["coverage"] == "true"
}
2019-03-13 22:11:02 +08:00
}
2018-10-03 23:56:33 +08:00
}
2018-12-13 18:00:50 +08:00
compileOptions {
2021-09-15 17:28:58 +08:00
sourceCompatibility versions.sourceCompat
targetCompatibility versions.targetCompat
2018-12-13 18:00:50 +08:00
}
kotlinOptions {
jvmTarget = versions.jvmTarget
freeCompilerArgs += [
"-opt-in=kotlin.RequiresOptIn",
// 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...
"-opt-in=com.airbnb.mvrx.InternalMavericksApi",
// Opt in for kotlinx.coroutines.FlowPreview too
"-opt-in=kotlinx.coroutines.FlowPreview",
// Opt in for kotlinx.coroutines.ExperimentalCoroutinesApi too
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
]
}
2020-04-28 20:15:23 +08:00
sourceSets {
androidTest {
java.srcDirs += "src/sharedTest/java"
}
test {
java.srcDirs += "src/sharedTest/java"
}
}
2020-12-16 07:46:52 +08:00
buildFeatures {
viewBinding true
buildConfig true
2020-12-16 07:46:52 +08:00
}
2018-10-03 23:56:33 +08:00
}
2022-10-07 20:34:36 +08:00
2018-10-03 23:56:33 +08:00
dependencies {
implementation project(":vector-config")
api project(":matrix-sdk-android")
implementation project(":matrix-sdk-android-flow")
implementation project(":library:external:jsonviewer")
implementation project(":library:external:diff-match-patch")
implementation project(":library:external:textdrawable")
implementation project(":library:external:autocomplete")
implementation project(":library:ui-strings")
2021-06-15 18:23:54 +08:00
implementation project(":library:ui-styles")
implementation project(":library:core-utils")
implementation project(":library:attachment-viewer")
2022-02-23 02:48:48 +08:00
implementation project(":library:multipicker")
2018-10-03 23:56:33 +08:00
2021-09-15 17:28:58 +08:00
implementation libs.jetbrains.coroutinesCore
implementation libs.jetbrains.coroutinesAndroid
implementation libs.androidx.recyclerview
2021-09-15 17:28:58 +08:00
implementation libs.androidx.appCompat
implementation libs.androidx.fragmentKtx
implementation libs.androidx.constraintLayout
implementation libs.androidx.core
implementation "androidx.media:media:1.6.0"
implementation "androidx.transition:transition:1.4.1"
implementation libs.androidx.biometric
api "org.threeten:threetenbp:1.4.0:no-tzdb"
api "com.gabrielittner.threetenbp:lazythreetenbp:0.16.0"
2019-10-02 02:11:15 +08:00
implementation libs.squareup.moshi
kapt libs.squareup.moshiKotlin
// Lifecycle
implementation libs.androidx.lifecycleLivedata
api libs.androidx.lifecycleProcess
2022-02-07 23:10:26 +08:00
implementation libs.androidx.lifecycleRuntimeKtx
api libs.androidx.datastorepreferences
2021-09-20 22:54:39 +08:00
// Opus Encoder
implementation libs.element.opusencoder
// WYSIWYG Editor
implementation libs.element.wysiwyg
// Log
api libs.jakewharton.timber
// Debug
api 'com.facebook.stetho:stetho:1.6.0'
// Analytics
api 'com.github.matrix-org:matrix-analytics-events:0.23.0'
api libs.google.phonenumber
// FlowBinding
implementation libs.github.flowBinding
implementation libs.github.flowBindingAppcompat
api libs.airbnb.epoxy
implementation libs.airbnb.epoxyGlide
2022-10-03 22:30:44 +08:00
ksp libs.airbnb.epoxyProcessor
implementation libs.airbnb.epoxyPaging
api libs.airbnb.mavericks
2018-10-19 21:30:40 +08:00
// Snap Helper https://github.com/rubensousa/GravitySnapHelper
2022-08-09 21:20:16 +08:00
api 'com.github.rubensousa:gravitysnaphelper:2.2.2'
// Work
api libs.androidx.work
// Paging
implementation libs.androidx.pagingRuntimeKtx
// Pref
api libs.androidx.preferenceKtx
// UI
implementation libs.google.material
implementation project(":library:external:span")
implementation libs.markwon.core
implementation libs.markwon.extLatex
implementation libs.markwon.imageGlide
implementation libs.markwon.inlineParser
implementation libs.markwon.html
implementation 'com.googlecode.htmlcompressor:htmlcompressor:1.5.2'
implementation 'me.saket:better-link-movement-method:2.2.0'
implementation 'com.google.android.flexbox:flexbox:3.0.0'
implementation libs.androidx.autoFill
2020-12-02 00:50:59 +08:00
implementation 'jp.wasabeef:glide-transformations:4.3.0'
implementation 'com.github.hyuwah:DraggableView:1.0.0'
// Custom Tab
implementation 'androidx.browser:browser:1.5.0'
2019-05-16 16:23:57 +08:00
// Passphrase strength helper
implementation 'com.nulab-inc:zxcvbn:1.7.0'
2019-05-16 16:23:57 +08:00
2021-09-20 22:54:39 +08:00
// Alerter
2021-12-10 06:37:06 +08:00
implementation 'com.github.tapadoo:alerter:7.2.4'
2019-05-16 16:23:57 +08:00
// Shake detection
implementation 'com.squareup:seismic:1.0.3'
// Image Loading
implementation libs.github.bigImageViewer
implementation libs.github.glideImageLoader
implementation libs.github.glideImageViewFactory
2020-07-06 03:47:38 +08:00
// implementation 'com.github.MikeOrtiz:TouchImageView:3.0.2'
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
2020-07-06 03:47:38 +08:00
implementation libs.github.glide
kapt libs.github.glideCompiler
2022-02-01 00:17:37 +08:00
implementation 'com.github.yalantis:ucrop:2.2.8'
2018-10-30 00:20:08 +08:00
2020-12-09 19:34:22 +08:00
// Chat effects
2022-02-23 05:31:06 +08:00
implementation 'nl.dionsegijn:konfetti-xml:2.0.2'
2022-01-27 16:56:41 +08:00
implementation 'com.github.jetradarmobile:android-snowfall:1.2.1'
// DI
2021-10-15 00:47:28 +08:00
implementation libs.dagger.hilt
kapt libs.dagger.hiltCompiler
2018-10-03 23:56:33 +08:00
2021-11-23 22:34:04 +08:00
// Analytics
2024-05-06 15:28:53 +08:00
implementation 'com.posthog:posthog-android:3.2.0'
implementation libs.sentry.sentryAndroid
2021-11-23 22:34:04 +08:00
2022-02-25 23:25:56 +08:00
// UnifiedPush
implementation 'com.github.UnifiedPush:android-connector:2.1.1'
implementation "androidx.emoji2:emoji2:1.3.0"
2020-02-12 23:48:11 +08:00
2021-02-10 23:55:07 +08:00
// Jitsi
2023-05-02 20:29:41 +08:00
api('org.jitsi.react:jitsi-meet-sdk:8.1.1') {
exclude group: 'com.google.firebase'
exclude group: 'com.google.android.gms'
exclude group: 'com.android.installreferrer'
// 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'
}
2021-02-10 23:55:07 +08:00
2020-01-22 21:19:04 +08:00
// QR-code
// Stick to 3.3.3 because of https://github.com/zxing/zxing/issues/1170
implementation 'com.google.zxing:core:3.3.3'
implementation project(":library:external:barcodescanner:zxing")
2020-01-22 21:19:04 +08:00
2020-12-09 23:45:33 +08:00
// Emoji Keyboard
api libs.vanniktech.emojiMaterial
api libs.vanniktech.emojiGoogle
2020-12-09 23:45:33 +08:00
implementation project(":library:external:dialpad")
// JWT
api libs.jsonwebtoken.jjwtApi
runtimeOnly libs.jsonwebtoken.jjwtImpl
runtimeOnly(libs.jsonwebtoken.jjwtOrgjson) {
exclude group: 'org.json', module: 'json' //provided by Android natively
}
testImplementation(libs.jsonwebtoken.jjwtOrgjson)
implementation 'commons-codec:commons-codec:1.15'
2021-12-15 18:57:43 +08:00
// MapTiler
api(libs.maplibre.androidSdk) {
exclude group: 'com.google.android.gms', module: 'play-services-location'
}
api(libs.maplibre.pluginAnnotation) {
exclude group: 'com.google.android.gms', module: 'play-services-location'
}
// TESTS
testImplementation libs.tests.junit
testImplementation libs.tests.kluent
testImplementation libs.mockk.mockk
testImplementation libs.androidx.coreTesting
2023-05-05 16:29:57 +08:00
testImplementation libs.tests.robolectric
2020-04-28 20:15:23 +08:00
// Plant Timber tree for test
testImplementation libs.tests.timberJunitRule
testImplementation libs.airbnb.mavericksTesting
testImplementation libs.androidx.coreTesting
testImplementation(libs.jetbrains.coroutinesTest) {
exclude group: "org.jetbrains.kotlinx", module: "kotlinx-coroutines-debug"
}
// 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.
implementation "org.checkerframework:checker:3.35.0"
androidTestImplementation libs.androidx.testCore
androidTestImplementation libs.androidx.testRunner
androidTestImplementation libs.androidx.testRules
androidTestImplementation libs.androidx.junit
androidTestImplementation libs.androidx.espressoCore
androidTestImplementation libs.androidx.espressoContrib
androidTestImplementation libs.androidx.espressoIntents
androidTestImplementation libs.tests.kluent
androidTestImplementation libs.androidx.coreTesting
androidTestImplementation(libs.jetbrains.coroutinesTest) {
exclude group: "org.jetbrains.kotlinx", module: "kotlinx-coroutines-debug"
}
2020-04-28 20:15:23 +08:00
// Plant Timber tree for test
androidTestImplementation libs.tests.timberJunitRule
// "The one who serves a great Espresso"
androidTestImplementation('com.adevinta.android:barista:4.3.0') {
exclude group: 'org.jetbrains.kotlin'
}
2022-06-10 15:51:20 +08:00
androidTestImplementation libs.mockk.mockkAndroid
androidTestUtil libs.androidx.orchestrator
debugImplementation libs.androidx.fragmentTestingManifest
androidTestImplementation libs.androidx.fragmentTesting
androidTestImplementation "org.jetbrains.kotlin:kotlin-reflect:1.8.21"
2018-10-03 23:56:33 +08:00
}