2019-08-07 11:46:38 +02:00
|
|
|
import com.android.build.OutputFile
|
|
|
|
|
2018-10-03 17:56:33 +02:00
|
|
|
apply plugin: 'com.android.application'
|
2019-06-18 17:42:07 +02:00
|
|
|
apply plugin: 'com.google.android.gms.oss-licenses-plugin'
|
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-02-24 15:25:30 +01:00
|
|
|
apply plugin: 'com.likethesalad.stem'
|
2021-10-14 18:47:28 +02:00
|
|
|
apply plugin: 'dagger.hilt.android.plugin'
|
2022-05-04 15:52:51 +02:00
|
|
|
apply plugin: 'kotlinx-knit'
|
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
|
|
|
|
2022-05-04 17:14:41 +02:00
|
|
|
knit {
|
|
|
|
files = fileTree(project.rootDir) {
|
|
|
|
include '**/*.md'
|
|
|
|
include '**/*.kt'
|
|
|
|
include '**/*.kts'
|
|
|
|
exclude '**/build/**'
|
|
|
|
exclude '**/.gradle/**'
|
|
|
|
exclude '**/towncrier/template.md'
|
|
|
|
exclude '**/CHANGES.md'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-06-18 15:00:12 +02:00
|
|
|
// Note: 2 digits max for each value
|
2020-06-30 13:34:02 +02:00
|
|
|
ext.versionMajor = 1
|
2022-02-09 11:18:03 +01:00
|
|
|
ext.versionMinor = 4
|
2022-01-11 17:42:54 +01:00
|
|
|
// Note: even values are reserved for regular release, odd values for hotfix release.
|
|
|
|
// When creating a hotfix, you should decrease the value, since the current value
|
|
|
|
// is the value for the next regular release.
|
2022-06-22 14:48:56 +02:00
|
|
|
ext.versionPatch = 26
|
2019-01-30 12:55:35 +01:00
|
|
|
|
2019-03-18 18:53:14 +01:00
|
|
|
static def getGitTimestamp() {
|
2019-03-13 13:10:36 +01:00
|
|
|
def cmd = 'git show -s --format=%ct'
|
|
|
|
return cmd.execute().text.trim() as Long
|
|
|
|
}
|
|
|
|
|
2019-03-13 17:00:30 +01:00
|
|
|
static def generateVersionCodeFromTimestamp() {
|
2020-01-10 17:29:34 +01:00
|
|
|
// It's unix timestamp, minus timestamp of October 3rd 2018 (first commit date) divided by 100: It's incremented by one every 100 seconds.
|
2020-01-13 15:12:39 +01:00
|
|
|
// plus 20_000_000 for compatibility reason with the previous way the Version Code was computed
|
2020-01-10 17:29:34 +01:00
|
|
|
// Note that the result will be multiplied by 10 when adding the digit for the arch
|
2020-01-20 15:58:12 +01:00
|
|
|
return ((getGitTimestamp() - 1_538_524_800) / 100).toInteger() + 20_000_000
|
2019-01-30 12:55:35 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
def generateVersionCodeFromVersionName() {
|
2020-01-13 15:12:39 +01:00
|
|
|
// plus 4_000_000 for compatibility reason with the previous way the Version Code was computed
|
2020-01-10 17:29:34 +01:00
|
|
|
// Note that the result will be multiplied by 10 when adding the digit for the arch
|
|
|
|
return (versionMajor * 1_00_00 + versionMinor * 1_00 + versionPatch) + 4_000_000
|
2019-08-14 10:43:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
def getVersionCode() {
|
|
|
|
if (gitBranchName() == "develop") {
|
2020-10-22 16:10:08 +02:00
|
|
|
return generateVersionCodeFromTimestamp()
|
2019-08-14 10:43:47 +02:00
|
|
|
} else {
|
2020-10-22 16:10:08 +02:00
|
|
|
return generateVersionCodeFromVersionName()
|
2019-08-14 10:43:47 +02:00
|
|
|
}
|
2019-01-30 12:55:35 +01: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()
|
|
|
|
}
|
|
|
|
|
|
|
|
static def gitRevisionDate() {
|
|
|
|
def cmd = "git show -s --format=%ci HEAD^{commit}"
|
|
|
|
return cmd.execute().text.trim()
|
|
|
|
}
|
|
|
|
|
|
|
|
static def gitBranchName() {
|
2019-09-12 16:05:04 +02:00
|
|
|
def fromEnv = System.env.BUILDKITE_BRANCH as String ?: ""
|
|
|
|
|
|
|
|
if (!fromEnv.isEmpty()) {
|
|
|
|
return fromEnv
|
|
|
|
} else {
|
|
|
|
// Note: this command return "HEAD" on Buildkite, so use the system env 'BUILDKITE_BRANCH' content first
|
|
|
|
def cmd = "git rev-parse --abbrev-ref HEAD"
|
|
|
|
return cmd.execute().text.trim()
|
|
|
|
}
|
2019-03-13 17:00:30 +01:00
|
|
|
}
|
|
|
|
|
2021-04-29 12:14:55 +02:00
|
|
|
// For Google Play build, build on any other branch than main will have a "-dev" suffix
|
2020-01-20 15:58:12 +01:00
|
|
|
static def getGplayVersionSuffix() {
|
2021-04-29 12:14:55 +02:00
|
|
|
if (gitBranchName() == "main") {
|
2019-08-08 16:57:03 +02:00
|
|
|
return ""
|
|
|
|
} else {
|
2020-07-13 21:50:26 +02:00
|
|
|
return "-dev"
|
2019-08-08 16:57:03 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-01-20 15:58:12 +01:00
|
|
|
static def gitTag() {
|
|
|
|
def cmd = "git describe --exact-match --tags"
|
|
|
|
return cmd.execute().text.trim()
|
|
|
|
}
|
|
|
|
|
|
|
|
// For F-Droid build, build on a not tagged commit will have a "-dev" suffix
|
|
|
|
static def getFdroidVersionSuffix() {
|
|
|
|
if (gitTag() == "") {
|
|
|
|
return "-dev"
|
|
|
|
} else {
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
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
|
|
|
]
|
|
|
|
}
|
|
|
|
|
2020-01-10 17:29:34 +01:00
|
|
|
// map for the version codes last digit
|
|
|
|
// x86 must have greater values than arm
|
2019-08-07 11:46:38 +02:00
|
|
|
// 64 bits have greater value than 32 bits
|
|
|
|
ext.abiVersionCodes = ["armeabi-v7a": 1, "arm64-v8a": 2, "x86": 3, "x86_64": 4].withDefault { 0 }
|
|
|
|
|
2019-09-12 16:05:04 +02:00
|
|
|
def buildNumber = System.env.BUILDKITE_BUILD_NUMBER as Integer ?: 0
|
2019-03-13 17:00:30 +01:00
|
|
|
|
2018-10-03 17:56:33 +02:00
|
|
|
android {
|
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 16:11:07 +02:00
|
|
|
applicationId "im.vector.app"
|
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-01-24 16:30:05 +01:00
|
|
|
multiDexEnabled true
|
2019-07-11 16:49:06 +02:00
|
|
|
|
2020-12-01 17:50:59 +01:00
|
|
|
renderscriptTargetApi 24
|
|
|
|
renderscriptSupportModeEnabled true
|
|
|
|
|
2019-08-14 10:43:47 +02:00
|
|
|
// `develop` branch will have version code from timestamp, to ensure each build from CI has a incremented versionCode.
|
2021-04-29 12:14:55 +02:00
|
|
|
// Other branches (main, features, etc.) will have version code based on application version.
|
2019-08-14 10:43:47 +02:00
|
|
|
versionCode project.getVersionCode()
|
2019-07-11 16:49:06 +02:00
|
|
|
|
2020-08-27 15:37:10 +02:00
|
|
|
// Required for sonar analysis
|
|
|
|
versionName "${versionMajor}.${versionMinor}.${versionPatch}-sonar"
|
|
|
|
|
2022-03-03 15:05:29 +01:00
|
|
|
// Generate a random app task affinity
|
2022-06-14 16:56:16 +02:00
|
|
|
manifestPlaceholders = [appTaskAffinitySuffix: "H_${gitRevision()}"]
|
2019-06-21 11:13:16 +02:00
|
|
|
|
|
|
|
buildConfigField "String", "GIT_REVISION", "\"${gitRevision()}\""
|
|
|
|
buildConfigField "String", "GIT_REVISION_DATE", "\"${gitRevisionDate()}\""
|
|
|
|
buildConfigField "String", "GIT_BRANCH_NAME", "\"${gitBranchName()}\""
|
|
|
|
buildConfigField "String", "BUILD_NUMBER", "\"${buildNumber}\""
|
2019-03-13 17:00:30 +01:00
|
|
|
|
2022-01-06 18:21:08 +01:00
|
|
|
buildConfigField "im.vector.app.features.VectorFeatures.OnboardingVariant", "ONBOARDING_VARIANT", "im.vector.app.features.VectorFeatures.OnboardingVariant.FTUE_AUTH"
|
2021-07-13 22:22:56 +02:00
|
|
|
|
2021-02-08 15:26:09 +01:00
|
|
|
buildConfigField "im.vector.app.features.crypto.keysrequest.OutboundSessionKeySharingStrategy", "outboundSessionKeySharingStrategy", "im.vector.app.features.crypto.keysrequest.OutboundSessionKeySharingStrategy.WhenTyping"
|
2021-02-04 09:47:24 +01:00
|
|
|
|
2021-07-15 17:04:10 +02:00
|
|
|
buildConfigField "Long", "VOICE_MESSAGE_DURATION_LIMIT_MS", "120_000L"
|
2021-06-17 15:17:38 +02:00
|
|
|
|
2021-06-01 18:12:10 +02:00
|
|
|
// If set, MSC3086 asserted identity messages sent on VoIP calls will cause the call to appear in the room corresponding to the asserted identity.
|
|
|
|
// This *must* only be set in trusted environments.
|
|
|
|
buildConfigField "Boolean", "handleCallAssertedIdentityEvents", "false"
|
|
|
|
|
2022-01-24 16:49:49 +01:00
|
|
|
buildConfigField "Boolean", "enableLocationSharing", "true"
|
2022-01-18 10:34:02 +01:00
|
|
|
buildConfigField "String", "mapTilerKey", "\"fU3vlMsMn4Jb6dnEIFsx\""
|
2021-12-28 12:00:37 +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'
|
|
|
|
}
|
|
|
|
|
|
|
|
// Ref: https://developer.android.com/studio/build/configure-apk-splits.html
|
|
|
|
splits {
|
|
|
|
// Configures multiple APKs based on ABI.
|
|
|
|
abi {
|
|
|
|
// Enables building multiple APKs per ABI.
|
|
|
|
enable true
|
|
|
|
|
|
|
|
// By default all ABIs are included, so use reset() and include to specify that we only
|
|
|
|
// want APKs for armeabi-v7a, x86, arm64-v8a and x86_64.
|
|
|
|
|
|
|
|
// Resets the list of ABIs that Gradle should create APKs for to none.
|
|
|
|
reset()
|
|
|
|
|
|
|
|
// Specifies a list of ABIs that Gradle should create APKs for.
|
|
|
|
include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
|
|
|
|
|
|
|
|
// Generate a universal APK that includes all ABIs, so user who install from CI tool can use this one by default.
|
|
|
|
universalApk true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-08-07 16:51:39 +02:00
|
|
|
applicationVariants.all { variant ->
|
2020-10-22 16:10:08 +02:00
|
|
|
// assign different version code for each output
|
|
|
|
def baseVariantVersion = variant.versionCode * 10
|
2019-08-07 11:46:38 +02:00
|
|
|
variant.outputs.each { output ->
|
|
|
|
def baseAbiVersionCode = project.ext.abiVersionCodes.get(output.getFilter(OutputFile.ABI))
|
2019-08-07 16:51:39 +02:00
|
|
|
// Known limitation: it does not modify the value in the BuildConfig.java generated file
|
2020-10-19 12:29:11 +02:00
|
|
|
// See https://issuetracker.google.com/issues/171133218
|
2020-10-22 16:10:08 +02:00
|
|
|
output.versionCodeOverride = baseVariantVersion + baseAbiVersionCode
|
|
|
|
print "ABI " + output.getFilter(OutputFile.ABI) + " \t-> VersionCode = " + output.versionCodeOverride + "\n"
|
2019-08-07 11:46:38 +02:00
|
|
|
}
|
|
|
|
}
|
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'
|
|
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
}
|
2019-06-07 10:17:14 +02:00
|
|
|
signingConfigs {
|
|
|
|
debug {
|
|
|
|
keyAlias 'androiddebugkey'
|
|
|
|
keyPassword 'android'
|
|
|
|
storeFile file('./signature/debug.keystore')
|
|
|
|
storePassword 'android'
|
|
|
|
}
|
2022-01-12 14:06:17 +01:00
|
|
|
release {
|
|
|
|
keyAlias project.property("signing.element.keyId")
|
|
|
|
keyPassword project.property("signing.element.keyPassword")
|
|
|
|
storeFile file(project.property("signing.element.storePath"))
|
|
|
|
storePassword project.property("signing.element.storePassword")
|
|
|
|
}
|
2019-06-07 10:17:14 +02:00
|
|
|
}
|
|
|
|
|
2018-10-03 17:56:33 +02:00
|
|
|
buildTypes {
|
2019-03-13 15:11:02 +01:00
|
|
|
debug {
|
2019-07-11 17:59:07 +02:00
|
|
|
applicationIdSuffix ".debug"
|
2020-06-30 13:52:50 +02:00
|
|
|
resValue "string", "app_name", "Element dbg"
|
2019-07-11 17:59:07 +02:00
|
|
|
|
2019-04-02 18:08:43 +02:00
|
|
|
buildConfigField "boolean", "LOW_PRIVACY_LOG_ENABLE", "false"
|
2020-09-08 15:38:00 +02:00
|
|
|
// Set to true if you want to enable strict mode in debug
|
|
|
|
buildConfigField "boolean", "ENABLE_STRICT_MODE_LOGS", "false"
|
2019-06-07 10:17:14 +02:00
|
|
|
|
|
|
|
signingConfig signingConfigs.debug
|
2022-06-14 16:56:16 +02:00
|
|
|
|
|
|
|
if (project.hasProperty("coverage")) {
|
|
|
|
testCoverageEnabled = coverage.enableTestCoverage
|
|
|
|
}
|
2019-03-13 15:11:02 +01:00
|
|
|
}
|
|
|
|
|
2018-10-03 17:56:33 +02:00
|
|
|
release {
|
2021-02-08 12:39:35 +01:00
|
|
|
resValue "string", "app_name", "Element"
|
2019-07-11 17:59:07 +02:00
|
|
|
|
2019-04-02 18:08:43 +02:00
|
|
|
buildConfigField "boolean", "LOW_PRIVACY_LOG_ENABLE", "false"
|
2020-09-08 15:38:00 +02:00
|
|
|
buildConfigField "boolean", "ENABLE_STRICT_MODE_LOGS", "false"
|
2019-03-13 15:11:02 +01:00
|
|
|
|
2020-06-11 19:37:20 +02:00
|
|
|
postprocessing {
|
|
|
|
removeUnusedCode true
|
|
|
|
removeUnusedResources true
|
2020-06-16 11:18:33 +02:00
|
|
|
// We do not activate obfuscation as it makes it hard then to read crash reports, and it's a bit useless on an open source project :)
|
2020-06-11 19:37:20 +02:00
|
|
|
obfuscate false
|
|
|
|
optimizeCode true
|
|
|
|
proguardFiles 'proguard-rules.pro'
|
|
|
|
}
|
2022-01-25 22:26:52 +01:00
|
|
|
// signingConfig signingConfigs.release
|
2018-10-03 17:56:33 +02:00
|
|
|
}
|
|
|
|
}
|
2018-12-13 11:00:50 +01:00
|
|
|
|
2019-03-13 17:00:30 +01:00
|
|
|
flavorDimensions "store"
|
|
|
|
|
|
|
|
productFlavors {
|
2019-03-19 14:38:15 +01:00
|
|
|
gplay {
|
2021-06-18 12:26:30 +02:00
|
|
|
apply plugin: 'com.google.gms.google-services'
|
2021-06-18 17:23:10 +02:00
|
|
|
afterEvaluate {
|
|
|
|
tasks.matching { it.name.contains("GoogleServices") && !it.name.contains("Gplay") }*.enabled = false
|
|
|
|
}
|
2021-06-18 12:26:30 +02:00
|
|
|
|
2019-03-13 17:00:30 +01:00
|
|
|
dimension "store"
|
2020-12-09 11:17:49 +01:00
|
|
|
isDefault = true
|
2020-01-20 15:58:12 +01:00
|
|
|
versionName "${versionMajor}.${versionMinor}.${versionPatch}${getGplayVersionSuffix()}"
|
|
|
|
|
2020-01-08 15:57:35 +01:00
|
|
|
resValue "bool", "isGplay", "true"
|
2019-03-13 17:00:30 +01:00
|
|
|
buildConfigField "boolean", "ALLOW_FCM_USE", "true"
|
|
|
|
buildConfigField "String", "SHORT_FLAVOR_DESCRIPTION", "\"G\""
|
|
|
|
buildConfigField "String", "FLAVOR_DESCRIPTION", "\"GooglePlay\""
|
|
|
|
}
|
|
|
|
|
2019-03-19 14:38:15 +01:00
|
|
|
fdroid {
|
2019-03-13 17:00:30 +01:00
|
|
|
dimension "store"
|
|
|
|
|
2020-01-20 15:58:12 +01:00
|
|
|
versionName "${versionMajor}.${versionMinor}.${versionPatch}${getFdroidVersionSuffix()}"
|
|
|
|
|
2020-01-08 15:57:35 +01:00
|
|
|
resValue "bool", "isGplay", "false"
|
2019-03-13 17:00:30 +01:00
|
|
|
buildConfigField "boolean", "ALLOW_FCM_USE", "false"
|
|
|
|
buildConfigField "String", "SHORT_FLAVOR_DESCRIPTION", "\"F\""
|
|
|
|
buildConfigField "String", "FLAVOR_DESCRIPTION", "\"FDroid\""
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-02-04 11:20:20 +01:00
|
|
|
lintOptions {
|
|
|
|
lintConfig file("lint.xml")
|
|
|
|
|
2021-09-02 10:42:56 +02:00
|
|
|
checkDependencies true
|
2020-07-02 11:29:00 +02:00
|
|
|
abortOnError true
|
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 {
|
2021-09-02 09:50:34 +02:00
|
|
|
jvmTarget = "11"
|
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
|
|
|
|
}
|
2018-10-03 17:56:33 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
dependencies {
|
2022-05-27 10:55:15 +02:00
|
|
|
implementation project(':library:opusencoder')
|
|
|
|
|
2022-02-23 18:10:08 +01:00
|
|
|
implementation project(":vector-config")
|
2018-10-04 15:19:03 +02:00
|
|
|
implementation project(":matrix-sdk-android")
|
2021-10-07 11:11:44 +02:00
|
|
|
implementation project(":matrix-sdk-android-flow")
|
2022-01-18 12:04:06 +01:00
|
|
|
implementation project(":library:jsonviewer")
|
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:40:17 +01:00
|
|
|
implementation project(":library:diff-match-patch")
|
2022-02-22 19:48:48 +01:00
|
|
|
implementation project(":library:multipicker")
|
2021-06-09 20:49:56 +02:00
|
|
|
implementation 'androidx.multidex:multidex:2.0.1'
|
2018-10-03 17:56:33 +02:00
|
|
|
|
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
|
2021-02-19 22:52:07 +01:00
|
|
|
implementation "androidx.sharetarget:sharetarget:1.1.0"
|
2021-09-15 19:22:52 +02:00
|
|
|
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
|
|
|
|
2019-10-01 20:11:15 +02:00
|
|
|
implementation "org.threeten:threetenbp:1.4.0:no-tzdb"
|
2022-05-09 15:24:03 +02:00
|
|
|
implementation "com.gabrielittner.threetenbp:lazythreetenbp:0.10.0"
|
2019-10-01 20:11:15 +02:00
|
|
|
|
2021-09-17 13:58:44 +02:00
|
|
|
implementation libs.squareup.moshi
|
|
|
|
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
|
2021-11-09 16:56:51 +01:00
|
|
|
implementation libs.androidx.lifecycleProcess
|
2022-02-07 16:10:26 +01:00
|
|
|
implementation libs.androidx.lifecycleRuntimeKtx
|
2021-09-17 13:58:44 +02:00
|
|
|
|
2021-09-20 16:54:39 +02:00
|
|
|
implementation libs.androidx.datastorepreferences
|
|
|
|
|
2019-03-28 17:28:20 +01:00
|
|
|
|
|
|
|
// Log
|
2021-09-15 11:28:58 +02:00
|
|
|
implementation libs.jakewharton.timber
|
2019-03-28 17:28:20 +01:00
|
|
|
|
|
|
|
// Debug
|
2021-03-31 08:58:20 +02:00
|
|
|
implementation 'com.facebook.stetho:stetho:1.6.0'
|
2018-10-16 15:52:30 +02:00
|
|
|
|
2019-11-21 12:11:58 +01:00
|
|
|
// Phone number https://github.com/google/libphonenumber
|
2022-06-30 01:09:57 +02:00
|
|
|
implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.51'
|
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
|
2021-09-15 19:22:52 +02:00
|
|
|
|
2021-09-17 13:58:44 +02:00
|
|
|
implementation libs.airbnb.epoxy
|
|
|
|
implementation libs.airbnb.epoxyGlide
|
|
|
|
kapt libs.airbnb.epoxyProcessor
|
|
|
|
implementation libs.airbnb.epoxyPaging
|
2021-09-30 19:52:37 +02:00
|
|
|
implementation libs.airbnb.mavericks
|
2018-10-19 15:30:40 +02:00
|
|
|
|
2019-04-02 18:08:43 +02:00
|
|
|
// Work
|
2021-09-15 19:22:52 +02:00
|
|
|
implementation 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-06-18 18:29:48 +02:00
|
|
|
// Functional Programming
|
2021-09-17 13:58:44 +02:00
|
|
|
implementation libs.arrow.core
|
2018-12-29 19:57:38 +01:00
|
|
|
|
2019-03-28 11:53:28 +01:00
|
|
|
// Pref
|
2021-09-17 13:58:44 +02:00
|
|
|
implementation libs.androidx.preferenceKtx
|
2019-03-28 11:53:28 +01:00
|
|
|
|
2018-12-29 19:57:38 +01:00
|
|
|
// UI
|
2018-10-29 17:20:08 +01:00
|
|
|
implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
|
2021-09-17 13:58:44 +02:00
|
|
|
implementation libs.google.material
|
2019-02-20 11:39:25 +01:00
|
|
|
implementation 'me.gujun.android:span:1.7'
|
2021-09-17 13:58:44 +02:00
|
|
|
implementation libs.markwon.core
|
2020-09-18 16:22:10 +02:00
|
|
|
implementation libs.markwon.extLatex
|
|
|
|
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
|
2021-11-04 00:06:19 +01:00
|
|
|
implementation 'androidx.browser:browser:1.4.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-04-08 15:51:35 +02:00
|
|
|
implementation 'com.otaliastudios:autocomplete:1.1.0'
|
|
|
|
|
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.progressPieIndicator
|
|
|
|
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
|
|
|
|
implementation 'com.posthog.android:posthog:1.1.2'
|
|
|
|
|
2022-02-25 16:25:56 +01:00
|
|
|
// UnifiedPush
|
2022-03-01 00:23:39 +01:00
|
|
|
implementation 'com.github.UnifiedPush:android-connector:2.0.0'
|
2022-02-25 16:25:56 +01:00
|
|
|
// UnifiedPush gplay flavor only
|
2022-06-17 01:08:07 +02:00
|
|
|
gplayImplementation('com.github.UnifiedPush:android-embedded_fcm_distributor:2.1.1') {
|
2019-06-27 10:42:22 +02:00
|
|
|
exclude group: 'com.google.firebase', module: 'firebase-core'
|
|
|
|
exclude group: 'com.google.firebase', module: 'firebase-analytics'
|
|
|
|
exclude group: 'com.google.firebase', module: 'firebase-measurement-connector'
|
|
|
|
}
|
2019-04-02 18:08:43 +02:00
|
|
|
|
2020-01-08 15:57:35 +01:00
|
|
|
// OSS License, gplay flavor only
|
|
|
|
gplayImplementation 'com.google.android.gms:play-services-oss-licenses:17.0.0'
|
|
|
|
|
2022-05-10 01:10:49 +02:00
|
|
|
implementation "androidx.emoji2:emoji2:1.1.0"
|
2020-02-12 16:48:11 +01:00
|
|
|
|
2020-08-12 14:02:00 +02:00
|
|
|
// WebRTC
|
2020-08-14 21:33:25 +02:00
|
|
|
// org.webrtc:google-webrtc is for development purposes only
|
|
|
|
// implementation 'org.webrtc:google-webrtc:1.0.+'
|
2022-03-29 18:24:44 +02:00
|
|
|
implementation('com.facebook.react:react-native-webrtc:1.94.2-jitsi-10227332@aar')
|
2020-05-05 11:46:21 +02:00
|
|
|
|
2021-02-10 16:55:07 +01:00
|
|
|
// Jitsi
|
2022-03-29 18:24:44 +02:00
|
|
|
implementation('org.jitsi.react:jitsi-meet-sdk:5.0.2') {
|
2021-05-19 18:19:49 +02:00
|
|
|
exclude group: 'com.google.firebase'
|
|
|
|
exclude group: 'com.google.android.gms'
|
|
|
|
exclude group: 'com.android.installreferrer'
|
2021-04-06 20:50:43 +02:00
|
|
|
}
|
2021-02-10 16:55:07 +01: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'
|
2020-01-22 14:19:04 +01:00
|
|
|
implementation 'me.dm7.barcodescanner:zxing:1.9.13'
|
|
|
|
|
2020-12-09 16:45:33 +01:00
|
|
|
// Emoji Keyboard
|
2021-09-28 11:29:30 +02:00
|
|
|
implementation libs.vanniktech.emojiMaterial
|
|
|
|
implementation libs.vanniktech.emojiGoogle
|
2020-12-09 16:45:33 +01:00
|
|
|
|
2021-01-07 11:15:37 +01:00
|
|
|
implementation 'im.dlg:android-dialer:1.2.5'
|
|
|
|
|
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
|
|
|
|
}
|
|
|
|
implementation 'commons-codec:commons-codec:1.15'
|
|
|
|
|
2021-12-15 11:57:43 +01:00
|
|
|
// MapTiler
|
2022-05-24 10:34:37 +02:00
|
|
|
fdroidImplementation(libs.maplibre.androidSdk) {
|
|
|
|
exclude group: 'com.google.android.gms', module: 'play-services-location'
|
|
|
|
}
|
|
|
|
fdroidImplementation(libs.maplibre.pluginAnnotation) {
|
|
|
|
exclude group: 'com.google.android.gms', module: 'play-services-location'
|
|
|
|
}
|
|
|
|
gplayImplementation libs.maplibre.androidSdk
|
|
|
|
gplayImplementation libs.maplibre.pluginAnnotation
|
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
|
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
|
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-06-14 11:54:14 +02:00
|
|
|
// Flipper, debug builds only
|
2022-06-28 14:27:40 +02:00
|
|
|
debugImplementation(libs.flipper.flipper) {
|
2022-06-14 11:54:14 +02:00
|
|
|
exclude group: 'com.facebook.fbjni', module: 'fbjni'
|
|
|
|
}
|
2022-06-28 14:27:40 +02:00
|
|
|
debugImplementation(libs.flipper.flipperNetworkPlugin) {
|
2022-06-14 11:54:14 +02:00
|
|
|
exclude group: 'com.facebook.fbjni', module: 'fbjni'
|
|
|
|
}
|
2022-06-29 10:33:21 +02:00
|
|
|
debugImplementation 'com.facebook.soloader:soloader:0.10.4'
|
2022-06-22 01:41:39 +02:00
|
|
|
debugImplementation "com.kgurgul.flipper:flipper-realm-android:2.2.0"
|
2022-06-14 11:54:14 +02:00
|
|
|
|
2020-06-11 19:40:46 +02:00
|
|
|
// Activate when you want to check for leaks, from time to time.
|
|
|
|
//debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.3'
|
2020-06-08 19:46:55 +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"
|
2021-09-24 09:53:52 +02:00
|
|
|
androidTestImplementation('com.adevinta.android:barista:4.2.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
|
2022-05-04 16:48:23 +02:00
|
|
|
debugImplementation libs.androidx.fragmentTesting
|
2018-10-03 17:56:33 +02:00
|
|
|
}
|