6 Commits

Author SHA1 Message Date
Christian Basler
9930af5fbc Add code quality plugins
version-catalog-update and spotless
2026-01-29 12:11:40 +01:00
0cf9d36d8c Enable minify
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Failing after 3m9s
2026-01-25 22:30:30 +01:00
Christian Basler
6ce3dfad4f Update dependencies
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Failing after 3m5s
2026-01-21 21:24:45 +01:00
a545f58657 Merge branch 'feature/keyboard-control'
All checks were successful
SonarQube Scan / SonarQube Trigger (push) Successful in 7m19s
2026-01-21 12:25:53 +01:00
93103e4e49 Add Keyboard Control 2026-01-21 12:25:28 +01:00
0d7d5d8fbc Add missing dependency to fix test
All checks were successful
SonarQube Scan / SonarQube Trigger (push) Successful in 8m1s
2026-01-08 23:02:38 +01:00
11 changed files with 99 additions and 90 deletions

View File

@@ -1,18 +0,0 @@
{
"spec": {
"template_id": "kmt",
"targets": {
"android": {
"ui": [
"compose"
]
},
"desktop": {
"ui": [
"compose"
]
}
}
},
"timestamp": "2024-04-29T06:04:57.807358293Z"
}

View File

@@ -23,6 +23,8 @@ jobs:
distribution: 'temurin'
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Install missing packages
run: apt-get update; apt-get install -y libglu1-mesa-dev
- name: Cache SonarQube packages
uses: actions/cache@v4
with:

View File

