diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index c7aa9bc..950b326 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -12,9 +12,13 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Set up JDK 1.8 + - name: Set up JDK 11 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11 - name: Build and test - run: ./gradlew build publishToMavenLocal + run: ./gradlew build publishToMavenLocal syncMultiPlatformLibraryDebugFrameworkIosX64 + - name: Install pods with kotlin + run: cd sample/ios-app && pod install + - name: build ios sample + run: cd sample/ios-app && xcodebuild -scheme TestProj -workspace TestProj.xcworkspace -configuration Debug -sdk iphonesimulator -arch x86_64 build CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO | xcpretty diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index dbe4035..219f43b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -21,10 +21,10 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Set up JDK 1.8 + - name: Set up JDK 11 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11 - name: Publish library run: ./gradlew publish release: @@ -40,6 +40,6 @@ jobs: with: commitish: ${{ github.ref }} tag_name: release/${{ github.event.inputs.version }} - release_name: Release ${{ github.event.inputs.version }} + release_name: ${{ github.event.inputs.version }} body: "Will be filled later" draft: true \ No newline at end of file diff --git a/README.md b/README.md index 2ff2c87..5f18828 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](http://www.apache.org/licenses/LICENSE-2.0) [![Download](https://img.shields.io/maven-central/v/dev.icerock.moko/javascript) ](https://repo1.maven.org/maven2/dev/icerock/moko/javascript) ![kotlin-version](https://img.shields.io/badge/kotlin-1.4.32-orange) +[![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](http://www.apache.org/licenses/LICENSE-2.0) [![Download](https://img.shields.io/maven-central/v/dev.icerock.moko/javascript) ](https://repo1.maven.org/maven2/dev/icerock/moko/javascript) ![kotlin-version](https://kotlin-version.aws.icerock.dev/kotlin-version?group=dev.icerock.moko&name=javascript) # Mobile Kotlin javascript This is a Kotlin MultiPlatform library that allows you to run JavaScript code from common Kotlin code @@ -22,10 +22,6 @@ This is a Kotlin MultiPlatform library that allows you to run JavaScript code fr - Android API 16+ - iOS version 9.0+ -## Versions -- kotlin 1.4.32 - - 0.1.0 - ## Installation root build.gradle ```groovy @@ -39,17 +35,22 @@ allprojects { project build.gradle ```groovy dependencies { - commonMainApi("dev.icerock.moko:javascript:0.1.0") + commonMainApi("dev.icerock.moko:javascript:0.2.0") } ``` ## Usage ```kotlin val javaScriptEngine = JavaScriptEngine() -val result: JsType = javaScriptEngine.evaluate( - context = emptyMap(), - script = """ "Hello" + "World" """.trimIndent() -) +val result: JsType = try { + javaScriptEngine.evaluate( + context = emptyMap(), + script = """ "Hello" + "World" """.trimIndent() + ) +} catch (ex: JavaScriptEvaluationException) { + // Handle script evaluation error + JsType.Null +} if (result is JsType.Str) { println(result.value) } @@ -83,4 +84,4 @@ More detailed guide for contributers see in [contributing guide](CONTRIBUTING.md distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file + limitations under the License. diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..32a15eb --- /dev/null +++ b/build.gradle @@ -0,0 +1,20 @@ +/* + * Copyright 2019 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +buildscript { + repositories { + mavenCentral() + google() + } + dependencies { + classpath(":javascript-build-logic") + } +} + +allprojects { + plugins.withId("org.gradle.maven-publish") { + group = "dev.icerock.moko" + version = libs.versions.mokoJavascriptVersion.get() + } +} \ No newline at end of file diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts deleted file mode 100644 index d5de8bd..0000000 --- a/buildSrc/build.gradle.kts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. - */ - -plugins { - `kotlin-dsl` -} - -repositories { - google() - mavenCentral() - jcenter() -} - -dependencies { - implementation("dev.icerock:mobile-multiplatform:0.10.0") - implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.32") - implementation("com.android.tools.build:gradle:4.1.2") -} diff --git a/buildSrc/src/main/kotlin/Deps.kt b/buildSrc/src/main/kotlin/Deps.kt deleted file mode 100644 index d0d8bbf..0000000 --- a/buildSrc/src/main/kotlin/Deps.kt +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. - */ - -object Deps { - private const val kotlinTestVersion = "1.4.32" - - private const val androidAppCompatVersion = "1.1.0" - private const val materialDesignVersion = "1.0.0" - private const val androidLifecycleVersion = "2.1.0" - private const val androidCoreTestingVersion = "1.3.0" - private const val testJUnitExtVersion = "1.1.2" - private const val quickjsVersion = "0.9.0" - - private const val coroutinesVersion = "1.4.2" - private const val kotlinxSerializationVersion = "1.1.0" - private const val mokoTestVersion = "0.3.0" - - const val mokoJavascriptVersion = "0.1.0" - - object Android { - const val compileSdk = 30 - const val targetSdk = 30 - const val minSdk = 18 - } - - object Libs { - object Android { - const val appCompat = "androidx.appcompat:appcompat:$androidAppCompatVersion" - const val material = "com.google.android.material:material:$materialDesignVersion" - const val lifecycle = "androidx.lifecycle:lifecycle-extensions:$androidLifecycleVersion" - - const val kotlinTestJUnit = "org.jetbrains.kotlin:kotlin-test-junit:$kotlinTestVersion" - const val testRunner = "androidx.test:runner:$androidCoreTestingVersion" - const val testRules = "androidx.test:rules:$androidCoreTestingVersion" - const val testJUnitExt = "androidx.test.ext:junit:$testJUnitExtVersion" - const val testJUnitExtKtx = "androidx.test.ext:junit-ktx:$testJUnitExtVersion" - - const val quickjs = "app.cash.quickjs:quickjs-android:$quickjsVersion" - } - - object MultiPlatform { - const val coroutines = - "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion" - const val kotlinSerialization = - "org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinxSerializationVersion" - - const val kotlinTest = - "org.jetbrains.kotlin:kotlin-test-common:$kotlinTestVersion" - const val kotlinTestAnnotations = - "org.jetbrains.kotlin:kotlin-test-annotations-common:$kotlinTestVersion" - const val mokoTest = "dev.icerock.moko:test-core:$mokoTestVersion" - const val mokoTestRobolectric = "dev.icerock.moko:test-roboelectric:$mokoTestVersion" - - const val mokoJavascript = "dev.icerock.moko:javascript:$mokoJavascriptVersion" - } - } -} diff --git a/buildSrc/src/main/kotlin/android-base-convention.gradle.kts b/buildSrc/src/main/kotlin/android-base-convention.gradle.kts deleted file mode 100644 index 3569213..0000000 --- a/buildSrc/src/main/kotlin/android-base-convention.gradle.kts +++ /dev/null @@ -1,10 +0,0 @@ -import com.android.build.gradle.BaseExtension - -configure { - compileSdkVersion(Deps.Android.compileSdk) - - defaultConfig { - minSdkVersion(Deps.Android.minSdk) - targetSdkVersion(Deps.Android.targetSdk) - } -} diff --git a/buildSrc/src/main/kotlin/android-library-convention.gradle.kts b/buildSrc/src/main/kotlin/android-library-convention.gradle.kts deleted file mode 100644 index b977402..0000000 --- a/buildSrc/src/main/kotlin/android-library-convention.gradle.kts +++ /dev/null @@ -1,4 +0,0 @@ -plugins { - id("com.android.library") - id("android-base-convention") -} diff --git a/buildSrc/src/main/kotlin/mpp-library-convention.gradle.kts b/buildSrc/src/main/kotlin/mpp-library-convention.gradle.kts deleted file mode 100644 index ed4baff..0000000 --- a/buildSrc/src/main/kotlin/mpp-library-convention.gradle.kts +++ /dev/null @@ -1,5 +0,0 @@ -plugins { - id("android-library-convention") - id("org.jetbrains.kotlin.multiplatform") - id("dev.icerock.mobile.multiplatform") -} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..9cf12a6 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,29 @@ +[versions] +kotlinTestVersion = "1.5.20" +androidAppCompatVersion = "1.2.0" +materialDesignVersion = "1.0.0" +androidLifecycleVersion = "2.1.0" +androidCoreTestingVersion = "1.3.0" +testJUnitExtVersion = "1.1.2" +quickjsVersion = "0.9.0" +coroutinesVersion = "1.5.0-native-mt" +kotlinxSerializationVersion = "1.1.0" +mokoTestVersion = "0.4.0" +mokoJavascriptVersion = "0.2.0" + + +[libraries] +appCompat = { module = "androidx.appcompat:appcompat", version.ref = "androidAppCompatVersion" } +material = { module = "com.google.android.material:material", version.ref = "materialDesignVersion" } +lifecycle = { module = "androidx.lifecycle:lifecycle-extensions", version.ref = "androidLifecycleVersion" } +kotlinTestJUnit = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kotlinTestVersion" } +testRunner = { module = "androidx.test:runner", version.ref = "androidCoreTestingVersion" } +testRules = { module = "androidx.test:rules", version.ref = "androidCoreTestingVersion" } +testJUnitExt = { module = "androidx.test.ext:junit", version.ref = "testJUnitExtVersion" } +testJUnitExtKtx = { module = "androidx.test.ext:junit-ktx", version.ref = "testJUnitExtVersion" } +quickjs = { module = "app.cash.quickjs:quickjs-android", version.ref = "quickjsVersion" } +coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutinesVersion" } +kotlinSerialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationVersion" } +kotlinTest = { module = "org.jetbrains.kotlin:kotlin-test-common", version.ref = "kotlinTestVersion" } +kotlinTestAnnotations = { module = "org.jetbrains.kotlin:kotlin-test-annotations-common", version.ref = "kotlinTestVersion" } +mokoTest = { module = "dev.icerock.moko:test-core", version.ref = "mokoTestVersion" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 549d844..0f80bbf 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/javascript-build-logic/build.gradle.kts b/javascript-build-logic/build.gradle.kts new file mode 100644 index 0000000..84cbae3 --- /dev/null +++ b/javascript-build-logic/build.gradle.kts @@ -0,0 +1,17 @@ +plugins { + `kotlin-dsl` +} + +repositories { + mavenCentral() + google() + + gradlePluginPortal() +} + +dependencies { + api("dev.icerock:mobile-multiplatform:0.12.0") + api("org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20") + api("com.android.tools.build:gradle:4.2.1") + api("io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.15.0") +} diff --git a/buildSrc/src/main/kotlin/android-app-convention.gradle.kts b/javascript-build-logic/src/main/kotlin/android-app-convention.gradle.kts similarity index 67% rename from buildSrc/src/main/kotlin/android-app-convention.gradle.kts rename to javascript-build-logic/src/main/kotlin/android-app-convention.gradle.kts index 6a73926..2859874 100644 --- a/buildSrc/src/main/kotlin/android-app-convention.gradle.kts +++ b/javascript-build-logic/src/main/kotlin/android-app-convention.gradle.kts @@ -1,6 +1,11 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + plugins { id("com.android.application") id("android-base-convention") + id("kotlin-android") } android { @@ -8,11 +13,9 @@ android { javaMaxHeapSize = "2g" } - defaultConfig.vectorDrawables.useSupportLibrary = true - buildTypes { getByName("release") { - isMinifyEnabled = false + isMinifyEnabled = true proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") } getByName("debug") { @@ -23,5 +26,7 @@ android { packagingOptions { exclude("META-INF/*.kotlin_module") + exclude("META-INF/AL2.0") + exclude("META-INF/LGPL2.1") } } diff --git a/javascript-build-logic/src/main/kotlin/android-base-convention.gradle.kts b/javascript-build-logic/src/main/kotlin/android-base-convention.gradle.kts new file mode 100644 index 0000000..5f97e66 --- /dev/null +++ b/javascript-build-logic/src/main/kotlin/android-base-convention.gradle.kts @@ -0,0 +1,14 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +import com.android.build.gradle.BaseExtension + +configure { + compileSdkVersion(30) + + defaultConfig { + minSdkVersion(18) + targetSdkVersion(30) + } +} diff --git a/javascript-build-logic/src/main/kotlin/android-library-convention.gradle.kts b/javascript-build-logic/src/main/kotlin/android-library-convention.gradle.kts new file mode 100644 index 0000000..c435401 --- /dev/null +++ b/javascript-build-logic/src/main/kotlin/android-library-convention.gradle.kts @@ -0,0 +1,13 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +plugins { + id("com.android.library") + id("kotlin-android") + id("android-base-convention") +} + +android { + sourceSets.all { java.srcDir("src/$name/kotlin") } +} diff --git a/javascript-build-logic/src/main/kotlin/android-publication-convention.gradle.kts b/javascript-build-logic/src/main/kotlin/android-publication-convention.gradle.kts new file mode 100644 index 0000000..b4dae9e --- /dev/null +++ b/javascript-build-logic/src/main/kotlin/android-publication-convention.gradle.kts @@ -0,0 +1,15 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +plugins { + id("publication-convention") +} + +afterEvaluate { + publishing.publications { + create("release", MavenPublication::class.java) { + from(components.getByName("release")) + } + } +} diff --git a/javascript-build-logic/src/main/kotlin/detekt-convention.gradle.kts b/javascript-build-logic/src/main/kotlin/detekt-convention.gradle.kts new file mode 100644 index 0000000..68343a8 --- /dev/null +++ b/javascript-build-logic/src/main/kotlin/detekt-convention.gradle.kts @@ -0,0 +1,15 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +plugins { + id("io.gitlab.arturbosch.detekt") +} + +detekt { + input.setFrom("src/commonMain/kotlin", "src/androidMain/kotlin", "src/iosMain/kotlin", "src/main/kotlin") +} + +dependencies { + "detektPlugins"("io.gitlab.arturbosch.detekt:detekt-formatting:1.15.0") +} diff --git a/javascript-build-logic/src/main/kotlin/javadoc-stub-convention.gradle.kts b/javascript-build-logic/src/main/kotlin/javadoc-stub-convention.gradle.kts new file mode 100644 index 0000000..a1a2691 --- /dev/null +++ b/javascript-build-logic/src/main/kotlin/javadoc-stub-convention.gradle.kts @@ -0,0 +1,16 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +plugins { + id("org.gradle.maven-publish") +} + +val javadocJar by tasks.registering(Jar::class) { + archiveClassifier.set("javadoc") +} + +publishing.publications.withType { + // Stub javadoc.jar artifact + artifact(javadocJar.get()) +} diff --git a/javascript-build-logic/src/main/kotlin/multiplatform-library-convention.gradle.kts b/javascript-build-logic/src/main/kotlin/multiplatform-library-convention.gradle.kts new file mode 100644 index 0000000..349f8ed --- /dev/null +++ b/javascript-build-logic/src/main/kotlin/multiplatform-library-convention.gradle.kts @@ -0,0 +1,31 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +plugins { + id("com.android.library") + id("org.jetbrains.kotlin.multiplatform") + id("android-base-convention") + id("dev.icerock.mobile.multiplatform.android-manifest") +} + +kotlin { + ios() + android { + publishLibraryVariants("release", "debug") + } + sourceSets { + val mobileDeviceTest by creating + + val commonTest by getting + val iosTest by getting + val androidAndroidTest by getting + + + mobileDeviceTest.dependsOn(commonTest) + iosTest.dependsOn(mobileDeviceTest) + androidAndroidTest.dependsOn(mobileDeviceTest) + + } +} + diff --git a/buildSrc/src/main/kotlin/publication-convention.gradle.kts b/javascript-build-logic/src/main/kotlin/publication-convention.gradle.kts similarity index 73% rename from buildSrc/src/main/kotlin/publication-convention.gradle.kts rename to javascript-build-logic/src/main/kotlin/publication-convention.gradle.kts index 51f0985..9307b13 100644 --- a/buildSrc/src/main/kotlin/publication-convention.gradle.kts +++ b/javascript-build-logic/src/main/kotlin/publication-convention.gradle.kts @@ -1,17 +1,15 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + import java.util.Base64 plugins { + id("javadoc-stub-convention") id("org.gradle.maven-publish") id("signing") } -group = "dev.icerock.moko" -version = Deps.mokoJavascriptVersion - -val javadocJar by tasks.registering(Jar::class) { - archiveClassifier.set("javadoc") -} - publishing { repositories.maven("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") { name = "OSSRH" @@ -23,9 +21,6 @@ publishing { } publications.withType { - // Stub javadoc.jar artifact - artifact(javadocJar.get()) - // Provide artifacts information requited by Maven Central pom { name.set("MOKO JavaScript") @@ -64,16 +59,17 @@ publishing { } } } +} - signing { - val signingKeyId: String? = System.getenv("SIGNING_KEY_ID") - val signingPassword: String? = System.getenv("SIGNING_PASSWORD") - val signingKey: String? = System.getenv("SIGNING_KEY")?.let { base64Key -> - String(Base64.getDecoder().decode(base64Key)) - } - if (signingKeyId != null) { - useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword) - sign(publishing.publications) - } + +signing { + val signingKeyId: String? = System.getenv("SIGNING_KEY_ID") + val signingPassword: String? = System.getenv("SIGNING_PASSWORD") + val signingKey: String? = System.getenv("SIGNING_KEY")?.let { base64Key -> + String(Base64.getDecoder().decode(base64Key)) + } + if (signingKeyId != null) { + useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword) + sign(publishing.publications) } } diff --git a/javascript/build.gradle.kts b/javascript/build.gradle.kts index eb26148..f8f90d1 100644 --- a/javascript/build.gradle.kts +++ b/javascript/build.gradle.kts @@ -3,57 +3,20 @@ */ plugins { - id("mpp-library-convention") + id("multiplatform-library-convention") + id("dev.icerock.mobile.multiplatform.android-manifest") id("publication-convention") } -android { - testOptions.unitTests.isIncludeAndroidResources = true - defaultConfig { - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - packagingOptions { - exclude("META-INF/*.kotlin_module") - exclude("META-INF/*.kotlin_module") - exclude("META-INF/AL2.0") - exclude("META-INF/LGPL2.1") - } - - sourceSets { - getByName("androidTest").java.srcDirs( - file("src/androidAndroidTest/kotlin"), - file("src/mobileDeviceTest/kotlin") - ) - } -} - -kotlin { - sourceSets { - val mobileDeviceTest by creating - - val commonTest by getting - val iosTest by getting - val androidAndroidTest by getting - - mobileDeviceTest.dependsOn(commonTest) - iosTest.dependsOn(mobileDeviceTest) - androidAndroidTest.dependsOn(mobileDeviceTest) - } -} - dependencies { - androidMainImplementation(Deps.Libs.Android.quickjs) - - commonMainImplementation(Deps.Libs.MultiPlatform.kotlinSerialization) - - commonTestImplementation(Deps.Libs.MultiPlatform.kotlinTest) - commonTestImplementation(Deps.Libs.MultiPlatform.kotlinTestAnnotations) - commonTestImplementation(Deps.Libs.MultiPlatform.mokoTest) - - androidTestImplementation(Deps.Libs.Android.kotlinTestJUnit) - androidTestImplementation(Deps.Libs.Android.testRunner) - androidTestImplementation(Deps.Libs.Android.testRules) - androidTestImplementation(Deps.Libs.Android.testJUnitExt) - androidTestImplementation(Deps.Libs.Android.testJUnitExtKtx) + androidMainImplementation(libs.quickjs) + commonMainImplementation(libs.kotlinSerialization) + commonTestImplementation(libs.kotlinTest) + commonTestImplementation(libs.kotlinTestAnnotations) + commonTestImplementation(libs.mokoTest) + androidTestImplementation(libs.kotlinTestJUnit) + androidTestImplementation(libs.testRunner) + androidTestImplementation(libs.testRules) + androidTestImplementation(libs.testJUnitExt) + androidTestImplementation(libs.testJUnitExtKtx) } diff --git a/sample/android-app/build.gradle.kts b/sample/android-app/build.gradle.kts index 7373125..24459bf 100644 --- a/sample/android-app/build.gradle.kts +++ b/sample/android-app/build.gradle.kts @@ -4,7 +4,7 @@ plugins { id("android-app-convention") - id("org.jetbrains.kotlin.android") + id("kotlin-android") } android { @@ -17,8 +17,8 @@ android { } dependencies { - implementation(Deps.Libs.Android.appCompat) - implementation(Deps.Libs.Android.material) + implementation(libs.appCompat) + implementation(libs.material) - implementation(project(":sample:mpp-library")) + implementation(projects.sample.mppLibrary) } diff --git a/sample/build.gradle.kts b/sample/build.gradle.kts deleted file mode 100644 index e510f6c..0000000 --- a/sample/build.gradle.kts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. - */ - -subprojects { - configurations.all { - resolutionStrategy.dependencySubstitution { - substitute(module(Deps.Libs.MultiPlatform.mokoJavascript)) - .with(project(":javascript")) - } - } -} diff --git a/sample/mpp-library/build.gradle.kts b/sample/mpp-library/build.gradle.kts index 04ed8b3..ac7d979 100644 --- a/sample/mpp-library/build.gradle.kts +++ b/sample/mpp-library/build.gradle.kts @@ -3,17 +3,26 @@ */ plugins { - id("mpp-library-convention") + id("com.android.library") + id("android-base-convention") + id("detekt-convention") + id("org.jetbrains.kotlin.multiplatform") + id("dev.icerock.mobile.multiplatform.android-manifest") id("dev.icerock.mobile.multiplatform.ios-framework") } +kotlin { + android() + ios() +} + dependencies { - commonMainApi(Deps.Libs.MultiPlatform.coroutines) - commonMainApi(Deps.Libs.MultiPlatform.kotlinSerialization) + commonMainApi(libs.coroutines) + commonMainApi(libs.kotlinSerialization) - commonMainApi(Deps.Libs.MultiPlatform.mokoJavascript) + commonMainApi(projects.javascript) } framework { - export(project(":javascript")) + export(projects.javascript) } diff --git a/settings.gradle.kts b/settings.gradle.kts index 1afd947..c6ccb10 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -2,15 +2,8 @@ * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ -pluginManagement { - repositories { - gradlePluginPortal() - mavenCentral() - google() - - jcenter() - } -} +enableFeaturePreview("VERSION_CATALOGS") +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") dependencyResolutionManagement { repositories { @@ -21,6 +14,8 @@ dependencyResolutionManagement { } } +includeBuild("javascript-build-logic") + include(":javascript") include(":sample:android-app") include(":sample:mpp-library")