https://kotlinlang.org logo
Docs
Join the conversationJoin Slack
Channels
100daysofcode
100daysofkotlin
100daysofkotlin-2021
advent-of-code
aem
ai
alexa
algeria
algolialibraries
amsterdam
android
android-architecture
android-databinding
android-studio
androidgithubprojects
androidthings
androidx
androidx-xprocessing
anime
anko
announcements
apollo-kotlin
appintro
arabic
argentina
arkenv
arksemdevteam
armenia
arrow
arrow-contributors
arrow-meta
ass
atlanta
atm17
atrium
austin
australia
austria
awesome-kotlin
ballast
bangladesh
barcelona
bayarea
bazel
beepiz-libraries
belgium
berlin
big-data
books
boston
brazil
brikk
budapest
build
build-tools
bulgaria
bydgoszcz
cambodia
canada
carrat
carrat-dev
carrat-feed
chicago
chile
china
chucker
cincinnati-user-group
cli
clikt
cloudfoundry
cn
cobalt
code-coverage
codeforces
codemash-precompiler
codereview
codingame
codingconventions
coimbatore
collaborations
colombia
colorado
communities
competitive-programming
competitivecoding
compiler
compose
compose-android
compose-desktop
compose-hiring
compose-ios
compose-mp
compose-ui-showcase
compose-wear
compose-web
connect-audit-events
corda
cork
coroutines
couchbase
coursera
croatia
cryptography
cscenter-course-2016
cucumber-bdd
cyprus
czech
dagger
data2viz
databinding
datascience
dckotlin
debugging
decompose
decouple
denmark
deprecated
detekt
detekt-hint
dev-core
dfw
docs-revamped
dokka
domain-driven-design
doodle
dsl
dublin
dutch
eap
eclipse
ecuador
edinburgh
education
effective-kotlin
effectivekotlin
emacs
embedded-kotlin
estatik
event21-community-content
events
exposed
failgood
fb-internal-demo
feed
firebase
flow
fluid-libraries
forkhandles
forum
fosdem
fp-in-kotlin
framework-elide
freenode
french
fritz2
fuchsia
functional
funktionale
gamedev
ge-kotlin
general-advice
georgia
geospatial
german-lang
getting-started
github-workflows-kt
glance
godot-kotlin
google-io
gradle
graphic
graphkool
graphql
graphql-kotlin
graviton-browser
greece
grpc
gsoc
gui
hackathons
hacktoberfest
hamburg
hamkrest
helios
helsinki
hexagon
hibernate
hikari-cp
hire-me
hiring
hongkong
hoplite
http4k
hungary
hyderabad
image-processing
india
indonesia
inkremental
intellij
intellij-plugins
intellij-tricks
internships
introduce-yourself
io
ios
iran
israel
istanbulcoders
italian
jackson-kotlin
jadx
japanese
jasync-sql
java-to-kotlin-refactoring
javadevelopers
javafx
javalin
javascript
jdbi
jhipster-kotlin
jobsworldwide
jpa
jshdq
juul-libraries
jvm-ir-backend-feedback
jxadapter
k2-early-adopters
kaal
kafka
kakao
kalasim
kapt
karachi
karg
karlsruhe
kash_shell
kaskade
kbuild
kdbc
kgen-doc-tools
kgraphql
kinta
klaxon
klock
kloudformation
kmdc
kmm-español
kmongo
knbt
knote
koalaql
koans
kobalt
kobweb
kodein
kodex
kohesive
koin
koin-dev
komapper
kondor-json
kong
kontent
kontributors
korau
korean
korge
korim
korio
korlibs
korte
kotest
kotest-contributors
kotless
kotlick
kotlin-asia
kotlin-beam
kotlin-by-example
kotlin-csv
kotlin-data-storage
kotlin-foundation
kotlin-fuel
kotlin-in-action
kotlin-inject
kotlin-latam
kotlin-logging
kotlin-multiplatform-contest
kotlin-mumbai
kotlin-native
kotlin-pakistan
kotlin-plugin
kotlin-pune
kotlin-roadmap
kotlin-samples
kotlin-sap
kotlin-serbia
kotlin-spark
kotlin-szeged
kotlin-website
kotlinacademy
kotlinbot
kotlinconf
kotlindl
kotlinforbeginners
kotlingforbeginners
kotlinlondon
kotlinmad
kotlinprogrammers
kotlinsu
kotlintest
kotlintest-devs
kotlintlv
kotlinultimatechallenge
kotlinx-datetime
kotlinx-files
kotlinx-html
kotrix
kotson
kovenant
kprompt
kraph
krawler
kroto-plus
ksp
ktcc
ktfmt
ktlint
ktor
ktp
kubed
kug-leads
kug-torino
kvision
kweb
lambdaworld_cadiz
lanark
language-evolution
language-proposals
latvia
leakcanary
leedskotlinusergroup
lets-have-fun
libgdx
libkgd
library-development
linkeddata
lithuania
london
losangeles
lottie
love
lychee
macedonia
machinelearningbawas
madrid
malaysia
mathematics
meetkotlin
memes
meta
metro-detroit
mexico
miami
micronaut
minnesota
minutest
mirror
mockk
moko
moldova
monsterpuzzle
montreal
moonbean
morocco
motionlayout
mpapt
mu
multiplatform
mumbai
munich
mvikotlin
mvrx
myndocs-oauth2-server
naming
navigation-architecture-component
nepal
new-mexico
new-zealand
newname
nigeria
nodejs
norway
npm-publish
nyc
oceania
ohio-kotlin-users
oldenburg
oolong
opensource
orbit-mvi
osgi
otpisani
package-search
pakistan
panamá
pattern-matching
pbandk
pdx
peru
philippines
phoenix
pinoy
pocketgitclient
polish
popkorn
portugal
practical-functional-programming
proguard
prozis-android-backup
pyhsikal
python
python-contributors
quasar
random
re
react
reaktive
realm
realworldkotlin
reductor
reduks
redux
redux-kotlin
refactoring-to-kotlin
reflect
refreshversions
reports
result
rethink
revolver
rhein-main
rocksdb
romania
room
rpi-pico
rsocket
russian
russian_feed
russian-kotlinasfirst
rx
rxjava
san-diego
science
scotland
scrcast
scrimage
script
scripting
seattle
serialization
server
sg-user-group
singapore
skia-wasm-interop-temp
skrape-it
slovak
snake
sofl-user-group
southafrica
spacemacs
spain
spanish
speaking
spek
spin
splitties
spotify-mobius
spring
spring-security
squarelibraries
stackoverflow
stacks
stayhungrystayfoolish
stdlib
stlouis
strife-discord-lib
strikt
students
stuttgart
sudan
swagger-gradle-codegen
swarm
sweden
swing
swiss-user-group
switzerland
talking-kotlin
tallinn
tampa
teamcity
tegal
tempe
tensorflow
terminal
test
testing
testtestest
texas
tgbotapi
thailand
tornadofx
touchlab-tools
training
tricity-kotlin-user-group
trójmiasto
truth
tunisia
turkey
turkiye
twitter-feed
uae
udacityindia
uk
ukrainian
uniflow
unkonf
uruguay
utah
uuid
vancouver
vankotlin
vertx
videos
vienna
vietnam
vim
vkug
vuejs
web-mpp
webassembly
webrtc
wimix_sentry
wwdc
zircon
Powered by Linen
multiplatform
  • s

    spierce7

    11/18/2021, 3:44 PM
    I’m seeing a strange issue with coroutines inside of
    Flow
    . I’m performing a blocking call on a coroutine thread (Using Dispatchers.IO), and because of that, even though the Collecting flow is finished, the cancellation logic (killing a process in this case), doesn’t happen for a good while after:
    try {
        while (currentCoroutineContext().isActive && process.isAlive) {
            val line = bufferedProcessSource.readUtf8Line() ?: break
            emit(line)
        }
    } catch (e: CancellationException) {
        throw e
    } finally {
        if (process.isAlive) {
            println("C$id - Destroying Process")
            process.destroy()
        }
    }
    • 1
    • 2
  • a

    Andrew O Hart

    11/18/2021, 6:17 PM
    Can anybody help me understand how I can use iOS classes in Kotlin? For example, I want to get a database path in iOS, we already have it on Android using the context, but for iOS I'm not sure how. I can't import the swift class right since its compiled before hand or something, but we can use the Objective C classes? For example, this logic here:
    //get an instance of the File Manager
    NSFileManager *fileManager = [NSFileManager defaultManager];
    
       //we'll list file in the temporary directory
    
    NSString * strPath = NSTemporaryDirectory();
    
    //we'll need NSURL for the File Manager
    NSURL *tempDirURL = [NSURL fileURLWithPath:strPath];
    
    
      //An array of NSURL object representing the path to the file
        //using the flag NSDirectoryEnumerationSkipsHiddenFiles to skip hidden files
    
    NSArray *directoryList = [fileManager contentsOfDirectoryAtURL:tempDirURL 
                          includingPropertiesForKeys:nil 
                  options:NSDirectoryEnumerationSkipsHiddenFiles error:nil];
    How can that be written in Kotlin? I think I need to do import platform.Foundation.NSFileManager right? I'm not sure exactly how I can find a .db file though. Or use these classes / methods. Is there a way to see method names etc in the IDE? Right now it seems to import but its red and I can't see methods etc. Any tips would be great
    d
    • 2
    • 12
  • b

    Bart Whiteley

    11/18/2021, 6:33 PM
    When I run
    ./gradlew assembleXCFramework
    , the resulting XCFramework is missing the
    ios-arm64-simulator
    slice. What am I doing wrong?
    d
    • 2
    • 2
  • p

    Paulo Cereda

    11/19/2021, 10:53 AM
    Hi friends! We have a Kotlin JVM project which currently uses MVEL as expression language. One of our long term goals is to provide native executables. Therefore we are migrating to Kotlin multiplatform, but the MVEL dependency seems to be still a blocker for us. Does anybody know of any expression language in which we could use? Any feedback is welcome. Thanks! 😉
    e
    b
    • 3
    • 8
  • a

    Andrew O Hart

    11/19/2021, 2:21 PM
    Also, we have several cinterop .def files etc, we can use them in iosMain,however all references to the classes are Red, like they are not resolved. Any ideas on how this can be fixed? If its even possible I'm not sure. It compiles fine just auto complete/import and viewing of methods etc doesnt work
    r
    • 2
    • 2
  • s

    Sebastian Sellmair [JB]

    11/19/2021, 2:45 PM
    ⚠️ IMPORTANT PSA FOR MULTIPLATFORM/ANDROID LIBRARY AUTHORS ⚠️ TL;DR: Publishing multiplatform libraries with Android Gradle Plugin 7.1.0-alpha13 (or higher) will require Kotlin Gradle Plugin 1.6.10 (or higher). # What happened We detected a recent incompatibility between newer pre-release Android Gradle Plugin versions and the current Kotlin Multiplatform Gradle Plugin. To be more precise: Starting from AGP version 7.1.0-alpha13, Android related Gradle configurations will set an internal attribute that will unfortunately be copied by Kotlin during the publication process of a library. This Gradle attribute will effectively tell Gradle, that the Library is only compatible with builds using the exact same AGP version. Obviously, this is not correct and not desirable. Libraries published with this attribute will therefore be almost “un-consumable” by users. ____________ # Consequences for you (the Library author) When upgrading AGP to 7.1.0-alpha13 (or higher), make sure you are using Kotlin Gradle Plugin 1.6.10 (or higher) to create proper publications. When using AGP 7.1.0-alpha12 (or lower), this does not affect you. ____________ # Consequences for you (Application Developer) None, enjoy! ____________ # Appendix We know, that issues like this are uncomfortable for users. Integrating Android into multiplatform is hard and this is not the first time we suffered from Android+Multiplatform issues. We (the Kotlin, more precise the Kotlin Multiplatform Core, Team) are aware of this and are actively working together with Google (more precise the AGP team) to find better ways of working together/integrating. Some very ambiguous plans were made recently and we started working on it already. ____________ The workaround on the Kotlin Gradle Plugin side can be tracked here: https://youtrack.jetbrains.com/issue/KT-49798 This is currently in review and is planned to be shipped in 1.6.10 Thanks folks and I hope you’ll have a more enjoyable Friday than I do 😁 :kotlin:
    👍 8
    :thank-you: 10
    👍🏼 1
    r
    j
    +2
    • 5
    • 5
  • m

    Mihai Voicescu

    11/19/2021, 5:41 PM
    Having at least 1 normal Multiplatform build (js+jvm+native) + 1 Multiplatform with android seems to break the build by loading a plugin 2 times, although I used the apply false method. Any ideas how I can fix it or what am I doing wrong? `settings.gradle.kts`:
    pluginManagement {
        resolutionStrategy {
            eachPlugin {
                if (requested.id.namespace == "com.android") {
                    useModule("com.android.tools.build:gradle:4.1.2")
                }
            }
        }
        plugins {
            id("com.android.library") apply false
            kotlin("multiplatform") version kotlin_version apply false
            kotlin("plugin.serialization") version kotlin_version apply false
    subproject `build.gradle.kts`:
    plugins {
        kotlin("multiplatform")
        kotlin("plugin.serialization")
        id("com.android.library")
    }
    
    kotlin {
    js {browser {
    
            }}}
    Short trace:
    org.gradle.internal.exceptions.LocationAwareException: Build file '/Users/mihaivo/IdeaProjects/gaia/gaia-phone-client/build.gradle.kts' line: 26
    
    Caused by: org.gradle.api.reflect.ObjectInstantiationException: Could not create an instance of type org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinBrowserJs.
    	at org.gradle.internal.instantiation.generator.DependencyInjectingInstantiator.doCreate(DependencyInjectingInstantiator.java:69)
    	at org.gradle.internal.instantiation.generator.DependencyInjectingInstantiator.newInstance(DependencyInjectingInstantiator.java:55)
    	at org.gradle.api.internal.model.DefaultObjectFactory.newInstance(DefaultObjectFactory.java:85)
    
    Caused by: java.lang.IllegalStateException: The Kotlin Gradle plugin was loaded multiple times in different subprojects, which is not supported and may break the build. 
    This might happen in subprojects that apply the Kotlin plugins with the Gradle 'plugins { ... }' DSL if they specify explicit versions, even if the versions are equal.
    Please add the Kotlin plugin to the common parent project or the root project, then remove the versions in the subprojects.
    If the parent project does not need the plugin, add 'apply false' to the plugin line.
    See: <https://docs.gradle.org/current/userguide/plugins.html#sec:subprojects_plugins_dsl>
    	at org.jetbrains.kotlin.gradle.targets.js.MultiplePluginDeclarationDetector.detect(MultiplePluginDeclarationDetector.kt:26)
    	at org.jetbrains.kotlin.gradle.targets.js.MultiplePluginDeclarationDetector$Companion.detect(MultiplePluginDeclarationDetector.kt:52)
    	at org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin.apply(NodeJsRootPlugin.kt:23)
    h
    • 2
    • 4
  • r

    Ruben Quadros

    11/20/2021, 3:11 PM
    Hi guys, I updated the kmm plugin and then upgraded kotlin version to
    1.6.0
    and the project is not syncing anymore. I also get the same error when trying to create a new KMM project. I have tried
    pod install
    in
    iosApp
    and then sync but still the same error. I have also tried invalidate caches and restart (AS). Stack trace in the thread.
    s
    • 2
    • 3
  • j

    jean

    11/20/2021, 3:14 PM
    async
    is not resolved from my common package but
    CompletableDeferred
    is. Does kmm prevent usage of
    async
    keyword somehow? Or is it because I’m using the native-mt version of kotlinx.coroutine?
    l
    • 2
    • 2
  • n

    Nacho Ruiz Martin

    11/20/2021, 7:19 PM
    👋 I have a shared KMM module that is fetched from a git submodule from my Android app. Each time gradle is synced, Android Studio is running the iOS tasks which actually take plenty of time and are not needed in this context. In other place, I use this KMM module to produce a XCFramework that is published using Cocoapods, there I really need the iOS tasks. Is there any way to disable the iOS building stuff in the Android app context?
    p
    • 2
    • 2
  • u

    ursus

    11/21/2021, 2:22 PM
    If I have android project with dagger @Inject constructors on classes I want now to share via multiplatform, I'm screwed right? (talking about the inject annotation, coming from jdk)
    👍 1
    m
    r
    • 3
    • 4
  • m

    Matti MK

    11/22/2021, 8:52 AM
    I’m still on Xcode
    12.5.1
    , wondering about updating to 13, I guess it should be safe already. Did anyone face issues on updating the version?
    t
    • 2
    • 3
  • m

    MarkRS

    11/22/2021, 9:33 AM
    All legacy issues aside, is there any reason to have an Android module as opposed to putting all Android code into AndroidMain in the shared module?
    c
    e
    • 3
    • 6
  • j

    jean

    11/22/2021, 12:26 PM
    I’m trying to get the week of the year value based on this logic :
    expect fun weekOfYear(time: String): Int
    
    // android
    actual fun weekOfYear(time: String): Int {
        val calendar: Calendar = Calendar.getInstance(TimeZone.getDefault())
        val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.getDefault())
        calendar.time = sdf.parse(time)!!
        return calendar.get(Calendar.WEEK_OF_YEAR)
    }
    
    // ios
    actual fun weekOfYear(time: String): Int {
        val dateFormatter = NSDateFormatter().apply {
            setDateStyle(none)
            setTimeStyle(none)
            setTimeZone(NSTimeZone.defaultTimeZone)
            setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
        }
    
        val date = dateFormatter.dateFromString(time)
        date ?: return 0
    
        val calendar = NSCalendar.currentCalendar
        val components = calendar.components(NSCalendarUnitWeekOfYear, date)
        return components.weekOfYear.toInt()
    }
    But it gives me different results out of the same date
    "2021-01-01T22:00:00.000+0000"
    This tests fails on iOS
    @Test
    fun `week of year should be 1`() {
        val weekOfYear = weekOfYear("2021-01-01T22:00:00.000+0000")
        assertEquals(1, weekOfYear)
    }
    it return
    53
    on iOS. Any advice on how to fix this?
    j
    • 2
    • 8
  • b

    Brian Donovan

    11/22/2021, 7:24 PM
    Hey all, any ideas why this isn’t importing? This is inside my androidMain
    m
    z
    l
    • 4
    • 7
  • m

    Martin Rajniak

    11/22/2021, 8:11 PM
    Hi folks, I am trying to build a KMP library for Android and iOS. I followed this tutorial https://kotlinlang.org/docs/mpp-create-lib.html But when I try to use the library in iOS project I get this error
    the linked and embedded framework is missing one or more architectures required by this target: arm64
    I am using M1 Mac and trying to run it with simulator so that will be an issue (since we see no issue on other architectures). The weird part is that the template task mentions arm64 architecture:
    val packForXcode by tasks.creating(Sync::class) {
        group = "build"
        val mode = System.getenv("CONFIGURATION") ?: "DEBUG"
        val sdkName = System.getenv("SDK_NAME") ?: "iphonesimulator"
        val targetName = "ios" + if (sdkName.startsWith("iphoneos")) "Arm64" else "X64"
        val framework =
            kotlin.targets.getByName<KotlinNativeTarget>(targetName).binaries.getFramework(mode)
        inputs.property("mode", mode)
        dependsOn(framework.linkTask)
        val targetDir = File(buildDir, "xcode-frameworks")
        from({ framework.outputDirectory })
        into(targetDir)
    }
    When I try KMM project I don't have this problem (but then the library is linked, so it is a different scenario). Any ideas or experience with this?
    ✅ 1
    a
    • 2
    • 4
  • p

    Peter Hsu

    11/23/2021, 6:02 AM
    android.util.*
    and
    java.util.*
    in commonMain?
    e
    b
    • 3
    • 7
  • d

    dsavvinov

    11/23/2021, 12:46 PM
    ⚠️ CAUTION! Authors of Kotlin Multiplatform libraries with Android targets please be aware that we recently discovered a couple of issues affecting the compatibility of libraries published in setups that use the most recent versions of Kotlin, Gradle, and the Android Gradle plugin. We recommend that you continue using Kotlin 1.5.31 and AGP 7.0.X (or older), rather than upgrading either of them. Kotlin 1.5.32 and Kotlin 1.6.10 will arrive shortly with compatibility fixes. 🛠️
    :thank-you: 9
    s
    m
    r
    • 4
    • 8
  • l

    Lena Stepanova

    11/23/2021, 2:04 PM
    Is there a good project/example of using BackgroundTask to trigger a function from shared module? Our efforts end up with Uncaught Kotlin exception: kotlin.native.IncorrectDereferenceException: illegal attempt to access non-shared org.koin.core.context.GlobalContext.KoinInstanceHolder@82f9b368 from other thread. Apparently, our shared Model, which is a KoinComponent, gets frozen, when we use Model.getProgress() in the ios background task, if I understand it correctly
    t
    • 2
    • 1
  • n

    Nicklas Jensen

    11/23/2021, 2:41 PM
    🕊️ Seems like announcing mocking frameworks compatible with Kotlin/Native and Kotlin Multiplatform is all the rage these days, and as such, I too wish to present a mocking framework, called Mockative, with these notable highlights and features: • Supports effortless multithreading in coroutines • No default return values • Concise, non-intrusive API • Supports both expression and matcher based stubbing • Fully type-safe • Mocking of interfaces Testing with Mockative couldn’t be simpler, as all that’s required is annotating a property with
    @Mock
    and assigning it to the value of a call to the
    <T> mock(KClass<T>)
    function:
    class GitHubServiceTests {
        @Mock
        val api = mock(GitHubAPI::class)
    }
    Please see the README for instructions on how to get started using Mockative today. We would love to hear your feedback on the framework.
    :kotlin-intensifies: 10
    👍 2
    b
    e
    • 3
    • 21
  • m

    Martin Rajniak

    11/23/2021, 4:42 PM
    Holla fellow programmers, is it possible to build KMM library for Android target on Linux machine and then build iOS target on Mac machine? I mean split the build.
    m
    • 2
    • 4
  • l

    Laurence Muller

    11/23/2021, 10:28 PM
    It looks like KMM Plugin v0.3.0 ( https://kotlinlang.org/docs/kmm-plugin-releases.html#release-details ) changed the shared module template a little. While updating a project, I see that
    val iosMain by getting
    is now replaced by
    val iosMain by creating
    and using
    {
      dependsOn(commonMain)
      iosX64Main.dependsOn(this)
      iosArm64Main.dependsOn(this)
      //iosSimulatorArm64Main.dependsOn(this)
    }
    With
    iosX64Main
    and
    iosArm64Main
    being split up to its own
    val
    . Does this mean I should be adding the dependencies for both (basically just copy them over in both sections)? For some reason, Android studio doesnt want to resolve the correct driver (for sqldelight in my case). See screenshots in the 🧵 .
    t
    a
    • 3
    • 10
  • p

    Pavel Repkin

    11/24/2021, 1:59 PM
    Hi! I have question about Cocoa Pods dependencies in KMM. Suppose there are two multi-platform modules “lib” and “shared” “shared” depends on “lib” Both modules require AFNetworking framework. What is the proper way to add CocoaPods dependency on AFNetworking? Should I add this fragment to both modules or just to module “lib”? pod(“AFNetworking”) { version = “~> 4.0.1” }
    👀 1
    k
    v
    v
    • 4
    • 18
  • w

    William Reed

    11/24/2021, 5:14 PM
    for those of you doing an iOS / Android project - what is your typical folder structure like? do you have iOS, Android, and Shared code in one git repo or separate repo’s for each?
    w
    h
    +4
    • 7
    • 9
  • s

    Scott Kruse

    11/24/2021, 7:16 PM
    How do we call functions from
    commonMain
    source set from the consumer of the corresponding android target AAR? Right now my project has a couple public composables defined in
    commonMain
    , but they're not visible to my android project. The AAR is resolved via
    mavenLocal
    at the moment
    c
    • 2
    • 2
  • p

    Piotr Prus

    11/24/2021, 10:02 PM
    non-technical question. When the KMP was announced? I can find a lot of articles about KMM, but not KMP. When it was released, when it was in alpha stage?
    b
    j
    • 3
    • 9
  • e

    Emil Kantis

    11/24/2021, 10:51 PM
    Is it possible to use
    org.jetbrains:annotations
    from commonMain? I can’t seem to get it to work.. Assuming the dependency is only available for JVM, is there any way to add annotations for jvm target? 🤔
    i
    e
    • 3
    • 4
  • s

    Scott Kruse

    11/25/2021, 4:27 AM
    If I have an Android target, and define a const val in the common source set, will this variable be accessible to the app that consumes the AAR artifact in a non mono repo scenario? E.g a standard maven artifact ? Curious how the commonMain source set merging / package visibility works
    m
    • 2
    • 2
  • e

    elect

    11/25/2021, 9:44 AM
    there isn't any plain
    assert()
    from kotlin common stdlib for testing?
    g
    • 2
    • 4
  • x

    xxfast

    11/25/2021, 12:34 PM
    Following through this guide to migrate from old
    packForXCode
    task to
    embedAndSignAppleFrameworkForXcode
    . In step 4, setting linker flags where we have to do
    $(inherited) -framework shared
    how would we link more than one library here?
    k
    • 2
    • 2
Powered by Linen
Title
x

xxfast

11/25/2021, 12:34 PM
Following through this guide to migrate from old
packForXCode
task to
embedAndSignAppleFrameworkForXcode
. In step 4, setting linker flags where we have to do
$(inherited) -framework shared
how would we link more than one library here?
k

Konstantin Tskhovrebov

11/26/2021, 11:30 AM
as i know you can use
-framework one -framework two …
x

xxfast

11/26/2021, 11:39 PM
ah, didnt realise you need to add a flag between every module name
View count: 11