Skip to content

Commit

Permalink
Merge pull request #347 from icerockdev/#339-kotlin-1.7.0
Browse files Browse the repository at this point in the history
#339 kotlin 1.7.0
  • Loading branch information
Alex009 committed May 27, 2022
2 parents 187cd86 + 435ab58 commit 8ecb5c4
Show file tree
Hide file tree
Showing 17 changed files with 94 additions and 53 deletions.
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ buildscript {
}
dependencies {
classpath "dev.icerock.moko:resources-generator:0.20.0"
classpath "dev.icerock.moko:resources-generator:0.20.1"
}
}
Expand All @@ -63,10 +63,10 @@ project build.gradle
apply plugin: "dev.icerock.mobile.multiplatform-resources"
dependencies {
commonMainApi("dev.icerock.moko:resources:0.20.0")
androidMainApi("dev.icerock.moko:resources-compose:0.20.0")
jvmMainApi("dev.icerock.moko:resources-compose:0.20.0")
commonTestImplementation("dev.icerock.moko:resources-test:0.20.0")
commonMainApi("dev.icerock.moko:resources:0.20.1")
androidMainApi("dev.icerock.moko:resources-compose:0.20.1")
jvmMainApi("dev.icerock.moko:resources-compose:0.20.1")
commonTestImplementation("dev.icerock.moko:resources-test:0.20.1")
}
multiplatformResources {
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ android.useAndroidX=true

xcodeproj=./sample/ios-app

mobile.multiplatform.iosTargetWarning=false
mobile.multiplatform.iosTargetWarning=false
10 changes: 5 additions & 5 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[versions]
kotlinVersion = "1.6.10"
androidGradleVersion = "7.1.0"
androidGradleVersion = "7.2.0"

# kotlinx
kotlinxSerializationVersion = "1.2.1"
Expand Down Expand Up @@ -29,14 +29,14 @@ espressoCoreVersion = "3.3.0"
testRunnerVersion = "1.3.0"
testRulesVersion = "1.3.0"
testExtJunitVersion = "1.1.2"
testCoreVersion = "1.3.0"
robolectricVersion = "4.7.3"
testCoreVersion = "1.4.0"
robolectricVersion = "4.8.1"

# moko
mokoGraphicsVersion = "0.9.0"
mokoParcelizeVersion = "0.8.0"
mokoTestVersion = "0.5.0"
mokoResourcesVersion = "0.20.0"
mokoResourcesVersion = "0.20.1"
mokoMultiplatformPluginVersion = "0.14.1"

[libraries]
Expand Down Expand Up @@ -88,7 +88,7 @@ kotlinGradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", ver
# This version is used to fix compatibility issues between
# Kotlin Gradle Plugin 1.6.10 -> 1.6.20
# we can't update all project to 1.6.20 now because Jetpack Compose not updated yet
kotlinGradlePluginNext = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version = "1.6.21" }
kotlinGradlePluginNext = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version = "1.7.0-RC" }
androidGradlePlugin = { module = "com.android.tools.build:gradle", version.ref = "androidGradleVersion" }
kotlinCompilerEmbeddable = { module = "org.jetbrains.kotlin:kotlin-compiler-embeddable", version.ref = "kotlinVersion" }
detektGradlePlugin = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version.ref = "detektVersion" }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ android {
}

