mirror of
https://github.com/nextcloud/talk-android
synced 2025-01-31 11:32:00 +00:00
fe82c3f061
there seems to be something wrong that alpha workflow did not update the apps version. Thats why gplay complains with "Google Api Error: forbidden: Cannot update a published APK. - Cannot update a published APK." because it always tries to upload 19.0.0 Alpha 02. On nextcloud ftp server, it was most probably always overwritten as there is an up to date alpha2 version. Seeting the version number to 19.0.0 Alpha 02 should make sure that an alpha 3 is built on next automation run. The root cause that the version was/is not changed by the automation is still unclear. Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
353 lines
13 KiB
Groovy
353 lines
13 KiB
Groovy
/*
|
|
* Nextcloud Talk - Android Client
|
|
*
|
|
* SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
|
|
* SPDX-FileCopyrightText: 2021-2023 Marcel Hibbe <dev@mhibbe.de>
|
|
* SPDX-FileCopyrightText: 2022 Tim Krüger <t@timkrueger.me>
|
|
* SPDX-FileCopyrightText: 2021 Andy Scherzinger <info@andy-scherzinger.de>
|
|
* SPDX-FileCopyrightText: 2017-2019 Mario Danic <mario@lovelyhq.com>
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
*/
|
|
import com.github.spotbugs.snom.Confidence
|
|
import com.github.spotbugs.snom.Effort
|
|
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 34
|
|
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 190000002
|
|
versionName "19.0.0 Alpha 02"
|
|
|
|
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
|
|
buildConfig = true
|
|
}
|
|
|
|
lint {
|
|
abortOnError false
|
|
disable 'MissingTranslation','PrivateResource'
|
|
htmlOutput file("$project.buildDir/reports/lint/lint.html")
|
|
htmlReport true
|
|
}
|
|
}
|
|
|
|
ext {
|
|
androidxCameraVersion = "1.3.2"
|
|
coilKtVersion = "2.6.0"
|
|
daggerVersion = "2.51"
|
|
emojiVersion = "1.4.0"
|
|
fidoVersion = "4.1.0-patch2"
|
|
lifecycleVersion = '2.7.0'
|
|
okhttpVersion = "4.12.0"
|
|
markwonVersion = "4.6.2"
|
|
materialDialogsVersion = "3.3.0"
|
|
parcelerVersion = "1.1.13"
|
|
prismVersion = "2.0.0"
|
|
retrofit2Version = "2.9.0"
|
|
roomVersion = "2.6.1"
|
|
workVersion = "2.9.0"
|
|
espressoVersion = "3.5.1"
|
|
media3_version = "1.3.0"
|
|
}
|
|
|
|
configurations.configureEach {
|
|
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'
|
|
implementation 'androidx.datastore:datastore-core:1.0.0'
|
|
implementation 'androidx.datastore:datastore-preferences:1.0.0'
|
|
detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:1.23.5")
|
|
|
|
implementation fileTree(include: ['*'], dir: 'libs')
|
|
|
|
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3"
|
|
|
|
implementation 'androidx.appcompat:appcompat:1.6.1'
|
|
implementation 'com.google.android.material:material:1.11.0'
|
|
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
|
implementation "com.vanniktech:emoji-google:0.18.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.github.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.7"
|
|
|
|
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.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 'eu.davidea:flexible-adapter:5.1.0'
|
|
implementation 'eu.davidea:flexible-adapter-ui:1.0.0'
|
|
implementation 'org.apache.commons:commons-lang3:3.14.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.7'
|
|
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.nextcloud-deps.hwsecurity:hwsecurity-fido:${fidoVersion}"
|
|
implementation "com.github.nextcloud-deps.hwsecurity:hwsecurity-fido2:${fidoVersion}"
|
|
|
|
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.18'
|
|
implementation ('fr.dudie:nominatim-api:3.4', {
|
|
//noinspection DuplicatePlatformClasses
|
|
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
|
|
})
|
|
|
|
implementation 'androidx.core:core-ktx:1.12.0'
|
|
|
|
testImplementation 'junit:junit:4.13.2'
|
|
testImplementation 'org.mockito:mockito-core:5.11.0'
|
|
androidTestImplementation 'org.mockito:mockito-android:5.11.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.13.0'
|
|
spotbugsPlugins 'com.mebigfatguy.fb-contrib:fb-contrib:7.6.4'
|
|
|
|
gplayImplementation 'com.google.android.gms:play-services-base:18.3.0'
|
|
gplayImplementation "com.google.firebase:firebase-messaging:23.4.1"
|
|
|
|
implementation 'androidx.activity:activity-ktx:1.8.2'
|
|
|
|
implementation 'com.github.nextcloud.android-common:ui:0.18.0'
|
|
|
|
implementation 'com.github.nextcloud-deps:android-talk-webrtc:121.6167.0'
|
|
}
|
|
|
|
tasks.register('installGitHooks', Copy) {
|
|
description = "Install git hooks"
|
|
from("../scripts/hooks") {
|
|
include '*'
|
|
}
|
|
into '../.git/hooks'
|
|
}
|
|
|
|
spotbugs {
|
|
ignoreFailures = true // should continue checking
|
|
effort = Effort.MAX
|
|
reportLevel = Confidence.valueOf('MEDIUM')
|
|
}
|
|
|
|
tasks.withType(SpotBugsTask).configureEach { 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}/compile${variantNameCap}JavaWithJavac/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.setFrom("../detekt.yml")
|
|
source.setFrom("src/")
|
|
}
|