@@ -3,7 +3,6 @@ plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.compose.compiler)
alias(libs.plugins.compose)
alias(libs.plugins.kotlin.android)
}
android {
@@ -18,23 +17,6 @@ android {
versionName = libs.versions.app.version.name.get()
}
dependencies {
implementation(compose.components.resources)
implementation(compose.runtime)
// implementation(compose.foundation)
implementation(compose.material3)
implementation(compose.ui)
implementation(compose.components.resources)
implementation(libs.androidx.activity.compose)
// implementation(libs.compose.ui.text.googlefonts)
implementation(projects.commonUI)
// implementation(compose.components.uiToolingPreview)
implementation(libs.androidx.tooling.preview)
testImplementation(libs.kotlin.test)
testImplementation(libs.atrium)
}
compileOptions {
sourceCompatibility = JavaVersion.toVersion(libs.versions.jdk.get())
targetCompatibility = JavaVersion.toVersion(libs.versions.jdk.get())
@@ -42,7 +24,11 @@ android {
buildTypes {
release {
isMinifyEnabled = false
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
debug {
@@ -64,6 +50,18 @@ android {
}
dependencies {
implementation(projects.commonUI)
implementation(libs.compose.runtime)
implementation(libs.compose.ui)
implementation(libs.compose.material3)
implementation(libs.compose.components.resources)
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.core.ktx)
debugImplementation(libs.androidx.tooling)
implementation(libs.compose.ui.tooling.preview)
debugImplementation(libs.compose.ui.tooling)
testImplementation(libs.kotlin.test)
testImplementation(libs.atrium)
}

17
android/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,17 @@
-dontwarn kotlinx.coroutines.debug.*
-dontwarn kotlinx.datetime.**
-keep class org.jetbrains.skia.** { *; }
-keep class org.jetbrains.skiko.** { *; }
-ignorewarnings
# Windows folders
-keep class com.sun.jna.* { *; }
-keepclassmembers class * extends com.sun.jna.* { public *; }
-assumenosideeffects public class androidx.compose.runtime.ComposerKt {
void sourceInformation(androidx.compose.runtime.Composer,java.lang.String);
void sourceInformationMarkerStart(androidx.compose.runtime.Composer,int,java.lang.String);
void sourceInformationMarkerEnd(androidx.compose.runtime.Composer);
}

View File

@@ -1,12 +0,0 @@
package ch.dissem.yaep.android
import ch.tutteli.atrium.api.fluent.en_GB.toEqual
import ch.tutteli.atrium.api.verbs.expect
import kotlin.test.Test
class DummyTest {
@Test
fun `ensure some test is run`() {
expect(true).toEqual(true)
}
}

View File

@@ -1,5 +1,5 @@
import com.android.build.gradle.internal.lint.AndroidLintTask
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask
import nl.littlerobots.vcu.plugin.resolver.VersionSelectors
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
import org.sonarqube.gradle.SonarTask
@@ -8,13 +8,14 @@ plugins {
alias(libs.plugins.versions)
alias(libs.plugins.sonarqube)
alias(libs.plugins.kotlin.kover)
alias(libs.plugins.spotless)
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.compose) apply false
alias(libs.plugins.compose.compiler) apply false
alias(libs.plugins.kotlin.multiplatform) apply false
alias(libs.plugins.kotlin.jvm) apply false
alias(libs.plugins.kotlin.android) apply false
}
sonar {
@@ -45,17 +46,26 @@ tasks.withType<KotlinJvmCompile>().configureEach {
}
}
tasks.withType<DependencyUpdatesTask> {
rejectVersionIf {
isNonStable(candidate.version) && !isNonStable(currentVersion)
spotless {
kotlin {
target("**/*.kt")
targetExclude("**/build/**", "**/.gradle/**")
// ktlint("1.5.0")
diktat("1.0.1")
}
kotlinGradle {
target("**/*.gradle.kts")
targetExclude("**/build/**", "**/.gradle/**")
ktlint("1.5.0")
}
}
fun isNonStable(version: String): Boolean {
return version.contains("dev", ignoreCase = true)
|| version.contains("alpha", ignoreCase = true)
|| version.contains("beta", ignoreCase = true)
|| version.contains("RC", ignoreCase = true)
versionCatalogUpdate {
sortByKey = false
keep {
keepUnusedVersions = true
}
versionSelector(VersionSelectors.STABLE)
}
subprojects {

View File

@@ -22,13 +22,13 @@ kotlin {
commonMain.dependencies {
api(projects.domain)
implementation(compose.components.resources)
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.ui)
implementation(compose.components.uiToolingPreview)
implementation(libs.compose.components.resources)
implementation(libs.compose.runtime)
implementation(libs.compose.foundation)
implementation(libs.compose.ui)
implementation(libs.compose.ui.tooling.preview)
implementation(compose.material3)
implementation(libs.compose.material3)
implementation(libs.bundles.logging)
}
@@ -37,8 +37,7 @@ kotlin {
implementation(libs.kotlin.test)
implementation(libs.atrium)
@OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class)
implementation(compose.uiTest)
implementation(libs.compose.ui.test)
}
jvmTest.dependencies {
@@ -46,7 +45,7 @@ kotlin {
}
androidMain.dependencies {
implementation(libs.androidx.compose.foundation)
implementation(libs.compose.foundation)
}
}
}

View File

@@ -12,14 +12,14 @@ kotlin {
dependencies {
implementation(compose.desktop.currentOs)
implementation(compose.material3)
implementation(compose.components.resources)
implementation(libs.compose.material3)
implementation(libs.compose.components.resources)
implementation(projects.commonUI)
implementation(compose.components.uiToolingPreview)
implementation(libs.compose.ui.tooling.preview)
testImplementation(libs.kotlin.test)
testImplementation(libs.atrium)
testImplementation(compose.desktop.uiTestJUnit4)
testImplementation(libs.compose.ui.test.desktop)
testImplementation(compose.desktop.currentOs)
}
}

View File

@@ -8,4 +8,13 @@ android.nonTransitiveRClass=true
android.useAndroidX=true
#MPP
kotlin.mpp.androidSourceSetLayoutVersion=2
kotlin.mpp.androidSourceSetLayoutVersion=2
#android.defaults.buildfeatures.resvalues=true
#android.enableAppCompileTimeRClass=false
#android.usesSdkInManifest.disallowed=false
#android.uniquePackageNames=false
#android.dependency.useConstraints=true
#android.r8.strictFullModeForKeepRules=false
#android.r8.optimizedResourceShrinking=false
#android.builtInKotlin=false
#android.newDsl=false

View File

@@ -1,26 +1,28 @@
[versions]
app-version-code = "1"
app-version-name = "1.0.0"
agp = "8.13.2"
agp = "9.0.0"
jdk = "21"
android-compileSdk = "36"
android-minSdk = "26"
android-targetSdk = "36"
androidx-activityCompose = "1.12.2"
androidx-compose = "1.10.0"
compose-plugin = "1.9.3"
kotlin = "2.3.0"
coreKtx = "1.17.0"
atrium = "1.2.0"
[libraries]
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activityCompose" }
androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" }
androidx-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "androidx-compose" }
androidx-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "androidx-compose" }
androidx-compose-foundation = { module = "androidx.compose.foundation:foundation", version.ref = "androidx-compose" }
androidx-activity-compose = { module = "androidx.activity:activity-compose", version = "1.12.2" }
androidx-core-ktx = { module = "androidx.core:core-ktx", version = "1.17.0" }
atrium = { module = "ch.tutteli.atrium:atrium-fluent", version.ref = "atrium" }
compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version = "1.10.0" }
compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version = "1.10.0" }
compose-material3 = { module = "org.jetbrains.compose.material3:material3", version = "1.10.0-alpha05" }
compose-ui = { module = "org.jetbrains.compose.ui:ui", version = "1.10.0" }
compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version = "1.10.0" }
compose-ui-tooling = { module = "org.jetbrains.compose.ui:ui-tooling", version = "1.10.0" }
compose-ui-tooling-preview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version = "1.10.0" }
compose-ui-test = { module = "org.jetbrains.compose.ui:ui-test", version = "1.10.0" }
compose-ui-test-desktop = { module = "org.jetbrains.compose.ui:ui-test-desktop", version = "1.10.0" }
atrium = { module = "ch.tutteli.atrium:atrium-fluent", version = "1.2.0" }
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
@@ -31,13 +33,15 @@ logging-slf4j = { module = "org.slf4j:slf4j-simple", version = "2.0.17" }
logging = ["logging-jvm", "logging-slf4j"]
[plugins]
versions = { id = "com.github.ben-manes.versions", version = "0.53.0" }
android-application = { id = "com.android.application", version.ref = "agp" }
android-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "agp" }
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
compose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
compose = { id = "org.jetbrains.compose", version = "1.10.0" }
versions = { id = "nl.littlerobots.version-catalog-update", version = "1.0.1" }
# Code Analysis Tools and Linters
sonarqube = { id = "org.sonarqube", version = "7.2.2.6593" }
spotless = { id = "com.diffplug.spotless", version = "8.2.0" }
kotlin-kover = { id = "org.jetbrains.kotlinx.kover", version = "0.9.4" }

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME