340 lines
12 KiB
Groovy
340 lines
12 KiB
Groovy
apply plugin: 'com.android.library'
|
|
apply plugin: 'kotlin-android'
|
|
apply plugin: 'kotlin-parcelize'
|
|
apply plugin: 'kotlin-kapt'
|
|
apply plugin: 'com.google.devtools.ksp'
|
|
apply plugin: 'dagger.hilt.android.plugin'
|
|
|
|
if (project.hasProperty("coverage")) {
|
|
apply plugin: 'jacoco'
|
|
}
|
|
|
|
kapt {
|
|
correctErrorTypes = true
|
|
}
|
|
|
|
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)
|
|
|
|
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"
|
|
|
|
compileSdk versions.compileSdk
|
|
|
|
defaultConfig {
|
|
// Set to API 21: see #405
|
|
minSdk versions.minSdk
|
|
targetSdk versions.targetSdk
|
|
|
|
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()}"]
|
|
|
|
// 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'
|
|
|
|
vectorDrawables.useSupportLibrary = true
|
|
}
|
|
|
|
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
|
|
|
|
// Comment to run on Android 12
|
|
// execution 'ANDROIDX_TEST_ORCHESTRATOR'
|
|
}
|
|
buildTypes {
|
|
debug {
|
|
if (project.hasProperty("coverage")) {
|
|
testCoverageEnabled = coverage == "true"
|
|
}
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility versions.sourceCompat
|
|
targetCompatibility versions.targetCompat
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = "11"
|
|
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",
|
|
]
|
|
}
|
|
|
|
sourceSets {
|
|
androidTest {
|
|
java.srcDirs += "src/sharedTest/java"
|
|
}
|
|
test {
|
|
java.srcDirs += "src/sharedTest/java"
|
|
}
|
|
}
|
|
|
|
buildFeatures {
|
|
viewBinding true
|
|
}
|
|
}
|
|
|
|
apply from: '../flavor.gradle'
|
|
|
|
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:ui-strings")
|
|
implementation project(":library:ui-styles")
|
|
implementation project(":library:core-utils")
|
|
implementation project(":library:attachment-viewer")
|
|
implementation project(":library:multipicker")
|
|
|
|
implementation libs.jetbrains.coroutinesCore
|
|
implementation libs.jetbrains.coroutinesAndroid
|
|
|
|
implementation libs.androidx.recyclerview
|
|
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"
|
|
|
|
implementation libs.squareup.moshi
|
|
kapt libs.squareup.moshiKotlin
|
|
|
|
// Lifecycle
|
|
implementation libs.androidx.lifecycleLivedata
|
|
api libs.androidx.lifecycleProcess
|
|
implementation libs.androidx.lifecycleRuntimeKtx
|
|
|
|
api libs.androidx.datastorepreferences
|
|
|
|
// 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'
|
|
|
|
api libs.google.phonenumber
|
|
|
|
// FlowBinding
|
|
implementation libs.github.flowBinding
|
|
implementation libs.github.flowBindingAppcompat
|
|
|
|
api libs.airbnb.epoxy
|
|
implementation libs.airbnb.epoxyGlide
|
|
ksp libs.airbnb.epoxyProcessor
|
|
implementation libs.airbnb.epoxyPaging
|
|
api libs.airbnb.mavericks
|
|
|
|
// Snap Helper https://github.com/rubensousa/GravitySnapHelper
|
|
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 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
|
|
implementation libs.google.material
|
|
api('me.gujun.android:span:1.7') {
|
|
exclude group: 'com.android.support', module: 'support-annotations'
|
|
}
|
|
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
|
|
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'
|
|
|
|
// Passphrase strength helper
|
|
implementation 'com.nulab-inc:zxcvbn:1.7.0'
|
|
|
|
// Alerter
|
|
implementation 'com.github.tapadoo:alerter:7.2.4'
|
|
|
|
implementation 'com.otaliastudios:autocomplete:1.1.0'
|
|
|
|
// Shake detection
|
|
implementation 'com.squareup:seismic:1.0.3'
|
|
|
|
// Image Loading
|
|
implementation libs.github.bigImageViewer
|
|
implementation libs.github.glideImageLoader
|
|
implementation libs.github.glideImageViewFactory
|
|
|
|
// implementation 'com.github.MikeOrtiz:TouchImageView:3.0.2'
|
|
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
|
|
|
|
implementation libs.github.glide
|
|
kapt libs.github.glideCompiler
|
|
implementation 'com.github.yalantis:ucrop:2.2.8'
|
|
|
|
// Chat effects
|
|
implementation 'nl.dionsegijn:konfetti-xml:2.0.2'
|
|
|
|
implementation 'com.github.jetradarmobile:android-snowfall:1.2.1'
|
|
// DI
|
|
implementation libs.dagger.hilt
|
|
kapt libs.dagger.hiltCompiler
|
|
|
|
// Analytics
|
|
implementation('com.posthog.android:posthog:2.0.3') {
|
|
exclude group: 'com.android.support', module: 'support-annotations'
|
|
}
|
|
implementation libs.sentry.sentryAndroid
|
|
|
|
// UnifiedPush
|
|
implementation 'com.github.UnifiedPush:android-connector:2.1.1'
|
|
|
|
implementation "androidx.emoji2:emoji2:1.3.0"
|
|
|
|
// WebRTC
|
|
// org.webrtc:google-webrtc is for development purposes only
|
|
// implementation 'org.webrtc:google-webrtc:1.0.+'
|
|
implementation('com.facebook.react:react-native-webrtc:111.0.0-jitsi-13672566@aar')
|
|
// Jitsi
|
|
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'
|
|
}
|
|
|
|
// QR-code
|
|
// Stick to 3.3.3 because of https://github.com/zxing/zxing/issues/1170
|
|
implementation 'com.google.zxing:core:3.3.3'
|
|
|
|
// Excludes the legacy support library annotation usages
|
|
// https://github.com/dm77/barcodescanner/blob/d036996c8a6f36a68843ffe539c834c28944b2d5/core/src/main/java/me/dm7/barcodescanner/core/CameraWrapper.java#L4
|
|
implementation ('me.dm7.barcodescanner:zxing:1.9.13') {
|
|
exclude group: 'com.android.support', module: 'support-v4'
|
|
}
|
|
|
|
// Emoji Keyboard
|
|
api libs.vanniktech.emojiMaterial
|
|
api libs.vanniktech.emojiGoogle
|
|
|
|
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
|
|
}
|
|
implementation 'commons-codec:commons-codec:1.15'
|
|
|
|
// 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
|
|
testImplementation libs.tests.robolectric
|
|
// 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"
|
|
}
|
|
// 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'
|
|
}
|
|
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"
|
|
}
|