Skip to content

Commit ec2d7fa

Browse files
authored
Merge pull request #285 from icerockdev/develop
Release 0.17.4
2 parents f3c8405 + 5dc6b94 commit ec2d7fa

68 files changed

Lines changed: 754 additions & 237 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/compilation-check.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ jobs:
1818
java-version: 11
1919
- name: Plugin check
2020
run: ./gradlew -p resources-generator build publishToMavenLocal
21+
- name: check android only build
22+
run: ./gradlew clean && ./gradlew assembleDebug
23+
- name: check jvm only build
24+
run: ./gradlew clean && ./gradlew jvmJar
25+
- name: check ios only build
26+
run: ./gradlew clean && ./gradlew compileKotlinIosX64
2127
- name: Library check
2228
run: ./gradlew build publishToMavenLocal
2329
- name: Check custom samples
@@ -26,3 +32,15 @@ jobs:
2632
run: cd sample/ios-app && pod install
2733
- name: Check iOS
2834
run: cd sample/ios-app && set -o pipefail && xcodebuild -scheme TestProj -workspace TestProj.xcworkspace -configuration Debug -sdk iphonesimulator -arch x86_64 build CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO | xcpretty
35+
- name: Publish Test Report
36+
uses: mikepenz/action-junit-report@v2
37+
if: ${{ always() }}
38+
with:
39+
report_paths: '**/build/test-results/**/TEST-*.xml'
40+
github_token: ${{ secrets.GITHUB_TOKEN }}
41+
- name: Archive reports
42+
uses: actions/upload-artifact@v2
43+
if: ${{ always() }}
44+
with:
45+
name: code-coverage-report
46+
path: '**/build/reports/**/*'

.github/workflows/ui-tests-android-sample.yml

