1
1
import java.util.*
2
2
import java.text.SimpleDateFormat
3
+ import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFramework
4
+
3
5
4
6
plugins {
5
- kotlin(" multiplatform" ) version " 1.5.10 "
7
+ kotlin(" multiplatform" ) version " 1.5.30 "
6
8
id(" com.android.library" )
7
9
}
8
10
9
11
val libName = " LibraryName"
10
- val libVersionName = " 1.0.1 "
12
+ val libVersionName = " 1.0.2 "
11
13
group = " com.prof18"
12
14
version = libVersionName
13
15
14
16
repositories {
15
17
google()
16
- jcenter()
17
18
mavenCentral()
18
19
}
19
20
20
21
kotlin {
22
+ val xcFramework = XCFramework (libName)
23
+
21
24
android()
22
25
ios {
23
- binaries.framework(libName)
26
+ binaries.framework(libName) {
27
+ xcFramework.add(this )
28
+ }
24
29
}
30
+
25
31
sourceSets {
26
32
val commonMain by getting
27
33
val commonTest by getting {
@@ -46,80 +52,6 @@ kotlin {
46
52
}
47
53
48
54
tasks {
49
- register(" buildDebugXCFramework" , Exec ::class .java) {
50
- description = " Create a Debug XCFramework"
51
-
52
- dependsOn(" link${libName} DebugFrameworkIosArm64" )
53
- dependsOn(" link${libName} DebugFrameworkIosX64" )
54
-
55
- val arm64FrameworkPath = " $rootDir /build/bin/iosArm64/${libName} DebugFramework/${libName} .framework"
56
- val arm64DebugSymbolsPath = " $rootDir /build/bin/iosArm64/${libName} DebugFramework/${libName} .framework.dSYM"
57
-
58
- val x64FrameworkPath = " $rootDir /build/bin/iosX64/${libName} DebugFramework/${libName} .framework"
59
- val x64DebugSymbolsPath = " $rootDir /build/bin/iosX64/${libName} DebugFramework/${libName} .framework.dSYM"
60
-
61
- val xcFrameworkDest = File (" $rootDir /../kmp-xcframework-dest/$libName .xcframework" )
62
- executable = " xcodebuild"
63
- args(mutableListOf<String >().apply {
64
- add(" -create-xcframework" )
65
- add(" -output" )
66
- add(xcFrameworkDest.path)
67
-
68
- // Real Device
69
- add(" -framework" )
70
- add(arm64FrameworkPath)
71
- add(" -debug-symbols" )
72
- add(arm64DebugSymbolsPath)
73
-
74
- // Simulator
75
- add(" -framework" )
76
- add(x64FrameworkPath)
77
- add(" -debug-symbols" )
78
- add(x64DebugSymbolsPath)
79
- })
80
-
81
- doFirst {
82
- xcFrameworkDest.deleteRecursively()
83
- }
84
- }
85
-
86
- register(" buildReleaseXCFramework" , Exec ::class .java) {
87
- description = " Create a Release XCFramework"
88
-
89
- dependsOn(" link${libName} ReleaseFrameworkIosArm64" )
90
- dependsOn(" link${libName} ReleaseFrameworkIosX64" )
91
-
92
- val arm64FrameworkPath = " $rootDir /build/bin/iosArm64/${libName} ReleaseFramework/${libName} .framework"
93
- val arm64DebugSymbolsPath =
94
- " $rootDir /build/bin/iosArm64/${libName} ReleaseFramework/${libName} .framework.dSYM"
95
-
96
- val x64FrameworkPath = " $rootDir /build/bin/iosX64/${libName} ReleaseFramework/${libName} .framework"
97
- val x64DebugSymbolsPath = " $rootDir /build/bin/iosX64/${libName} ReleaseFramework/${libName} .framework.dSYM"
98
-
99
- val xcFrameworkDest = File (" $rootDir /../kmp-xcframework-dest/$libName .xcframework" )
100
- executable = " xcodebuild"
101
- args(mutableListOf<String >().apply {
102
- add(" -create-xcframework" )
103
- add(" -output" )
104
- add(xcFrameworkDest.path)
105
-
106
- // Real Device
107
- add(" -framework" )
108
- add(arm64FrameworkPath)
109
- add(" -debug-symbols" )
110
- add(arm64DebugSymbolsPath)
111
-
112
- // Simulator
113
- add(" -framework" )
114
- add(x64FrameworkPath)
115
- add(" -debug-symbols" )
116
- add(x64DebugSymbolsPath)
117
- })
118
-
119
- doFirst {
120
- xcFrameworkDest.deleteRecursively()
121
- }
122
- }
123
55
124
56
register(" publishDevFramework" ) {
125
57
description = " Publish iOs framework to the Cocoa Repo"
@@ -129,10 +61,15 @@ kotlin {
129
61
commandLine(" git" , " checkout" , " develop" ).standardOutput
130
62
}
131
63
132
- dependsOn(" buildDebugXCFramework " )
64
+ dependsOn(" assemble ${libName} DebugXCFramework " )
133
65
134
- // Replace
135
66
doLast {
67
+
68
+ copy {
69
+ from(" $buildDir /XCFrameworks/debug" )
70
+ into(" $rootDir /../kmp-xcframework-dest" )
71
+ }
72
+
136
73
val dir = File (" $rootDir /../kmp-xcframework-dest/$libName .podspec" )
137
74
val tempFile = File (" $rootDir /../kmp-xcframework-dest/$libName .podspec.new" )
138
75
@@ -190,10 +127,16 @@ kotlin {
190
127
}
191
128
192
129
// Create Release Framework for Xcode
193
- dependsOn(" buildReleaseXCFramework " )
130
+ dependsOn(" assemble ${libName} ReleaseXCFramework " )
194
131
195
132
// Replace
196
133
doLast {
134
+
135
+ copy {
136
+ from(" $buildDir /XCFrameworks/release" )
137
+ into(" $rootDir /../kmp-xcframework-dest" )
138
+ }
139
+
197
140
val dir = File (" $rootDir /../kmp-xcframework-dest/$libName .podspec" )
198
141
val tempFile = File (" $rootDir /../kmp-xcframework-dest/$libName .podspec.new" )
199
142
0 commit comments