Skip to content

Commit 13c90ab

Browse files
committed
improved swift interop
1 parent dd08ac2 commit 13c90ab

File tree

6 files changed

+62
-34
lines changed

6 files changed

+62
-34
lines changed

.github/workflows/apple-binaries.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,38 +35,38 @@ jobs:
3535

3636
- name: Framework Tolgee
3737
continue-on-error: true
38-
run: ./gradlew core:assembleTolgeeXCFramework || ./gradlew core:assembleXCFramework
38+
run: ./gradlew core:assembleKMPTolgeeXCFramework
3939

4040
- name: Framework Tolgee Release
4141
continue-on-error: true
42-
run: ./gradlew core:assembleTolgeeReleaseXCFramework || ./gradlew core:assembleReleaseXCFramework
42+
run: ./gradlew core:assembleKMPTolgeeReleaseXCFramework
4343

4444
- name: Framework Tolgee Debug
4545
continue-on-error: true
46-
run: ./gradlew core:assembleTolgeeDebugXCFramework || ./gradlew core:assembleDebugXCFramework
46+
run: ./gradlew core:assembleKMPTolgeeDebugXCFramework
4747

4848
- name: Create XCFramework Archive
4949
run: |
5050
cd core/build/XCFrameworks/release
51-
tar -czf Tolgee-release.xcframework.tar.gz Tolgee.xcframework
51+
tar -czf KMPTolgee-release.xcframework.tar.gz KMPTolgee.xcframework
5252
cd ../debug
53-
tar -czf Tolgee-debug.xcframework.tar.gz Tolgee.xcframework
53+
tar -czf KMPTolgee-debug.xcframework.tar.gz KMPTolgee.xcframework
5454
cd ../../../../
55-
mv core/build/XCFrameworks/release/Tolgee-release.xcframework.tar.gz .
56-
mv core/build/XCFrameworks/debug/Tolgee-debug.xcframework.tar.gz .
55+
mv core/build/XCFrameworks/release/KMPTolgee-release.xcframework.tar.gz .
56+
mv core/build/XCFrameworks/debug/KMPTolgee-debug.xcframework.tar.gz .
5757
5858
- name: Upload XCFramework to Release
5959
if: ${{ github.event_name == 'release' }}
6060
uses: softprops/action-gh-release@v2
6161
with:
6262
files: |
63-
Tolgee-release.xcframework.tar.gz
64-
Tolgee-debug.xcframework.tar.gz
63+
KMPTolgee-release.xcframework.tar.gz
64+
KMPTolgee-debug.xcframework.tar.gz
6565
6666
- name: Upload XCFramework to action packages
6767
if: ${{ github.event_name == 'workflow_dispatch' }}
6868
uses: actions/upload-artifact@v4
6969
with:
7070
path: |
71-
Tolgee-release.xcframework.tar.gz
72-
Tolgee-debug.xcframework.tar.gz
71+
KMPTolgee-release.xcframework.tar.gz
72+
KMPTolgee-debug.xcframework.tar.gz

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ plugins {
1414
alias(libs.plugins.ktorfit) apply false
1515
alias(libs.plugins.multiplatform) apply false
1616
alias(libs.plugins.serialization) apply false
17+
alias(libs.plugins.skie) apply false
1718
alias(libs.plugins.vanniktech.publish) apply false
1819
alias(libs.plugins.versions)
1920
}
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
Pod::Spec.new do |spec|
2-
spec.name = 'Tolgee'
2+
spec.name = 'KMPTolgee'
33
spec.version = '1.0.0-alpha01'
44
spec.homepage = 'https://github.com/tolgee/tolgee-mobile-kotlin-sdk'
55
spec.source = { :http=> ''}
66
spec.authors = ''
77
spec.license = 'Apache License 2.0'
88
spec.summary = 'Kotlin Multiplatform localization wrapper for Tolgee'
9-
spec.vendored_frameworks = 'build/cocoapods/framework/Tolgee.framework'
9+
spec.vendored_frameworks = 'build/cocoapods/framework/KMPTolgee.framework'
1010
spec.libraries = 'c++'
1111

