diff --git a/build.gradle.kts b/build.gradle.kts index 1f236b67..2914ad8c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -22,13 +22,6 @@ plugins { alias(libs.plugins.versions) } -buildscript { - dependencies { - // Waiting on https://github.com/Guardsquare/proguard/issues/225 - classpath(libs.proguard) - } -} - allprojects { group = "ca.gosyer" version = "1.3.0" diff --git a/desktop/build.gradle.kts b/desktop/build.gradle.kts index 27f2761e..e0c2ce6e 100644 --- a/desktop/build.gradle.kts +++ b/desktop/build.gradle.kts @@ -5,7 +5,6 @@ import org.gradle.jvm.tasks.Jar import org.jetbrains.compose.compose import org.jetbrains.compose.desktop.application.dsl.TargetFormat import org.jetbrains.kotlin.gradle.tasks.KotlinCompile -import proguard.gradle.ProGuardTask @Suppress("DSL_SCOPE_VIOLATION") plugins { @@ -122,23 +121,6 @@ tasks { } registerTachideskTasks(project) - - register("optimizeUberJar") { - group = "compose desktop" - val packageUberJarForCurrentOS = getByName("packageUberJarForCurrentOS") - dependsOn(packageUberJarForCurrentOS) - val uberJar = packageUberJarForCurrentOS.outputs.files.first() - injars(uberJar) - outjars(File(uberJar.parentFile, "min/" + uberJar.name)) - val javaHome = System.getProperty("java.home") - if (JavaVersion.current().isJava9Compatible) { - libraryjars("$javaHome/jmods") - } else { - libraryjars("$javaHome/lib/rt.jar") - libraryjars("$javaHome/lib/jce.jar") - } - configuration("proguard-rules.pro") - } } kotlin { @@ -193,6 +175,13 @@ compose.desktop { if (isPreview) { packageVersion = "${version.toString().substringBeforeLast('.')}.$previewCode" } + + args(project.projectDir.absolutePath) + buildTypes.release.proguard { + version.set(libs.versions.proguard.get()) + configurationFiles.from("proguard-rules.pro") + } + windows { dirChooser = true upgradeUuid = if (!isPreview) { diff --git a/desktop/proguard-rules.pro b/desktop/proguard-rules.pro index d0cb4ee8..d49cd3ff 100644 --- a/desktop/proguard-rules.pro +++ b/desktop/proguard-rules.pro @@ -1,23 +1,23 @@ -dontobfuscate -keepattributes Signature,LineNumberTable --keep,allowoptimization class ca.gosyer.** { public protected *; } --keep class ca.gosyer.ui.main.MainKt { +-keep,includedescriptorclasses,allowoptimization class ca.gosyer.jui.** { public protected *; } +-keep class ca.gosyer.jui.desktop.MainKt { public static void main(java.lang.String[]); } -keep class 'module-info' # Kotlin # todo optimize more --keep class kotlin.reflect.** { *; } +-keep,includedescriptorclasses class kotlin.reflect.** { *; } # Log4J -dontwarn org.apache.logging.log4j.** --keep class org.apache.logging.log4j.** { *; } +-keep,includedescriptorclasses class org.apache.logging.log4j.** { *; } # SLF4J -dontwarn org.apache.logging.slf4j.** --keep class org.apache.logging.slf4j.** { *; } +-keep,includedescriptorclasses class org.apache.logging.slf4j.** { *; } # OKHTTP -dontwarn org.codehaus.mojo.animal_sniffer.* @@ -25,20 +25,20 @@ # DarkLaf # todo optimize more --keep class com.github.weisj.darklaf.** { *; } +-keep,includedescriptorclasses class com.github.weisj.darklaf.** { *; } -dontwarn com.github.weisj.darklaf.** +-keep class com.github.weisj.jsvg.** { *; } +-dontwarn com.github.weisj.jsvg.** # Ktor +-keep,includedescriptorclasses class * extends io.ktor.client.HttpClientEngineContainer -dontwarn io.ktor.network.sockets.DatagramSendChannel # Coroutines --keep class kotlinx.coroutines.swing.** { *; } --dontwarn kotlinx.coroutines.** +-keep,includedescriptorclasses class kotlinx.coroutines.swing.** { *; } # Other -dontwarn org.pbjar.jxlayer.plaf.ext.TransformUI --dontwarn com.kitfox.svg.app.ant.SVGToImageAntTask --dontwarn nl.adaptivity.xmlutil.StAXWriter -keep class com.sun.jna.** { *; } # Kotlin Serialization @@ -53,14 +53,13 @@ kotlinx.serialization.KSerializer serializer(...); } --keep,includedescriptorclasses class ca.gosyer.**$$serializer { *; } --keepclassmembers class ca.gosyer.** { +-keep,includedescriptorclasses class ca.gosyer.jui.**$$serializer { *; } +-keepclassmembers class ca.gosyer.jui.** { *** Companion; } --keepclasseswithmembers class ca.gosyer.** { +-keepclasseswithmembers class ca.gosyer.jui.** { kotlinx.serialization.KSerializer serializer(...); } -# Keep Skia --keep class org.jetbrains.skia.** { *; } --keep class org.jetbrains.skiko.** { *; } \ No newline at end of file +# Skiko +-dontwarn org.jetbrains.skiko.** \ No newline at end of file