mirror of
https://github.com/KDE/kdeconnect-android
synced 2025-08-28 12:47:43 +00:00
Migrate build configuration to kotlin
Migrate build logic to kotlin including use of version catalog
This commit is contained in:
parent
c5c780b5ce
commit
b3b538ff31
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,7 +7,6 @@ bin/
|
|||||||
build/
|
build/
|
||||||
target/
|
target/
|
||||||
classes/
|
classes/
|
||||||
gradle
|
|
||||||
*.iml
|
*.iml
|
||||||
*.keystore
|
*.keystore
|
||||||
!debug.keystore
|
!debug.keystore
|
||||||
|
227
build.gradle
227
build.gradle
@ -1,227 +0,0 @@
|
|||||||
import com.github.jk1.license.render.TextReportRenderer
|
|
||||||
|
|
||||||
buildscript {
|
|
||||||
ext.kotlin_version = '1.8.22'
|
|
||||||
dependencies {
|
|
||||||
classpath 'com.android.tools.build:gradle:8.1.0'
|
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
id 'com.github.jk1.dependency-license-report' version '1.16'
|
|
||||||
}
|
|
||||||
def licenseResDir = new File("$projectDir/build/dependency-license-res")
|
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
|
||||||
apply plugin: 'kotlin-android'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is a special on-demand Gradle object.
|
|
||||||
*
|
|
||||||
* Its value will not be determined until someone calls one of the gitHashProvider.getXXX() methods.
|
|
||||||
*
|
|
||||||
* If it does not encounter an explicit 'return' statement, getHashProvider.isPresent() will return false.
|
|
||||||
*/
|
|
||||||
Provider<String> gitHashProvider = project.provider {
|
|
||||||
Process gitCommand = null
|
|
||||||
try {
|
|
||||||
// This invokes 'git' immediately, but does not wait for it to finish
|
|
||||||
gitCommand = 'git rev-parse --short HEAD'.execute([], project.rootDir)
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gitCommand == null) {
|
|
||||||
logger.warn("Could not make use of the 'git' command-line tool. Output filenames will not be customized.")
|
|
||||||
} else if (gitCommand.waitFor() == 0) {
|
|
||||||
// This call to '::getText' (using the 'text' Groovy accessor syntax) collects the
|
|
||||||
// output stream
|
|
||||||
return '-' + gitCommand.text.trim()
|
|
||||||
} else {
|
|
||||||
logger.warn("Could not determine which commit is currently checked out -" +
|
|
||||||
" did you download this code without the .git directory?"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
android {
|
|
||||||
namespace 'org.kde.kdeconnect_tp'
|
|
||||||
compileSdk 33
|
|
||||||
defaultConfig {
|
|
||||||
minSdkVersion 21
|
|
||||||
targetSdkVersion 32
|
|
||||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
|
||||||
}
|
|
||||||
buildFeatures {
|
|
||||||
viewBinding true
|
|
||||||
compose true
|
|
||||||
}
|
|
||||||
|
|
||||||
composeOptions {
|
|
||||||
kotlinCompilerExtensionVersion = "1.4.8"
|
|
||||||
}
|
|
||||||
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
|
||||||
targetCompatibility JavaVersion.VERSION_1_8
|
|
||||||
|
|
||||||
// Flag to enable support for the new language APIs
|
|
||||||
coreLibraryDesugaringEnabled true
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = '1.8'
|
|
||||||
}
|
|
||||||
sourceSets {
|
|
||||||
main {
|
|
||||||
manifest.srcFile 'AndroidManifest.xml'
|
|
||||||
java.srcDirs = ['src']
|
|
||||||
resources.srcDirs = ['resources']
|
|
||||||
res.srcDirs = [licenseResDir, 'res']
|
|
||||||
assets.srcDirs = ['assets']
|
|
||||||
}
|
|
||||||
test {
|
|
||||||
java.srcDirs = ['tests']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
packagingOptions {
|
|
||||||
resources {
|
|
||||||
merges += ['META-INF/DEPENDENCIES', 'META-INF/LICENSE', 'META-INF/NOTICE']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
signingConfigs {
|
|
||||||
debug {
|
|
||||||
storeFile file("debug.keystore")
|
|
||||||
storePassword 'android'
|
|
||||||
keyAlias 'androiddebugkey'
|
|
||||||
keyPassword 'android'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
buildTypes {
|
|
||||||
debug {
|
|
||||||
minifyEnabled true
|
|
||||||
shrinkResources true
|
|
||||||
signingConfig signingConfigs.debug
|
|
||||||
}
|
|
||||||
// keep minifyEnabled false above for faster builds; set to 'true'
|
|
||||||
// when testing to make sure ProGuard/R8 is not deleting important stuff
|
|
||||||
release {
|
|
||||||
minifyEnabled true
|
|
||||||
shrinkResources true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
lint {
|
|
||||||
abortOnError false
|
|
||||||
checkReleaseBuilds false
|
|
||||||
}
|
|
||||||
testOptions {
|
|
||||||
unitTests.all {
|
|
||||||
jvmArgs += [
|
|
||||||
"--add-opens", "java.base/java.lang=ALL-UNNAMED",
|
|
||||||
"--add-opens", "java.base/java.security=ALL-UNNAMED",
|
|
||||||
"--add-opens", "java.base/sun.security.rsa=ALL-UNNAMED",
|
|
||||||
"--add-opens", "java.base/sun.security.x509=ALL-UNNAMED",
|
|
||||||
"--add-opens", "java.base/java.util=ALL-UNNAMED",
|
|
||||||
"--add-opens", "java.base/java.lang.reflect=ALL-UNNAMED"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
applicationVariants.configureEach { variant ->
|
|
||||||
logger.quiet("Found a variant called ${variant.name}")
|
|
||||||
if (variant.buildType.debuggable) {
|
|
||||||
variant.outputs.each { output ->
|
|
||||||
if (output.outputFile.name.endsWith(".apk")) {
|
|
||||||
// Default output filename is "${project.name}-${v.name}.apk". We want
|
|
||||||
// the Git commit short-hash to be added onto that default filename.
|
|
||||||
def newName = "${project.name}-${variant.name}${gitHashProvider.getOrElse("")}.apk"
|
|
||||||
logger.quiet(" Found an output file ${output.outputFile.name}, renaming to ${newName}")
|
|
||||||
output.outputFileName = newName
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ext {
|
|
||||||
coroutines_version = '1.7.1'
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'
|
|
||||||
|
|
||||||
implementation 'androidx.compose.material3:material3:1.1.1'
|
|
||||||
implementation 'androidx.compose.ui:ui-tooling-preview:1.4.3'
|
|
||||||
implementation 'androidx.activity:activity-compose:1.7.2'
|
|
||||||
implementation 'com.google.accompanist:accompanist-themeadapter-material3:0.31.0-alpha'
|
|
||||||
implementation 'androidx.constraintlayout:constraintlayout-compose:1.0.1'
|
|
||||||
|
|
||||||
implementation 'androidx.compose.ui:ui-tooling-preview:1.4.3'
|
|
||||||
debugImplementation 'androidx.compose.ui:ui-tooling:1.4.3'
|
|
||||||
|
|
||||||
implementation 'androidx.media:media:1.6.0'
|
|
||||||
implementation 'androidx.appcompat:appcompat:1.6.1'
|
|
||||||
implementation 'androidx.core:core-ktx:1.10.1'
|
|
||||||
implementation 'androidx.preference:preference-ktx:1.2.0'
|
|
||||||
implementation 'androidx.recyclerview:recyclerview:1.3.1'
|
|
||||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
|
||||||
implementation 'androidx.documentfile:documentfile:1.0.1'
|
|
||||||
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1"
|
|
||||||
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1'
|
|
||||||
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
|
|
||||||
implementation 'androidx.lifecycle:lifecycle-common-java8:2.6.1'
|
|
||||||
implementation 'androidx.gridlayout:gridlayout:1.0.0'
|
|
||||||
implementation 'com.google.android.material:material:1.9.0'
|
|
||||||
implementation 'com.jakewharton:disklrucache:2.0.2' //For caching album art bitmaps
|
|
||||||
|
|
||||||
implementation 'org.apache.sshd:sshd-core:0.14.0'
|
|
||||||
implementation 'org.apache.mina:mina-core:2.0.19' //For some reason, makes sshd-core:0.14.0 work without NIO, which isn't available until Android 8 (api 26)
|
|
||||||
|
|
||||||
//implementation('com.github.bright:slf4android:0.1.6') { transitive = true } // For org.apache.sshd debugging
|
|
||||||
implementation 'org.bouncycastle:bcpkix-jdk15on:1.70' //For SSL certificate generation
|
|
||||||
|
|
||||||
implementation 'org.atteo.classindex:classindex:3.13'
|
|
||||||
annotationProcessor 'org.atteo.classindex:classindex:3.13'
|
|
||||||
|
|
||||||
// The android-smsmms library is the only way I know to handle MMS in Android
|
|
||||||
// (Shouldn't a phone OS make phone things easy?)
|
|
||||||
// This library was originally authored as com.klinkerapps at https://github.com/klinker41/android-smsmms.
|
|
||||||
// However, that version is under-loved. I have therefore made "some fixes" and published it.
|
|
||||||
// Please see https://invent.kde.org/sredman/android-smsmms/-/tree/master
|
|
||||||
implementation 'org.kde.invent.sredman:android-smsmms:kdeconnect-1-21-0'
|
|
||||||
implementation 'com.klinkerapps:logger:1.0.3'
|
|
||||||
|
|
||||||
implementation 'commons-io:commons-io:2.11.0'
|
|
||||||
implementation 'org.apache.commons:commons-collections4:4.4'
|
|
||||||
implementation 'org.apache.commons:commons-lang3:3.12.0'
|
|
||||||
|
|
||||||
implementation 'com.univocity:univocity-parsers:2.9.1'
|
|
||||||
|
|
||||||
// Kotlin
|
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
|
||||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
|
|
||||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
|
|
||||||
|
|
||||||
// Testing
|
|
||||||
testImplementation 'junit:junit:4.13.2'
|
|
||||||
testImplementation 'org.powermock:powermock-core:2.0.0'
|
|
||||||
testImplementation 'org.powermock:powermock-module-junit4:2.0.0'
|
|
||||||
testImplementation 'org.powermock:powermock-api-mockito2:2.0.0'
|
|
||||||
testImplementation 'org.mockito:mockito-core:3.12.4' // powermock isn't compatible with mockito 4
|
|
||||||
testImplementation 'org.skyscreamer:jsonassert:1.5.1'
|
|
||||||
|
|
||||||
// For device controls
|
|
||||||
implementation 'org.reactivestreams:reactive-streams:1.0.4'
|
|
||||||
implementation 'io.reactivex.rxjava2:rxjava:2.2.21'
|
|
||||||
}
|
|
||||||
|
|
||||||
licenseReport {
|
|
||||||
configurations = ALL
|
|
||||||
renderers = [new TextReportRenderer()]
|
|
||||||
}
|
|
||||||
generateLicenseReport.doLast {
|
|
||||||
def target = new File(licenseResDir, "raw/license")
|
|
||||||
target.parentFile.mkdirs()
|
|
||||||
target.text =
|
|
||||||
files("COPYING", "$projectDir/build/reports/dependency-license/THIRD-PARTY-NOTICES.txt")
|
|
||||||
.collect { it.getText() }.join('\n')
|
|
||||||
}
|
|
||||||
preBuild.dependsOn(generateLicenseReport)
|
|
238
build.gradle.kts
Normal file
238
build.gradle.kts
Normal file
@ -0,0 +1,238 @@
|
|||||||
|
import com.github.jk1.license.LicenseReportExtension
|
||||||
|
import com.github.jk1.license.render.ReportRenderer
|
||||||
|
import com.github.jk1.license.render.TextReportRenderer
|
||||||
|
|
||||||
|
buildscript {
|
||||||
|
dependencies {
|
||||||
|
classpath(libs.android.gradlePlugin)
|
||||||
|
classpath(libs.kotlin.gradlePlugin)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("DSL_SCOPE_VIOLATION") // TODO: remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed
|
||||||
|
plugins {
|
||||||
|
alias(libs.plugins.android.application)
|
||||||
|
alias(libs.plugins.kotlin.android)
|
||||||
|
alias(libs.plugins.dependencyLicenseReport)
|
||||||
|
}
|
||||||
|
|
||||||
|
val licenseResDir = File("$projectDir/build/dependency-license-res")
|
||||||
|
|
||||||
|
fun String.runCommand(
|
||||||
|
workingDir: File = File("."),
|
||||||
|
timeoutAmount: Long = 60,
|
||||||
|
timeoutUnit: TimeUnit = TimeUnit.SECONDS
|
||||||
|
): String = ProcessBuilder(split("\\s(?=(?:[^'\"`]*(['\"`])[^'\"`]*\\1)*[^'\"`]*$)".toRegex()))
|
||||||
|
.directory(workingDir)
|
||||||
|
.redirectOutput(ProcessBuilder.Redirect.PIPE)
|
||||||
|
.redirectError(ProcessBuilder.Redirect.PIPE)
|
||||||
|
.start()
|
||||||
|
.apply { waitFor(timeoutAmount, timeoutUnit) }
|
||||||
|
.run {
|
||||||
|
val error = errorStream.bufferedReader().readText().trim()
|
||||||
|
if (error.isNotEmpty()) {
|
||||||
|
throw Exception(error)
|
||||||
|
}
|
||||||
|
inputStream.bufferedReader().readText().trim()
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "org.kde.kdeconnect_tp"
|
||||||
|
compileSdk = 33
|
||||||
|
defaultConfig {
|
||||||
|
minSdk = 21
|
||||||
|
targetSdk = 32
|
||||||
|
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
|
||||||
|
}
|
||||||
|
buildFeatures {
|
||||||
|
viewBinding = true
|
||||||
|
compose = true
|
||||||
|
}
|
||||||
|
|
||||||
|
composeOptions {
|
||||||
|
kotlinCompilerExtensionVersion = "1.5.1"
|
||||||
|
}
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
|
||||||
|
// Flag to enable support for the new language APIs
|
||||||
|
isCoreLibraryDesugaringEnabled = true
|
||||||
|
}
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = "1.8"
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
getByName("main") {
|
||||||
|
manifest.srcFile("AndroidManifest.xml")
|
||||||
|
java.setSrcDirs(listOf("src"))
|
||||||
|
resources.setSrcDirs(listOf("resources"))
|
||||||
|
res.setSrcDirs(listOf(licenseResDir, "res"))
|
||||||
|
assets.setSrcDirs(listOf("assets"))
|
||||||
|
}
|
||||||
|
getByName("test") {
|
||||||
|
java.setSrcDirs(listOf("tests"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
packaging {
|
||||||
|
resources {
|
||||||
|
merges += listOf("META-INF/DEPENDENCIES", "META-INF/LICENSE", "META-INF/NOTICE")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
signingConfigs {
|
||||||
|
getByName("debug") {
|
||||||
|
storeFile = file("debug.keystore")
|
||||||
|
storePassword = "android"
|
||||||
|
keyAlias = "androiddebugkey"
|
||||||
|
keyPassword = "android"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buildTypes {
|
||||||
|
getByName("debug") {
|
||||||
|
isMinifyEnabled = true
|
||||||
|
isShrinkResources = true
|
||||||
|
signingConfig = signingConfigs.getByName("debug")
|
||||||
|
}
|
||||||
|
// keep minifyEnabled false above for faster builds; set to 'true'
|
||||||
|
// when testing to make sure ProGuard/R8 is not deleting important stuff
|
||||||
|
getByName("release") {
|
||||||
|
isMinifyEnabled = true
|
||||||
|
isShrinkResources = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lint {
|
||||||
|
abortOnError = false
|
||||||
|
checkReleaseBuilds = false
|
||||||
|
}
|
||||||
|
|
||||||
|
testOptions {
|
||||||
|
unitTests.all {
|
||||||
|
it.jvmArgs = it.jvmArgs.orEmpty() + listOf(
|
||||||
|
"--add-opens=java.base/java.lang=ALL-UNNAMED",
|
||||||
|
"--add-opens=java.base/java.security=ALL-UNNAMED",
|
||||||
|
"--add-opens=java.base/sun.security.rsa=ALL-UNNAMED",
|
||||||
|
"--add-opens=java.base/sun.security.x509=ALL-UNNAMED",
|
||||||
|
"--add-opens=java.base/java.util=ALL-UNNAMED",
|
||||||
|
"--add-opens=java.base/java.lang.reflect=ALL-UNNAMED"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
applicationVariants.all {
|
||||||
|
val variant = this
|
||||||
|
logger.quiet("Found a variant called ${variant.name}")
|
||||||
|
|
||||||
|
if (variant.buildType.isDebuggable) {
|
||||||
|
variant.outputs.all {
|
||||||
|
val output = this as com.android.build.gradle.internal.api.BaseVariantOutputImpl
|
||||||
|
if (output.outputFile.name.endsWith(".apk")) {
|
||||||
|
// Default output filename is "${project.name}-${v.name}.apk". We want
|
||||||
|
// the Git commit short-hash to be added onto that default filename.
|
||||||
|
try {
|
||||||
|
val hash = "git rev-parse --short HEAD".runCommand(workingDir = rootDir)
|
||||||
|
val newName = "${project.name}-${variant.name}-${hash}.apk"
|
||||||
|
logger.quiet(" Found an output file ${output.outputFile.name}, renaming to ${newName}")
|
||||||
|
output.outputFileName = newName
|
||||||
|
} catch (ignored: Exception) {
|
||||||
|
logger.warn("Could not make use of the 'git' command-line tool. Output filenames will not be customized.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
coreLibraryDesugaring(libs.android.desugarJdkLibs)
|
||||||
|
|
||||||
|
implementation(libs.androidx.compose.material3)
|
||||||
|
implementation(libs.androidx.compose.ui.tooling.preview)
|
||||||
|
implementation(libs.androidx.activity.compose)
|
||||||
|
implementation(libs.accompanist.themeadapter.material3)
|
||||||
|
implementation(libs.androidx.constraintlayout.compose)
|
||||||
|
|
||||||
|
implementation(libs.androidx.compose.ui.tooling.preview)
|
||||||
|
debugImplementation(libs.androidx.compose.ui.tooling)
|
||||||
|
|
||||||
|
implementation(libs.androidx.media)
|
||||||
|
implementation(libs.androidx.appcompat)
|
||||||
|
implementation(libs.androidx.core.ktx)
|
||||||
|
implementation(libs.androidx.preference.ktx)
|
||||||
|
implementation(libs.androidx.recyclerview)
|
||||||
|
implementation(libs.androidx.swiperefreshlayout)
|
||||||
|
implementation(libs.androidx.documentfile)
|
||||||
|
implementation(libs.androidx.lifecycle.viewmodel.ktx)
|
||||||
|
implementation(libs.androidx.lifecycle.runtime.ktx)
|
||||||
|
implementation(libs.androidx.lifecycle.extensions)
|
||||||
|
implementation(libs.androidx.lifecycle.common.java8)
|
||||||
|
implementation(libs.androidx.gridlayout)
|
||||||
|
implementation(libs.material)
|
||||||
|
implementation(libs.disklrucache) //For caching album art bitmaps
|
||||||
|
|
||||||
|
implementation(libs.apache.sshd.core)
|
||||||
|
implementation(libs.apache.mina.core) //For some reason, makes sshd-core:0.14.0 work without NIO, which isn't available until Android 8 (api 26)
|
||||||
|
|
||||||
|
//implementation("com.github.bright:slf4android:0.1.6") { transitive = true } // For org.apache.sshd debugging
|
||||||
|
implementation(libs.bcpkix.jdk15on) //For SSL certificate generation
|
||||||
|
|
||||||
|
implementation(libs.classindex)
|
||||||
|
annotationProcessor(libs.classindex)
|
||||||
|
|
||||||
|
// The android-smsmms library is the only way I know to handle MMS in Android
|
||||||
|
// (Shouldn't a phone OS make phone things easy?)
|
||||||
|
// This library was originally authored as com.klinkerapps at https://github.com/klinker41/android-smsmms.
|
||||||
|
// However, that version is under-loved. I have therefore made "some fixes" and published it.
|
||||||
|
// Please see https://invent.kde.org/sredman/android-smsmms/-/tree/master
|
||||||
|
implementation(libs.android.smsmms)
|
||||||
|
implementation(libs.logger)
|
||||||
|
|
||||||
|
implementation(libs.commons.io)
|
||||||
|
implementation(libs.commons.collections4)
|
||||||
|
implementation(libs.commons.lang3)
|
||||||
|
|
||||||
|
implementation(libs.univocity.parsers)
|
||||||
|
|
||||||
|
// Kotlin
|
||||||
|
implementation(libs.kotlin.stdlib.jdk8)
|
||||||
|
implementation(libs.kotlinx.coroutines.core)
|
||||||
|
implementation(libs.kotlinx.coroutines.android)
|
||||||
|
|
||||||
|
// Testing
|
||||||
|
testImplementation(libs.junit)
|
||||||
|
testImplementation(libs.powermock.core)
|
||||||
|
testImplementation(libs.powermock.module.junit4)
|
||||||
|
testImplementation(libs.powermock.api.mockito2)
|
||||||
|
testImplementation(libs.mockito.core) // powermock isn't compatible with mockito 4
|
||||||
|
testImplementation(libs.jsonassert)
|
||||||
|
|
||||||
|
// For device controls
|
||||||
|
implementation(libs.reactive.streams)
|
||||||
|
implementation(libs.rxjava)
|
||||||
|
}
|
||||||
|
|
||||||
|
licenseReport {
|
||||||
|
configurations = LicenseReportExtension.ALL
|
||||||
|
renderers = arrayOf<ReportRenderer>(TextReportRenderer())
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("generateLicenseReport") {
|
||||||
|
doLast {
|
||||||
|
val target = File(licenseResDir, "raw/license")
|
||||||
|
target.parentFile.mkdirs()
|
||||||
|
target.writeText(
|
||||||
|
files(
|
||||||
|
layout.projectDirectory.file("COPYING"),
|
||||||
|
layout.buildDirectory.file("reports/dependency-license/THIRD-PARTY-NOTICES.txt")
|
||||||
|
).joinToString(separator = "\n") {
|
||||||
|
it.readText()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("preBuild") {
|
||||||
|
dependsOn("generateLicenseReport")
|
||||||
|
}
|
91
gradle/libs.versions.toml
Normal file
91
gradle/libs.versions.toml
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
[versions]
|
||||||
|
accompanistThemeadapterMaterial3 = "0.31.0-alpha"
|
||||||
|
activityCompose = "1.7.2"
|
||||||
|
androidDesugarJdkLibs = "2.0.3"
|
||||||
|
androidGradlePlugin = "8.1.0"
|
||||||
|
androidSmsmms = "kdeconnect-1-21-0"
|
||||||
|
appcompat = "1.6.1"
|
||||||
|
bcpkixJdk15on = "1.70"
|
||||||
|
classindex = "3.13"
|
||||||
|
commonsCollections4 = "4.4"
|
||||||
|
commonsIo = "2.11.0"
|
||||||
|
commonsLang3 = "3.12.0"
|
||||||
|
constraintlayoutCompose = "1.0.1"
|
||||||
|
coreKtx = "1.10.1"
|
||||||
|
disklrucache = "2.0.2"
|
||||||
|
documentfile = "1.0.1"
|
||||||
|
gradle = "8.1.0"
|
||||||
|
gridlayout = "1.0.0"
|
||||||
|
jsonassert = "1.5.1"
|
||||||
|
junit = "4.13.2"
|
||||||
|
dependencyLicenseReport = "1.16"
|
||||||
|
kotlin = "1.9.0"
|
||||||
|
kotlinxCoroutinesCore = "1.7.1"
|
||||||
|
lifecycleExtensions = "2.2.0"
|
||||||
|
lifecycleRuntimeKtx = "2.6.1"
|
||||||
|
logger = "1.0.3"
|
||||||
|
material = "1.9.0"
|
||||||
|
material3 = "1.1.1"
|
||||||
|
media = "1.6.0"
|
||||||
|
minaCore = "2.0.19"
|
||||||
|
mockitoCore = "3.12.4"
|
||||||
|
powermockModuleJunit4 = "2.0.0"
|
||||||
|
preferenceKtx = "1.2.0"
|
||||||
|
reactiveStreams = "1.0.4"
|
||||||
|
recyclerview = "1.3.1"
|
||||||
|
rxjava = "2.2.21"
|
||||||
|
sshdCore = "0.14.0"
|
||||||
|
swiperefreshlayout = "1.1.0"
|
||||||
|
uiToolingPreview = "1.4.3"
|
||||||
|
univocityParsers = "2.9.1"
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
accompanist-themeadapter-material3 = { module = "com.google.accompanist:accompanist-themeadapter-material3", version.ref = "accompanistThemeadapterMaterial3" }
|
||||||
|
android-desugarJdkLibs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "androidDesugarJdkLibs" }
|
||||||
|
android-smsmms = { module = "org.kde.invent.sredman:android-smsmms", version.ref = "androidSmsmms" }
|
||||||
|
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activityCompose" }
|
||||||
|
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
|
||||||
|
androidx-compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "material3" }
|
||||||
|
androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "uiToolingPreview" }
|
||||||
|
androidx-constraintlayout-compose = { module = "androidx.constraintlayout:constraintlayout-compose", version.ref = "constraintlayoutCompose" }
|
||||||
|
androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "uiToolingPreview" }
|
||||||
|
androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" }
|
||||||
|
androidx-documentfile = { module = "androidx.documentfile:documentfile", version.ref = "documentfile" }
|
||||||
|
androidx-gridlayout = { module = "androidx.gridlayout:gridlayout", version.ref = "gridlayout" }
|
||||||
|
androidx-lifecycle-common-java8 = { module = "androidx.lifecycle:lifecycle-common-java8", version.ref = "lifecycleRuntimeKtx" }
|
||||||
|
androidx-lifecycle-extensions = { module = "androidx.lifecycle:lifecycle-extensions", version.ref = "lifecycleExtensions" }
|
||||||
|
androidx-lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
|
||||||
|
androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycleRuntimeKtx" }
|
||||||
|
androidx-media = { module = "androidx.media:media", version.ref = "media" }
|
||||||
|
androidx-preference-ktx = { module = "androidx.preference:preference-ktx", version.ref = "preferenceKtx" }
|
||||||
|
androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" }
|
||||||
|
androidx-swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "swiperefreshlayout" }
|
||||||
|
bcpkix-jdk15on = { module = "org.bouncycastle:bcpkix-jdk15on", version.ref = "bcpkixJdk15on" }
|
||||||
|
classindex = { module = "org.atteo.classindex:classindex", version.ref = "classindex" }
|
||||||
|
commons-collections4 = { module = "org.apache.commons:commons-collections4", version.ref = "commonsCollections4" }
|
||||||
|
commons-io = { module = "commons-io:commons-io", version.ref = "commonsIo" }
|
||||||
|
commons-lang3 = { module = "org.apache.commons:commons-lang3", version.ref = "commonsLang3" }
|
||||||
|
disklrucache = { module = "com.jakewharton:disklrucache", version.ref = "disklrucache" }
|
||||||
|
android-gradlePlugin = { module = "com.android.tools.build:gradle", version.ref = "gradle" }
|
||||||
|
jsonassert = { module = "org.skyscreamer:jsonassert", version.ref = "jsonassert" }
|
||||||
|
junit = { module = "junit:junit", version.ref = "junit" }
|
||||||
|
kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
|
||||||
|
kotlin-stdlib-jdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" }
|
||||||
|
kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinxCoroutinesCore" }
|
||||||
|
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinxCoroutinesCore" }
|
||||||
|
logger = { module = "com.klinkerapps:logger", version.ref = "logger" }
|
||||||
|
material = { module = "com.google.android.material:material", version.ref = "material" }
|
||||||
|
apache-mina-core = { module = "org.apache.mina:mina-core", version.ref = "minaCore" }
|
||||||
|
apache-sshd-core = { module = "org.apache.sshd:sshd-core", version.ref = "sshdCore" }
|
||||||
|
mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockitoCore" }
|
||||||
|
powermock-api-mockito2 = { module = "org.powermock:powermock-api-mockito2", version.ref = "powermockModuleJunit4" }
|
||||||
|
powermock-core = { module = "org.powermock:powermock-core", version.ref = "powermockModuleJunit4" }
|
||||||
|
powermock-module-junit4 = { module = "org.powermock:powermock-module-junit4", version.ref = "powermockModuleJunit4" }
|
||||||
|
reactive-streams = { module = "org.reactivestreams:reactive-streams", version.ref = "reactiveStreams" }
|
||||||
|
rxjava = { module = "io.reactivex.rxjava2:rxjava", version.ref = "rxjava" }
|
||||||
|
univocity-parsers = { module = "com.univocity:univocity-parsers", version.ref = "univocityParsers" }
|
||||||
|
|
||||||
|
[plugins]
|
||||||
|
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
|
||||||
|
kotlin-android = { id ="org.jetbrains.kotlin.android", version.ref = "kotlin" }
|
||||||
|
dependencyLicenseReport = { id = "com.github.jk1.dependency-license-report", version.ref = "dependencyLicenseReport" }
|
2
proguard-rules.pro
vendored
2
proguard-rules.pro
vendored
@ -2,7 +2,7 @@
|
|||||||
# By default, the flags in this file are appended to flags specified
|
# By default, the flags in this file are appended to flags specified
|
||||||
# in {SDKHOME}/tools/proguard/proguard-android.txt
|
# in {SDKHOME}/tools/proguard/proguard-android.txt
|
||||||
# You can edit the include path and order by changing the proguardFiles
|
# You can edit the include path and order by changing the proguardFiles
|
||||||
# directive in build.gradle.
|
# directive in build.gradle.kts.
|
||||||
#
|
#
|
||||||
# For more details, see
|
# For more details, see
|
||||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||||
|
@ -5,7 +5,7 @@ pluginManagement {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
/* Needed for org.apache.sshd debugging
|
/* Needed for org.apache.sshd debugging
|
||||||
maven {
|
maven {
|
||||||
url "https://jitpack.io"
|
url = uri("https://jitpack.io")
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
@ -16,7 +16,7 @@ dependencyResolutionManagement {
|
|||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven {
|
maven {
|
||||||
url = "https://jitpack.io"
|
url = uri("https://jitpack.io")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user