1212

1313

14-
if !Dir.exist?('build/cocoapods/framework/Tolgee.framework') || Dir.empty?('build/cocoapods/framework/Tolgee.framework')
14+
if !Dir.exist?('build/cocoapods/framework/KMPTolgee.framework') || Dir.empty?('build/cocoapods/framework/KMPTolgee.framework')
1515
raise "
1616
17-
Kotlin framework 'Tolgee' doesn't exist yet, so a proper Xcode project can't be generated.
17+
Kotlin framework 'KMPTolgee' doesn't exist yet, so a proper Xcode project can't be generated.
1818
'pod install' should be executed after running ':generateDummyFramework' Gradle task:
1919
2020
./gradlew :core:generateDummyFramework
@@ -28,12 +28,12 @@ Pod::Spec.new do |spec|
2828

2929
spec.pod_target_xcconfig = {
3030
'KOTLIN_PROJECT_PATH' => ':core',
31-
'PRODUCT_MODULE_NAME' => 'Tolgee',
31+
'PRODUCT_MODULE_NAME' => 'KMPTolgee',
3232
}
3333

3434
spec.script_phases = [
3535
{
36-
:name => 'Build Tolgee',
36+
:name => 'Build KMPTolgee',
3737
:execution_position => :before_compile,
3838
:shell_path => '/bin/sh',
3939
:script => <<-SCRIPT

core/build.gradle.kts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import co.touchlab.skie.configuration.DefaultArgumentInterop
12
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
23
import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFramework
34

@@ -8,14 +9,15 @@ plugins {
89
alias(libs.plugins.cocoapods)
910
alias(libs.plugins.dokka)
1011
alias(libs.plugins.serialization)
12+
alias(libs.plugins.skie)
1113
alias(libs.plugins.vanniktech.publish)
1214
`maven-publish`
1315
signing
1416
}
1517

1618
val libGroup = "io.tolgee.mobile-kotlin-sdk"
1719
val libName = "core"
18-
val appleFramework = "Tolgee"
20+
val appleFramework = "KMPTolgee"
1921

2022
group = libGroup
2123
version = libVersion
@@ -30,6 +32,26 @@ dokka {
3032
}
3133
}
3234

35+
skie {
36+
build {
37+
produceDistributableFramework()
38+
enableSwiftLibraryEvolution.set(true)
39+
noClangModuleBreadcrumbsInStaticFrameworks.set(true)
40+
}
41+
features {
42+
enableSwiftUIObservingPreview.set(true)
43+
enableFutureCombineExtensionPreview.set(true)
44+
enableFlowCombineConvertorPreview.set(true)
45+
46+
group {
47+
DefaultArgumentInterop.Enabled(true)
48+
}
49+
}
50+
analytics {
51+
disableUpload.set(true)
52+
}
53+
}
54+
3355
kotlin {
3456
androidTarget {
3557
publishAllLibraryVariants()

gradle/libs.versions.toml

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,46 @@
22
# https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog
33
# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format
44

5+
# Keep each section in alphabetic order!
6+
# Only exceptions are entries produced by this SDK, commented by "Keep at top".
7+
58
[versions]
6-
library = "1.0.0-alpha01"
9+
library = "1.0.0-alpha01" # Keep at top
710
activity = "1.10.1"
8-
android-core = "1.16.0"
9-
android-tools = "8.12.0"
11+
android-core = "1.17.0"
12+
android-tools = "8.12.1"
1013
atomicfu = "0.29.0"
1114
auto-service = "1.1.1"
1215
binary-compatibility = "0.18.1"
1316
compose = "1.8.2"
17+
compose-bom = "2025.08.00"
1418
coroutines = "1.10.2"
1519
datetime = "0.7.1"
1620
dokka = "2.0.0"
1721
i18n4k = "0.11.0"
1822
immutable = "0.4.0"
19-
kaml = "0.85.0"
23+
kaml = "0.92.0"
2024
kctfork = "0.8.0"
2125
kommand = "2.3.0"
22-
kotlin = "2.2.0"
23-
ksp = "2.2.0-2.0.2"
26+
kotlin = "2.2.10"
27+
ksp = "2.2.10-2.0.2"
2428
ktor = "3.2.3"
2529
ktorfit = "2.6.4"
30+
lifecycle-runtime-ktx = "2.9.2"
2631
publish = "0.34.0"
2732
semver = "3.0.0"
2833
serialization = "1.9.0"
29-
tooling = "1.7.0"
34+
skie = "0.10.6"
35+
tooling = "1.8.0"
3036
versions = "0.52.0"
31-
lifecycle-runtime-ktx = "2.9.2"
32-
compose-bom = "2025.07.00"
3337

3438
[libraries]
3539
activity = { group = "androidx.activity", name = "activity-ktx", version.ref = "activity" }
3640
activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activity" }
3741
android = { group = "androidx.core", name = "core-ktx", version.ref = "android-core" }
3842
android-tools = { group = "com.android.tools.build", name = "gradle", version.ref = "android-tools" }
3943
auto-service = { group = "com.google.auto.service", name = "auto-service", version.ref = "auto-service" }
44+
compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose-bom" }
4045
coroutines = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "coroutines" }
4146
coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "coroutines" }
4247
coroutines-swing = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-swing", version.ref = "coroutines" }
@@ -59,21 +64,21 @@ ktor-okhttp = { group = "io.ktor", name = "ktor-client-okhttp", version.ref = "k
5964
ktor-winhttp = { group = "io.ktor", name = "ktor-client-winhttp", version.ref = "ktor" }
6065
ktorfit = { group = "de.jensklingenberg.ktorfit", name = "ktorfit-lib", version.ref = "ktorfit" }
6166
ktorfit-ksp = { group = "de.jensklingenberg.ktorfit", name = "ktorfit-ksp", version.ref = "ktorfit" }
67+
lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycle-runtime-ktx" }
68+
material3 = { group = "androidx.compose.material3", name = "material3" }
6269
semver = { group = "io.github.z4kn4fein", name = "semver", version.ref = "semver" }
6370
serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-core", version.ref = "serialization" }
6471
serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "serialization" }
6572
serialization-kaml = { group = "com.charleskorn.kaml", name = "kaml", version.ref = "kaml" }
6673
tooling = { group = "dev.datlag.tooling", name = "tooling-async", version.ref = "tooling" }
67-
lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycle-runtime-ktx" }
68-
compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose-bom" }
6974
ui = { group = "androidx.compose.ui", name = "ui" }
7075
ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
76+
ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
7177
ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
7278
ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
73-
ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
74-
material3 = { group = "androidx.compose.material3", name = "material3" }
7579

7680
[plugins]
81+
tolgee = { id = "io.tolgee.mobile-kotlin-sdk", version.ref = "library" } # Keep at top
7782
android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
7883
android-application = { id = "com.android.application", version.ref = "android-tools" }
7984
android-library = { id = "com.android.library", version.ref = "android-tools" }
@@ -87,6 +92,6 @@ ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
8792
ktorfit = { id = "de.jensklingenberg.ktorfit", version.ref = "ktorfit" }
8893
multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
8994
serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
95+
skie = { id = "co.touchlab.skie", version.ref = "skie" }
9096
vanniktech-publish = { id = "com.vanniktech.maven.publish", version.ref = "publish" }
91-
versions = { id = "com.github.ben-manes.versions", version.ref = "versions" }
92-
tolgee = { id = "io.tolgee.mobile-kotlin-sdk", version.ref = "library" }
97+
versions = { id = "com.github.ben-manes.versions", version.ref = "versions" }
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#Sat Jan 11 14:03:40 CET 2025
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
4-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
4+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
55
zipStoreBase=GRADLE_USER_HOME
66
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)