Lines changed: 0 additions & 23 deletions
This file was deleted.

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ buildscript {
4141
}
4242
4343
dependencies {
44-
classpath "dev.icerock.moko:resources-generator:0.17.3"
44+
classpath "dev.icerock.moko:resources-generator:0.17.4"
4545
}
4646
}
4747
@@ -58,7 +58,7 @@ project build.gradle
5858
apply plugin: "dev.icerock.mobile.multiplatform-resources"
5959
6060
dependencies {
61-
commonMainApi("dev.icerock.moko:resources:0.17.3")
61+
commonMainApi("dev.icerock.moko:resources:0.17.4")
6262
}
6363
6464
multiplatformResources {

gradle/libs.versions.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[versions]
2-
kotlinVersion = "1.5.21"
2+
kotlinVersion = "1.5.31"
33
androidGradleVersion = "4.1.2"
44

55
# kotlinx
@@ -25,13 +25,13 @@ testRunnerVersion = "1.3.0"
2525
testRulesVersion = "1.3.0"
2626
testExtJunitVersion = "1.1.2"
2727
testCoreVersion = "1.3.0"
28-
robolectricVersion = "4.5.1"
28+
robolectricVersion = "4.6"
2929

3030
# moko
3131
mokoGraphicsVersion = "0.7.0"
3232
mokoParcelizeVersion = "0.7.1"
3333
mokoTestVersion = "0.4.1"
34-
mokoResourcesVersion = "0.17.3"
34+
mokoResourcesVersion = "0.17.4"
3535

3636
[libraries]
3737
# kotlinx

resources-build-logic/src/main/kotlin/android-app-convention.gradle.kts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@ plugins {
88
}
99

1010
android {
11-
dexOptions {
12-
javaMaxHeapSize = "2g"
13-
}
14-
1511
defaultConfig.vectorDrawables.useSupportLibrary = true
1612

1713
buildTypes {

resources-compose/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ kotlin {
2121
sourceSets {
2222
named("jvmMain") {
2323
dependencies {
24+
api(projects.resources)
2425
implementation(compose.desktop.currentOs)
2526
}
2627
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Copyright 2022 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package dev.icerock.moko.resources.compose
6+
7+
import androidx.compose.ui.text.font.Font
8+
import androidx.compose.ui.text.font.FontStyle
9+
import androidx.compose.ui.text.font.FontWeight
10+
import dev.icerock.moko.resources.FontResource
11+
12+
fun FontResource.toComposeFont(
13+
weight: FontWeight = FontWeight.Normal,
14+
style: FontStyle = FontStyle.Normal
15+
): Font {
16+
return androidx.compose.ui.text.platform.Font(
17+
file = this.file,
18+
weight = weight,
19+
style = style
20+
)
21+
}

resources-generator/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
plugins {
6-
id("org.jetbrains.kotlin.jvm") version ("1.5.21")
6+
id("org.jetbrains.kotlin.jvm") version ("1.5.31")
77
id("detekt-convention")
88
id("publication-convention")
99
id("com.gradle.plugin-publish") version ("0.15.0")

resources-generator/src/main/kotlin/dev/icerock/gradle/MultiplatformResourcesPlugin.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import dev.icerock.gradle.utils.isDependsOn
2323
import org.gradle.api.Plugin
2424
import org.gradle.api.Project
2525
import org.gradle.api.tasks.SourceSet
26+
import org.gradle.kotlin.dsl.withType
2627
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
2728
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
2829
import org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper
@@ -147,9 +148,9 @@ class MultiplatformResourcesPlugin : Plugin<Project> {
147148
target.logger.warn("MR file generation for iOS is not supported on your system!")
148149
}
149150

150-
val generationTasks = target.tasks.filterIsInstance<GenerateMultiplatformResourcesTask>()
151-
generationTasks.filter { it != commonGenerationTask }
152-
.forEach { it.dependsOn(commonGenerationTask) }
151+
target.tasks.withType<GenerateMultiplatformResourcesTask>()
152+
.matching { it != commonGenerationTask }
153+
.configureEach { it.dependsOn(commonGenerationTask) }
153154
}
154155

155156
private fun setupCommonGenerator(

resources-generator/src/main/kotlin/dev/icerock/gradle/generator/apple/AppleMRGenerator.kt

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,22 @@ import com.squareup.kotlinpoet.ClassName
88
import com.squareup.kotlinpoet.CodeBlock
99
import com.squareup.kotlinpoet.KModifier
1010
import com.squareup.kotlinpoet.PropertySpec
11+
import com.squareup.kotlinpoet.STRING
1112
import com.squareup.kotlinpoet.TypeSpec
1213
import dev.icerock.gradle.MultiplatformResourcesPluginExtension
1314
import dev.icerock.gradle.generator.MRGenerator
1415
import dev.icerock.gradle.tasks.CopyFrameworkResourcesToAppEntryPointTask
1516
import dev.icerock.gradle.tasks.CopyFrameworkResourcesToAppTask
17+
import dev.icerock.gradle.utils.toEnumeration
18+
import org.apache.commons.codec.digest.DigestUtils
1619
import org.gradle.api.Action
1720
import org.gradle.api.Project
1821
import org.gradle.api.Task
22+
import org.gradle.api.plugins.ExtensionAware
23+
import org.gradle.kotlin.dsl.findByType
24+
import org.gradle.kotlin.dsl.getByType
25+
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
26+
import org.jetbrains.kotlin.gradle.plugin.cocoapods.CocoapodsExtension
1927
import org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinNativeCompilation
2028
import org.jetbrains.kotlin.gradle.plugin.mpp.Framework
2129
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
@@ -26,6 +34,7 @@ import org.jetbrains.kotlin.konan.file.zipDirAs
2634
import org.jetbrains.kotlin.library.impl.KotlinLibraryLayoutImpl
2735
import java.io.File
2836
import java.io.InputStream
37+
import java.io.SequenceInputStream
2938
import java.util.Properties
3039
import java.util.zip.ZipEntry
3140
import java.util.zip.ZipException
@@ -65,6 +74,21 @@ class AppleMRGenerator(
6574
.delegate(CodeBlock.of("lazy { NSBundle.loadableBundle(\"$bundleIdentifier\") }"))
6675
.build()
6776
)
77+
78+
mrClass.addProperty(
79+
PropertySpec.builder("contentHash", STRING, KModifier.PRIVATE)
80+
.initializer("%S", calculateResourcesHash())
81+
.build()
82+
)
83+
}
84+
85+
private fun calculateResourcesHash(): String {
86+
val inputStreams: List<InputStream> = resourcesGenerationDir.walkTopDown()
87+
.filterNot { it.isDirectory }
88+
.map { it.inputStream() }.toList()
89+
val singleInputStream: InputStream = SequenceInputStream(inputStreams.toEnumeration())
90+
91+
return singleInputStream.use { DigestUtils.md5Hex(it) }
6892
}
6993

7094
override fun getImports(): List<ClassName> = listOf(
@@ -172,7 +196,7 @@ class AppleMRGenerator(
172196

173197
if (framework.isStatic) {
174198
val resourcesExtension =
175-
project.extensions.getByType(MultiplatformResourcesPluginExtension::class.java)
199+
project.extensions.getByType<MultiplatformResourcesPluginExtension>()
176200
if (resourcesExtension.disableStaticFrameworkWarning.not()) {
177201
project.logger.warn(
178202
"""
@@ -231,9 +255,14 @@ $linkTask produces static framework, Xcode should have Build Phase with copyFram
231255
"copyFrameworkResourcesToApp",
232256
CopyFrameworkResourcesToAppEntryPointTask::class.java
233257
)
258+
val multiplatformExtension = project.extensions.getByType<KotlinMultiplatformExtension>()
259+
xcodeTask.configurationMapper = (multiplatformExtension as? ExtensionAware)?.extensions
260+
?.findByType<CocoapodsExtension>()
261+
?.xcodeConfigurationToNativeBuildType
262+
?: emptyMap()
234263

235264
if (framework.target.konanTarget == xcodeTask.konanTarget &&
236-
framework.buildType.getName() == xcodeTask.configuration
265+
framework.buildType.getName() == xcodeTask.configuration?.toLowerCase()
237266
) {
238267
xcodeTask.dependsOn(copyTask)
239268
}

0 commit comments

Comments
 (0)