packagingOptions {
exclude("META-INF/*.kotlin_module")
resources.excludes.add("META-INF/*.kotlin_module")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
import com.android.build.gradle.BaseExtension

configure<BaseExtension> {
compileSdkVersion(31)
compileSdkVersion(32)

defaultConfig {
minSdk = 16
targetSdk = 30
targetSdk = 32
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ plugins {

kotlin {
android {
publishLibraryVariants("release", "debug")
publishAllLibraryVariants()
publishLibraryVariantsGroupedByFlavor = true
}
}
2 changes: 1 addition & 1 deletion resources-generator/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ dependencies {
implementation(gradleKotlinDsl())
compileOnly(libs.kotlinGradlePluginNext)
compileOnly(libs.androidGradlePlugin)
compileOnly(libs.kotlinCompilerEmbeddable)
implementation(libs.kotlinPoet)
implementation(libs.kotlinxSerialization)
implementation(libs.apacheCommonsText)
implementation(libs.commonsCodec)
implementation(libs.kotlinCompilerEmbeddable)
}

java {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,10 @@ class MultiplatformResourcesPlugin : Plugin<Project> {
val androidMainSourceSet = androidExtension.sourceSets
.getByName(SourceSet.MAIN_SOURCE_SET_NAME)

sourceInfo.getAndroidRClassPackage = {
sourceInfo.getAndroidRClassPackage = lambda@{
val namespace: String? = androidExtension.namespace
if (namespace != null) return@lambda namespace

val manifestFile = androidMainSourceSet.manifest.srcFile
getAndroidPackage(manifestFile)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@

package dev.icerock.gradle.generator.android

import com.android.build.gradle.tasks.ExtractDeepLinksTask
import com.android.build.gradle.tasks.GenerateResValues
import com.android.build.gradle.tasks.ManifestProcessorTask
import com.android.build.gradle.tasks.MergeSourceSetFolders
import com.squareup.kotlinpoet.KModifier
import dev.icerock.gradle.generator.MRGenerator
Expand All @@ -30,17 +28,11 @@ class AndroidMRGenerator(
override fun getMRClassModifiers(): Array<KModifier> = arrayOf(KModifier.ACTUAL)

override fun apply(generationTask: Task, project: Project) {
project.tasks.withType<ManifestProcessorTask>().configureEach {
generationTask.dependsOn(it)
}
project.tasks.withType<GenerateResValues>().configureEach {
it.dependsOn(generationTask)
}
project.tasks.withType<MergeSourceSetFolders>().configureEach {
it.dependsOn(generationTask)
}
project.tasks.withType<ExtractDeepLinksTask>().configureEach {
generationTask.dependsOn(it)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import dev.icerock.gradle.tasks.CopyExecutableResourcesToApp
import dev.icerock.gradle.tasks.CopyFrameworkResourcesToAppEntryPointTask
import dev.icerock.gradle.tasks.CopyFrameworkResourcesToAppTask
import dev.icerock.gradle.utils.calculateResourcesHash
import dev.icerock.gradle.utils.klibs
import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.Task
Expand Down Expand Up @@ -222,8 +223,7 @@ $linkTask produces static framework, Xcode should have Build Phase with copyFram
project: Project,
outputDir: File
) {
linkTask.libraries
.plus(linkTask.intermediateLibrary.get())
linkTask.klibs
.filter { it.extension == "klib" }
.filter { it.exists() }
.forEach { inputFile ->
Expand Down Expand Up @@ -253,18 +253,11 @@ $linkTask produces static framework, Xcode should have Build Phase with copyFram

if (linkTask.project.tasks.any { it.name == copyTaskName }) return@all

project.files(linkTask.intermediateLibrary)

val copyResources = linkTask.project.tasks
project.tasks
.create(copyTaskName, CopyExecutableResourcesToApp::class) {
val libraries = linkTask.libraries
.plus(project.files(linkTask.intermediateLibrary))
.filter { library -> library.extension == "klib" }
.filter(File::exists)

it.libraries = libraries
it.linkTask = linkTask
it.dependsOn(linkTask)
}
copyResources.dependsOn(linkTask)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import com.squareup.kotlinpoet.STRING
import com.squareup.kotlinpoet.TypeSpec
import dev.icerock.gradle.generator.MRGenerator
import dev.icerock.gradle.utils.calculateResourcesHash
import dev.icerock.gradle.utils.klibs
import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.Task
Expand Down Expand Up @@ -129,7 +130,7 @@ class JsMRGenerator(
override fun execute(task: Kotlin2JsCompile) {
val project: Project = task.project

task.classpath.forEach { dependency ->
task.klibs.forEach { dependency ->
copyResourcesFromLibraries(
inputFile = dependency,
project = project,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,22 @@

package dev.icerock.gradle.tasks

import dev.icerock.gradle.utils.klibs
import org.gradle.api.DefaultTask
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.TaskAction
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeLink
import org.jetbrains.kotlin.library.impl.KotlinLibraryLayoutImpl
import java.io.File
import java.io.FileFilter

open class CopyExecutableResourcesToApp : DefaultTask() {
@get:Internal
lateinit var libraries: FileCollection
lateinit var linkTask: KotlinNativeLink

init {
group = "moko-resources"
}

@TaskAction
fun copyResources() {
Expand All @@ -25,9 +30,9 @@ open class CopyExecutableResourcesToApp : DefaultTask() {

val outputDir = File(buildProductsDir, contentsFolderPath)

libraries
.filter { it.extension == "klib" }
.filter { it.exists() }
linkTask.klibs
.filter { library -> library.extension == "klib" }
.filter(File::exists)
.forEach { inputFile ->
val klibKonan = org.jetbrains.kotlin.konan.file.File(inputFile.path)
val klib = KotlinLibraryLayoutImpl(klib = klibKonan, component = "default")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/*
* Copyright 2022 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
*/

package dev.icerock.gradle.utils

import org.gradle.api.file.FileCollection
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompileTool
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinNativeCompile
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeLink

val KotlinNativeLink.klibs: FileCollection
get() {
return try {
val getLibraries =
AbstractKotlinNativeCompile::class.java.getDeclaredMethod("getLibraries")
val getIntermediateLibrary =
KotlinNativeLink::class.java.getDeclaredMethod("getSource")

@Suppress("UNCHECKED_CAST")
val libs: FileCollection = getLibraries.invoke(this) as FileCollection
val library: FileCollection = getIntermediateLibrary.invoke(this) as FileCollection

libs.plus(library)
} catch (exc: NoSuchMethodException) {
libraries.plus(sources)
}
}

val Kotlin2JsCompile.klibs: FileCollection
get() {
return try {
val getClasspath =
AbstractKotlinCompileTool::class.java.getDeclaredMethod("getClasspath")

val libs: FileCollection = getClasspath.invoke(this) as FileCollection
libs
} catch (exc: NoSuchMethodException) {
libraries.plus(sources)
}
}
11 changes: 8 additions & 3 deletions sample/android-app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,21 @@
<application
android:label="moko-resources test app"
android:theme="@style/Theme.AppCompat.DayNight"
tools:ignore="GoogleAppIndexingWarning">
tools:ignore="GoogleAppIndexingWarning,MissingApplicationIcon">

<activity android:name=".MainActivity">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".SelectLanguageActivity" android:label="Select language">
<activity
android:name=".SelectLanguageActivity"
android:exported="true"
android:label="Select language">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
Expand Down
6 changes: 4 additions & 2 deletions sample/android-mpp-app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@
<application
android:label="moko-resources test mpp app"
android:theme="@style/Theme.AppCompat.DayNight"
tools:ignore="GoogleAppIndexingWarning">
tools:ignore="GoogleAppIndexingWarning,MissingApplicationIcon">

<activity android:name=".MainActivity">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
Expand Down
5 changes: 2 additions & 3 deletions sample/mpp-library/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,8 @@ plugins {
}

android {
lintOptions {
disable("ImpliedQuantity")
}
namespace = "com.icerockdev.library"

testOptions {
unitTests {
isIncludeAndroidResources = true
Expand Down
2 changes: 0 additions & 2 deletions sample/mpp-library/src/androidMain/AndroidManifest.xml

This file was deleted.

0 comments on commit 8ecb5c4

Please sign in to comment.