mirror of
https://github.com/nextcloud/talk-android
synced 2025-02-01 20:22:03 +00:00
cbef8f7cdf
androidx.emoji2:emoji2:1.4.0 seems to fix the bug that emojis in markdown headlines are rendered too large. To use v1.4.0 of emoji2 it was necessary to bump compileSdk to v34, which in turn required the minor changes to the overwritten onDraw of View class. Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
364 lines
14 KiB
Groovy
364 lines
14 KiB
Groovy
/*
|
|
* Nextcloud Talk application
|
|
*
|
|
* @author Mario Danic
|
|
* @author Andy Scherzinger
|
|
* @author Marcel Hibbe
|
|
* @author Tim Krüger
|
|
* Copyright (C) 2021 Andy Scherzinger <info@andy-scherzinger.de>
|
|
* Copyright (C) 2017-2019 Mario Danic <mario@lovelyhq.com>
|
|
* Copyright (C) 2021 Marcel Hibbe <dev@mhibbe.de>
|
|
* Copyright (C) 2022 Tim Krüger <t@timkrueger.me>
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
import com.github.spotbugs.snom.SpotBugsTask
|
|
|
|
apply plugin: 'com.android.application'
|
|
apply plugin: 'kotlin-android'
|
|
apply plugin: 'kotlin-kapt'
|
|
apply plugin: 'kotlin-parcelize'
|
|
apply plugin: 'com.github.spotbugs'
|
|
apply plugin: 'io.gitlab.arturbosch.detekt'
|
|
apply plugin: "org.jlleitschuh.gradle.ktlint"
|
|
apply plugin: 'kotlinx-serialization'
|
|
|
|
android {
|
|
compileSdk 34
|
|
|
|
namespace 'com.nextcloud.talk'
|
|
|
|
defaultConfig {
|
|
minSdkVersion 24
|
|
targetSdkVersion 33
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
|
|
// mayor.minor.hotfix.increment (for increment: 01-50=Alpha / 51-89=RC / 90-99=stable)
|
|
// xx .xxx .xx .xx
|
|
versionCode 170200008
|
|
versionName "17.20.0 Alpha 08"
|
|
|
|
flavorDimensions "default"
|
|
renderscriptTargetApi 19
|
|
renderscriptSupportModeEnabled true
|
|
|
|
productFlavors {
|
|
// used for f-droid
|
|
generic {
|
|
applicationId 'com.nextcloud.talk2'
|
|
dimension "default"
|
|
}
|
|
gplay {
|
|
applicationId 'com.nextcloud.talk2'
|
|
dimension "default"
|
|
}
|
|
qa {
|
|
applicationId "com.nextcloud.talk2.qa"
|
|
dimension "default"
|
|
versionCode 1
|
|
versionName "1"
|
|
}
|
|
}
|
|
|
|
// Enabling multidex support.
|
|
multiDexEnabled true
|
|
|
|
vectorDrawables.useSupportLibrary = true
|
|
|
|
lintOptions {
|
|
disable 'InvalidPackage'
|
|
disable 'MissingTranslation'
|
|
disable 'VectorPath'
|
|
disable 'UnusedQuantity'
|
|
}
|
|
|
|
javaCompileOptions {
|
|
annotationProcessorOptions {
|
|
arguments += ["room.schemaLocation": "$projectDir/schemas".toString()]
|
|
}
|
|
}
|
|
|
|
testInstrumentationRunnerArgument "TEST_SERVER_URL", "${NC_TEST_SERVER_BASEURL}"
|
|
testInstrumentationRunnerArgument "TEST_SERVER_USERNAME", "${NC_TEST_SERVER_USERNAME}"
|
|
testInstrumentationRunnerArgument "TEST_SERVER_PASSWORD", "${NC_TEST_SERVER_PASSWORD}"
|
|
|
|
def localBroadcastPermission = "PRIVATE_BROADCAST"
|
|
manifestPlaceholders.broadcastPermission = localBroadcastPermission
|
|
buildConfigField "String", "PERMISSION_LOCAL_BROADCAST", "\"${localBroadcastPermission}\""
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled false
|
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
|
}
|
|
}
|
|
|
|
packagingOptions {
|
|
resources {
|
|
excludes += [
|
|
'META-INF/LICENSE.txt',
|
|
'META-INF/LICENSE',
|
|
'META-INF/NOTICE.txt',
|
|
'META-INF/NOTICE',
|
|
'META-INF/DEPENDENCIES',
|
|
'META-INF/rxjava.properties'
|
|
]
|
|
}
|
|
}
|
|
|
|
check.dependsOn 'spotbugsGplayDebug', 'lint', 'ktlintCheck', 'detekt'
|
|
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_17
|
|
targetCompatibility JavaVersion.VERSION_17
|
|
}
|
|
|
|
buildFeatures {
|
|
viewBinding true
|
|
}
|
|
|
|
lint {
|
|
abortOnError false
|
|
disable 'MissingTranslation','PrivateResource'
|
|
htmlOutput file("$project.buildDir/reports/lint/lint.html")
|
|
htmlReport true
|
|
}
|
|
}
|
|
|
|
ext {
|
|
androidxCameraVersion = "1.2.3"
|
|
coilKtVersion = "2.4.0"
|
|
daggerVersion = "2.48.1"
|
|
emojiVersion = "1.4.0"
|
|
lifecycleVersion = '2.6.2'
|
|
okhttpVersion = "4.11.0"
|
|
markwonVersion = "4.6.2"
|
|
materialDialogsVersion = "3.3.0"
|
|
parcelerVersion = "1.1.13"
|
|
prismVersion = "2.0.0"
|
|
retrofit2Version = "2.9.0"
|
|
roomVersion = "2.5.2"
|
|
workVersion = "2.8.1"
|
|
espressoVersion = "3.5.1"
|
|
media3_version = "1.1.1"
|
|
}
|
|
|
|
configurations.all {
|
|
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'
|
|
exclude group: 'org.jetbrains', module: 'annotations-java5' // via prism4j, already using annotations explicitly
|
|
}
|
|
|
|
dependencies {
|
|
implementation 'androidx.preference:preference-ktx:1.2.1'
|
|
detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:1.23.1")
|
|
|
|
implementation fileTree(include: ['*'], dir: 'libs')
|
|
|
|
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0"
|
|
|
|
implementation 'androidx.appcompat:appcompat:1.6.1'
|
|
implementation 'com.google.android.material:material:1.9.0'
|
|
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
|
implementation "com.vanniktech:emoji-google:0.17.0"
|
|
implementation "androidx.emoji2:emoji2:${emojiVersion}"
|
|
implementation "androidx.emoji2:emoji2-bundled:${emojiVersion}"
|
|
implementation "androidx.emoji2:emoji2-views:${emojiVersion}"
|
|
implementation "androidx.emoji2:emoji2-views-helper:${emojiVersion}"
|
|
implementation 'org.michaelevans.colorart:library:0.0.3'
|
|
implementation "androidx.work:work-runtime:${workVersion}"
|
|
implementation "androidx.work:work-rxjava2:${workVersion}"
|
|
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
|
androidTestImplementation "androidx.work:work-testing:${workVersion}"
|
|
implementation 'com.google.android.flexbox:flexbox:3.0.0'
|
|
implementation ('com.gitlab.bitfireAT:dav4jvm:2.1.3', {
|
|
exclude group: 'org.ogce', module: 'xpp3' // Android comes with its own XmlPullParser
|
|
})
|
|
implementation 'org.conscrypt:conscrypt-android:2.5.2'
|
|
|
|
implementation "androidx.camera:camera-core:${androidxCameraVersion}"
|
|
implementation "androidx.camera:camera-camera2:${androidxCameraVersion}"
|
|
implementation "androidx.camera:camera-lifecycle:${androidxCameraVersion}"
|
|
implementation "androidx.camera:camera-view:${androidxCameraVersion}"
|
|
implementation "androidx.exifinterface:exifinterface:1.3.6"
|
|
|
|
implementation "androidx.lifecycle:lifecycle-runtime-ktx:${lifecycleVersion}"
|
|
implementation "androidx.lifecycle:lifecycle-livedata-ktx:${lifecycleVersion}"
|
|
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${lifecycleVersion}"
|
|
implementation "androidx.lifecycle:lifecycle-process:${lifecycleVersion}"
|
|
implementation "androidx.lifecycle:lifecycle-common:${lifecycleVersion}"
|
|
|
|
implementation 'androidx.biometric:biometric:1.1.0'
|
|
|
|
implementation 'androidx.multidex:multidex:2.0.1'
|
|
|
|
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
|
|
implementation "io.reactivex.rxjava2:rxjava:2.2.21"
|
|
|
|
implementation 'com.bluelinelabs:conductor:3.2.0'
|
|
|
|
implementation "com.squareup.okhttp3:okhttp:${okhttpVersion}"
|
|
implementation "com.squareup.okhttp3:okhttp-urlconnection:${okhttpVersion}"
|
|
implementation "com.squareup.okhttp3:logging-interceptor:${okhttpVersion}"
|
|
|
|
implementation 'com.bluelinelabs:logansquare:1.3.7'
|
|
implementation 'com.fasterxml.jackson.core:jackson-core:2.14.3'
|
|
kapt 'com.bluelinelabs:logansquare-compiler:1.3.7'
|
|
|
|
implementation "com.squareup.retrofit2:retrofit:${retrofit2Version}"
|
|
implementation "com.squareup.retrofit2:adapter-rxjava2:${retrofit2Version}"
|
|
implementation 'com.github.aurae.retrofit2:converter-logansquare:1.4.1'
|
|
|
|
implementation "com.google.dagger:dagger:${daggerVersion}"
|
|
kapt "com.google.dagger:dagger-compiler:${daggerVersion}"
|
|
implementation 'com.github.lukaspili.autodagger2:autodagger2:1.1'
|
|
kapt 'com.github.lukaspili.autodagger2:autodagger2-compiler:1.1'
|
|
compileOnly 'javax.annotation:javax.annotation-api:1.3.2'
|
|
// Android only
|
|
implementation 'org.greenrobot:eventbus:3.3.1'
|
|
implementation 'net.zetetic:android-database-sqlcipher:4.5.4'
|
|
|
|
implementation "androidx.room:room-runtime:${roomVersion}"
|
|
implementation "androidx.room:room-rxjava2:${roomVersion}"
|
|
kapt "androidx.room:room-compiler:${roomVersion}"
|
|
implementation "androidx.room:room-ktx:${roomVersion}"
|
|
|
|
implementation "org.parceler:parceler-api:$parcelerVersion"
|
|
implementation 'net.orange-box.storebox:storebox-lib:1.4.0'
|
|
implementation 'eu.davidea:flexible-adapter:5.1.0'
|
|
implementation 'eu.davidea:flexible-adapter-ui:1.0.0'
|
|
implementation 'org.apache.commons:commons-lang3:3.13.0'
|
|
implementation 'com.github.wooplr:Spotlight:1.3'
|
|
implementation 'com.google.code.findbugs:jsr305:3.0.2'
|
|
implementation 'com.github.nextcloud-deps:ChatKit:0.4.2'
|
|
implementation 'joda-time:joda-time:2.12.5'
|
|
implementation "io.coil-kt:coil:${coilKtVersion}"
|
|
implementation "io.coil-kt:coil-gif:${coilKtVersion}"
|
|
implementation "io.coil-kt:coil-svg:${coilKtVersion}"
|
|
implementation 'com.github.natario1:Autocomplete:v1.1.0'
|
|
|
|
implementation 'com.github.cotechde.hwsecurity:hwsecurity-fido:2.4.5'
|
|
|
|
implementation 'com.novoda:merlin:1.2.1'
|
|
|
|
implementation 'com.github.nextcloud:PopupBubble:2.0.0'
|
|
implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
|
|
|
|
implementation "com.afollestad.material-dialogs:core:${materialDialogsVersion}"
|
|
implementation "com.afollestad.material-dialogs:datetime:${materialDialogsVersion}"
|
|
implementation "com.afollestad.material-dialogs:bottomsheets:${materialDialogsVersion}"
|
|
implementation "com.afollestad.material-dialogs:lifecycle:${materialDialogsVersion}"
|
|
|
|
implementation 'com.google.code.gson:gson:2.10.1'
|
|
|
|
implementation "androidx.media3:media3-exoplayer:$media3_version"
|
|
implementation "androidx.media3:media3-ui:$media3_version"
|
|
|
|
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
|
|
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.28'
|
|
|
|
implementation "io.noties.markwon:core:$markwonVersion"
|
|
implementation "io.noties.markwon:ext-strikethrough:$markwonVersion"
|
|
implementation "io.noties.markwon:ext-tasklist:$markwonVersion"
|
|
|
|
implementation 'com.github.nextcloud-deps:ImagePicker:2.1.0.2'
|
|
implementation 'io.github.elye:loaderviewlibrary:3.0.0'
|
|
implementation 'org.osmdroid:osmdroid-android:6.1.17'
|
|
implementation ('fr.dudie:nominatim-api:3.4', {
|
|
//noinspection DuplicatePlatformClasses
|
|
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
|
|
})
|
|
|
|
implementation 'androidx.core:core-ktx:1.10.1'
|
|
|
|
testImplementation 'junit:junit:4.13.2'
|
|
testImplementation 'org.mockito:mockito-core:5.6.0'
|
|
androidTestImplementation 'org.mockito:mockito-android:5.6.0'
|
|
testImplementation 'androidx.arch.core:core-testing:2.2.0'
|
|
|
|
androidTestImplementation "androidx.test:core:1.5.0"
|
|
|
|
// Espresso core
|
|
androidTestImplementation ("androidx.test.espresso:espresso-core:$espressoVersion", {
|
|
exclude group: 'com.android.support', module: 'support-annotations'
|
|
})
|
|
androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion"
|
|
androidTestImplementation "androidx.test.espresso:espresso-web:$espressoVersion"
|
|
androidTestImplementation "androidx.test.espresso:espresso-accessibility:$espressoVersion"
|
|
androidTestImplementation('com.android.support.test.espresso:espresso-intents:3.0.2')
|
|
|
|
spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.12.0'
|
|
spotbugsPlugins 'com.mebigfatguy.fb-contrib:fb-contrib:7.6.0'
|
|
|
|
gplayImplementation 'com.google.android.gms:play-services-base:18.2.0'
|
|
gplayImplementation "com.google.firebase:firebase-messaging:23.2.1"
|
|
|
|
implementation 'androidx.activity:activity-ktx:1.7.2'
|
|
|
|
implementation 'com.github.nextcloud.android-common:ui:0.12.0'
|
|
|
|
implementation 'com.github.nextcloud-deps:android-talk-webrtc:110.5481.0'
|
|
}
|
|
|
|
task installGitHooks(type: Copy, group: "development") {
|
|
description = "Install git hooks"
|
|
from("../scripts/hooks") {
|
|
include '*'
|
|
}
|
|
into '../.git/hooks'
|
|
}
|
|
|
|
spotbugs {
|
|
ignoreFailures = true // should continue checking
|
|
effort = "max"
|
|
reportLevel = "medium"
|
|
}
|
|
|
|
tasks.withType(SpotBugsTask) { task ->
|
|
String variantNameCap = task.name.replace("spotbugs", "")
|
|
String variantName = variantNameCap.substring(0, 1).toLowerCase() + variantNameCap.substring(1)
|
|
|
|
dependsOn "compile${variantNameCap}Sources"
|
|
|
|
excludeFilter = file("${project.rootDir}/spotbugs-filter.xml")
|
|
classes = fileTree("$project.buildDir/intermediates/javac/${variantName}/classes/")
|
|
reports {
|
|
xml {
|
|
required = true
|
|
}
|
|
html {
|
|
required = true
|
|
outputLocation = file("$project.buildDir/reports/spotbugs/spotbugs.html")
|
|
stylesheet = 'fancy.xsl'
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.named("detekt").configure {
|
|
reports {
|
|
html.required.set(true)
|
|
txt.required.set(true)
|
|
xml.required.set(false)
|
|
sarif.required.set(false)
|
|
md.required.set(false)
|
|
}
|
|
}
|
|
|
|
detekt {
|
|
config = files("../detekt.yml")
|
|
input = files("src/")
|
|
}
|