diff --git a/.idea/runConfigurations/iosApp.xml b/.idea/runConfigurations/iosApp.xml deleted file mode 100644 index 296ddc1..0000000 --- a/.idea/runConfigurations/iosApp.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/androidApp/.gitignore b/androidApp/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/androidApp/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts new file mode 100644 index 0000000..2275972 --- /dev/null +++ b/androidApp/build.gradle.kts @@ -0,0 +1,45 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.compose) + alias(libs.plugins.compose.compiler) +} + +android { + namespace = "com.sebastianneubauer.jsontreesample" + compileSdk = 36 + + defaultConfig { + applicationId = "com.sebastianneubauer.jsontreesample" + minSdk = 23 + targetSdk = 36 + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = true + isShrinkResources = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + // for testing only, don't do this in your app + signingConfig = signingConfigs.getByName("debug") + } + + getByName("debug") { + applicationIdSuffix = ".debug" + signingConfig = signingConfigs.getByName("debug") + } + } + buildFeatures { + compose = true + } +} + +dependencies { + implementation(project(":sample")) + implementation(libs.androidx.activity.compose) + implementation(libs.jb.compose.components.resources) +} \ No newline at end of file diff --git a/androidApp/proguard-rules.pro b/androidApp/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/androidApp/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/sample/src/androidMain/AndroidManifest.xml b/androidApp/src/main/AndroidManifest.xml similarity index 100% rename from sample/src/androidMain/AndroidManifest.xml rename to androidApp/src/main/AndroidManifest.xml diff --git a/sample/src/androidMain/kotlin/com/sebastianneubauer/jsontreesample/MainActivity.kt b/androidApp/src/main/kotlin/com/sebastianneubauer/jsontreesample/MainActivity.kt similarity index 99% rename from sample/src/androidMain/kotlin/com/sebastianneubauer/jsontreesample/MainActivity.kt rename to androidApp/src/main/kotlin/com/sebastianneubauer/jsontreesample/MainActivity.kt index f85c22a..21e5182 100644 --- a/sample/src/androidMain/kotlin/com/sebastianneubauer/jsontreesample/MainActivity.kt +++ b/androidApp/src/main/kotlin/com/sebastianneubauer/jsontreesample/MainActivity.kt @@ -11,4 +11,4 @@ class MainActivity : ComponentActivity() { enableEdgeToEdge() setContent { App() } } -} \ No newline at end of file +} diff --git a/sample/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml b/androidApp/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from sample/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml rename to androidApp/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/sample/src/androidMain/res/drawable/ic_launcher_background.xml b/androidApp/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from sample/src/androidMain/res/drawable/ic_launcher_background.xml rename to androidApp/src/main/res/drawable/ic_launcher_background.xml diff --git a/sample/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from sample/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml rename to androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/sample/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from sample/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/sample/src/androidMain/res/mipmap-hdpi/ic_launcher.png b/androidApp/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from sample/src/androidMain/res/mipmap-hdpi/ic_launcher.png rename to androidApp/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/sample/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png b/androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from sample/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png rename to androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.png diff --git a/sample/src/androidMain/res/mipmap-mdpi/ic_launcher.png b/androidApp/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from sample/src/androidMain/res/mipmap-mdpi/ic_launcher.png rename to androidApp/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/sample/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png b/androidApp/src/main/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from sample/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png rename to androidApp/src/main/res/mipmap-mdpi/ic_launcher_round.png diff --git a/sample/src/androidMain/res/mipmap-xhdpi/ic_launcher.png b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from sample/src/androidMain/res/mipmap-xhdpi/ic_launcher.png rename to androidApp/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/sample/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from sample/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png rename to androidApp/src/main/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/sample/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from sample/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png rename to androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/sample/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from sample/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png rename to androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/sample/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from sample/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png rename to androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/sample/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from sample/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png rename to androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/sample/src/androidMain/res/values/strings.xml b/androidApp/src/main/res/values/strings.xml similarity index 100% rename from sample/src/androidMain/res/values/strings.xml rename to androidApp/src/main/res/values/strings.xml diff --git a/build.gradle.kts b/build.gradle.kts index 8449155..e5ce7f0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,13 +8,13 @@ buildscript { plugins { alias(libs.plugins.android.application).apply(false) - alias(libs.plugins.android.library).apply(false) alias(libs.plugins.kotlinMultiplatform).apply(false) alias(libs.plugins.compose).apply(false) alias(libs.plugins.compose.compiler).apply(false) alias(libs.plugins.publish).apply(false) alias(libs.plugins.api.validator) alias(libs.plugins.detekt) + alias(libs.plugins.androidKotlinMultiplatformLibrary) apply false } apiValidation { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 61c2a16..6ecd186 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,7 +6,7 @@ java-toolchain = "17" compose = "1.10.3" compose-material3 = "1.9.0" -agp = "8.13.2" +agp = "9.1.1" kotlin = "2.3.20" publish = "0.36.0" api-validator = "0.18.1" @@ -40,9 +40,9 @@ kotlindiff = { module = "io.github.petertrr:kotlin-multiplatform-diff", version. detekt-formatting = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" } [plugins] -android-library = { id = "com.android.library", version.ref = "agp" } android-application = { id = "com.android.application", version.ref = "agp" } kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } +androidKotlinMultiplatformLibrary = { id = "com.android.kotlin.multiplatform.library", version.ref = "agp" } compose = { id = "org.jetbrains.compose", version.ref = "compose" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } publish = { id = "com.vanniktech.maven.publish", version.ref = "publish" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 23449a2..37f78a6 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/jsontree/build.gradle.kts b/jsontree/build.gradle.kts index 4bf9c81..65fa97a 100644 --- a/jsontree/build.gradle.kts +++ b/jsontree/build.gradle.kts @@ -4,19 +4,26 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetTree plugins { alias(libs.plugins.kotlinMultiplatform) - alias(libs.plugins.android.library) + alias(libs.plugins.androidKotlinMultiplatformLibrary) alias(libs.plugins.compose) alias(libs.plugins.compose.compiler) alias(libs.plugins.publish) } kotlin { - jvm() - androidTarget { - publishLibraryVariants("release") - @OptIn(ExperimentalKotlinGradlePluginApi::class) - instrumentedTestVariant.sourceSetTree.set(KotlinSourceSetTree.test) + android { + namespace = "com.sebastianneubauer.jsontree" + compileSdk = libs.versions.android.compileSdk.get().toInt() + minSdk = libs.versions.android.minSdk.get().toInt() + aarMetadata { + minCompileSdk = libs.versions.android.minSdk.get().toInt() + } + + androidResources.enable = true } + + jvm() + iosX64() iosArm64() iosSimulatorArm64() @@ -74,31 +81,4 @@ kotlin { implementation(compose.desktop.currentOs) } } -} - -dependencies { - implementation(libs.kotlinx.coroutines.test) - androidTestImplementation(libs.androidx.compose.ui.test.android) - debugImplementation(libs.androidx.compose.ui.test.manifest) -} - -android { - namespace = "com.sebastianneubauer.jsontree" - compileSdk = libs.versions.android.compileSdk.get().toInt() - buildFeatures { - buildConfig = false - compose = true - } - defaultConfig { - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - minSdk = libs.versions.android.minSdk.get().toInt() - aarMetadata { - minCompileSdk = libs.versions.android.minSdk.get().toInt() - } - } - - // fixes lint error in release builds for compose 1.9.3 - lint { - disable.add("NullSafeMutableLiveData") - } } \ No newline at end of file diff --git a/sample/build.gradle.kts b/sample/build.gradle.kts index bd1ed97..df4735c 100644 --- a/sample/build.gradle.kts +++ b/sample/build.gradle.kts @@ -2,8 +2,8 @@ import org.jetbrains.compose.desktop.application.dsl.TargetFormat import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl plugins { - alias(libs.plugins.android.application) alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.androidKotlinMultiplatformLibrary) alias(libs.plugins.compose) alias(libs.plugins.compose.compiler) } @@ -12,7 +12,13 @@ group = "com.sebastianneubauer.jsontreesample" version = "1.0" kotlin { - androidTarget() + android { + namespace = "com.sebastianneubauer.jsontreesample.shared" + compileSdk = 36 + minSdk = 23 + + androidResources.enable = true + } jvm() @@ -61,11 +67,6 @@ kotlin { implementation(kotlin("test")) } - androidMain.dependencies { - implementation(libs.jb.compose.ui.tooling) - implementation(libs.androidx.activity.compose) - } - jvmMain.dependencies { implementation(compose.desktop.currentOs) } @@ -79,43 +80,9 @@ kotlin { jvmToolchain(17) } -android { - namespace = "com.sebastianneubauer.jsontreesample" - compileSdk = 36 - - defaultConfig { - minSdk = 23 - targetSdk = 36 - } - sourceSets["main"].apply { - manifest.srcFile("src/androidMain/AndroidManifest.xml") - res.srcDirs("src/androidMain/res") - } - buildTypes { - getByName("release") { - isMinifyEnabled = true - proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") - //for testing only, don't do this in your app - signingConfig = signingConfigs.getByName("debug") - } - getByName("debug") { - applicationIdSuffix = ".debug" - signingConfig = signingConfigs.getByName("debug") - } - } - buildFeatures { - compose = true - } - - // fixes lint error in release builds for compose 1.9.3 - lint { - disable.add("NullSafeMutableLiveData") - } -} - compose.desktop { application { - mainClass = "MainKt" + mainClass = "com.sebastianneubauer.jsontreesample.MainKt" buildTypes.release { proguard { configurationFiles.from("compose-desktop.pro") diff --git a/sample/src/commonMain/kotlin/App.kt b/sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/App.kt similarity index 99% rename from sample/src/commonMain/kotlin/App.kt rename to sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/App.kt index 4100786..34f2c03 100644 --- a/sample/src/commonMain/kotlin/App.kt +++ b/sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/App.kt @@ -62,7 +62,7 @@ import kotlinx.coroutines.launch import org.jetbrains.compose.resources.painterResource @Composable -internal fun App() = JsonTreeTheme(darkTheme = false) { +fun App() = JsonTreeTheme(darkTheme = false) { MainScreen() } @@ -444,6 +444,7 @@ private fun JsonDiff( @Preview @Composable -private fun PreviewMainScreen() = JsonTreeTheme { - MainScreen() -} \ No newline at end of file +private fun PreviewMainScreen() = + JsonTreeTheme { + MainScreen() + } \ No newline at end of file diff --git a/sample/src/commonMain/kotlin/JsonStrings.kt b/sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/JsonStrings.kt similarity index 100% rename from sample/src/commonMain/kotlin/JsonStrings.kt rename to sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/JsonStrings.kt diff --git a/sample/src/commonMain/kotlin/JsonTreeDiffStrings.kt b/sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/JsonTreeDiffStrings.kt similarity index 100% rename from sample/src/commonMain/kotlin/JsonTreeDiffStrings.kt rename to sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/JsonTreeDiffStrings.kt diff --git a/sample/src/commonMain/kotlin/ui/theme/Color.kt b/sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/ui/theme/Color.kt similarity index 100% rename from sample/src/commonMain/kotlin/ui/theme/Color.kt rename to sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/ui/theme/Color.kt diff --git a/sample/src/commonMain/kotlin/ui/theme/Shape.kt b/sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/ui/theme/Shape.kt similarity index 100% rename from sample/src/commonMain/kotlin/ui/theme/Shape.kt rename to sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/ui/theme/Shape.kt diff --git a/sample/src/commonMain/kotlin/ui/theme/Theme.kt b/sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/ui/theme/Theme.kt similarity index 100% rename from sample/src/commonMain/kotlin/ui/theme/Theme.kt rename to sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/ui/theme/Theme.kt diff --git a/sample/src/commonMain/kotlin/ui/theme/Type.kt b/sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/ui/theme/Type.kt similarity index 100% rename from sample/src/commonMain/kotlin/ui/theme/Type.kt rename to sample/src/commonMain/kotlin/com/sebastianneubauer/jsontreesample/ui/theme/Type.kt diff --git a/sample/src/iosMain/kotlin/main.kt b/sample/src/iosMain/kotlin/com/sebastianneubauer/jsontreesample/main.kt similarity index 83% rename from sample/src/iosMain/kotlin/main.kt rename to sample/src/iosMain/kotlin/com/sebastianneubauer/jsontreesample/main.kt index e4d28f7..628d527 100644 --- a/sample/src/iosMain/kotlin/main.kt +++ b/sample/src/iosMain/kotlin/com/sebastianneubauer/jsontreesample/main.kt @@ -1,3 +1,5 @@ +package com.sebastianneubauer.jsontreesample + import androidx.compose.ui.window.ComposeUIViewController import com.sebastianneubauer.jsontreesample.App import platform.UIKit.UIViewController diff --git a/sample/src/jsMain/kotlin/main.js.kt b/sample/src/jsMain/kotlin/com/sebastianneubauer/jsontreesample/main.js.kt similarity index 87% rename from sample/src/jsMain/kotlin/main.js.kt rename to sample/src/jsMain/kotlin/com/sebastianneubauer/jsontreesample/main.js.kt index 48b2306..5e70eae 100644 --- a/sample/src/jsMain/kotlin/main.js.kt +++ b/sample/src/jsMain/kotlin/com/sebastianneubauer/jsontreesample/main.js.kt @@ -1,6 +1,7 @@ +package com.sebastianneubauer.jsontreesample + import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.window.ComposeViewport -import com.sebastianneubauer.jsontreesample.App import kotlinx.browser.document import org.jetbrains.skiko.wasm.onWasmReady diff --git a/sample/src/jvmMain/kotlin/main.kt b/sample/src/jvmMain/kotlin/com/sebastianneubauer/jsontreesample/main.kt similarity index 90% rename from sample/src/jvmMain/kotlin/main.kt rename to sample/src/jvmMain/kotlin/com/sebastianneubauer/jsontreesample/main.kt index 8ebcf1a..6753ea4 100644 --- a/sample/src/jvmMain/kotlin/main.kt +++ b/sample/src/jvmMain/kotlin/com/sebastianneubauer/jsontreesample/main.kt @@ -1,8 +1,9 @@ +package com.sebastianneubauer.jsontreesample + import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Window import androidx.compose.ui.window.application import androidx.compose.ui.window.rememberWindowState -import com.sebastianneubauer.jsontreesample.App import java.awt.Dimension fun main() = application { diff --git a/sample/src/wasmJsMain/kotlin/main.wasm.kt b/sample/src/wasmJsMain/kotlin/com/sebastianneubauer/jsontreesample/main.wasm.kt similarity index 91% rename from sample/src/wasmJsMain/kotlin/main.wasm.kt rename to sample/src/wasmJsMain/kotlin/com/sebastianneubauer/jsontreesample/main.wasm.kt index 7a337c1..98ce44d 100644 --- a/sample/src/wasmJsMain/kotlin/main.wasm.kt +++ b/sample/src/wasmJsMain/kotlin/com/sebastianneubauer/jsontreesample/main.wasm.kt @@ -1,6 +1,7 @@ +package com.sebastianneubauer.jsontreesample + import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.window.ComposeViewport -import com.sebastianneubauer.jsontreesample.App import kotlinx.browser.document import org.jetbrains.compose.resources.ExperimentalResourceApi import org.jetbrains.compose.resources.configureWebResources diff --git a/settings.gradle.kts b/settings.gradle.kts index e4cfb01..8212c51 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -14,3 +14,4 @@ dependencyResolutionManagement { rootProject.name = "JsonTree" include(":jsontree") include(":sample") +include(":androidApp")