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
  • t

    Thomas Kranzer

    01/05/2022, 7:23 AM
    Are there any KMM sample projects that have a nested multi module library architecture like so: • Repository (KMM Library) ◦ Local (KMM Library) ◦ Remote (KMM Library) where each KMM module/library can be published as a maven repository while also making development comparatively easy (in terms of switching between published maven artefact and sourcecode during development)
    b
    m
    +1
    10 replies · 4 participants
  • p

    Paul Weber

    01/05/2022, 9:58 PM
    Swift offers the possibility to omit argument names when calling a function if the function is declared like
    func foo(_ arg: Bar) {}
    . I.e., you can just
    foo(myArg)
    instead of having to
    foo(arg: myArg)
    It’s probably not possible to declare a function in kotlin that behaves the same way at the swift callsite, right?
    r
    e
    3 replies · 3 participants
  • a

    Anamika Trivedi

    01/06/2022, 2:00 AM
    What is the recommended project structure for KMM applications? 1. One single git project containing both native apps as well as their shared logic. 2. Two git projects - one containing android native and shared and other containing iOS native (We currently have this) 3. Three git projects one for each Android, iOS and shared. Is this even possible?
    j
    a
    +2
    8 replies · 5 participants
  • a

    An Tran

    01/06/2022, 3:21 AM
    Hello guys, what IDE are you using for KMM applications?
    x
    a
    2 replies · 3 participants
  • x

    xxfast

    01/06/2022, 4:36 AM
    Hi all!. Not sure if anyone has done this before, but I’m trying to consume a
    Flow<State>
    from a shared
    ViewModel
    , in a Typescript react app (not using kotlin react wrappers). This is how that looks like
    // View.tsx
    export function View() {
        const viewModel = new JsViewModel()
        const [state, setState] = useState(viewModel.initialState)
    
        useEffect(() => {
            viewModel.subscribe((state) => { setState(state) })
        })
        
        return ( 
            <p>{state.value}</p>
        )
    }
    
    // ViewModel.kt
    @JsExport
    class JsViewModel {
      ...
      private val viewModel: ViewModel by viewModel()
    
      fun subscribe(
        onChange: (state: State) -> Unit,
      ) {
        viewModel.launch {
          viewModel.states.collect { state -> onChange(state) }
        }
      }
    }
    This pretty much works, but there’s a
    collect
    launched, which is technically not managed. Is there a better way to hookup the kotlin flow with the react hook?
    l
    4 replies · 2 participants
  • l

    Lena Stepanova

    01/06/2022, 2:55 PM
    I've started a tutorial/blog 🤓 I hope it will help beginners on their journey in the world of Kotlin Multiplatform! https://hlnstepanova.github.io/kmpizza/
    👏🏼 1
    ❤️ 1
    👏 6
    👍 1
    a
    m
    +3
    10 replies · 6 participants
  • s

    Shan

    01/06/2022, 7:20 PM
    Hey all. What is the actual way to set different artifact IDs when publishing a KMP project?
    publishing {
        publications.withType<MavenPublication> {
            artifactId = "custom-name"
            configureMavenPom(project)
            signing { if (isRelease) sign(this@withType) }
        }
    }
    This will create a publication with the right name for the artifact but appears to be causing a bug when actually trying to use it. Someone is having the same issue here: https://stackoverflow.com/questions/70489135/unable-to-use-published-kmp-library-due-[…]o-error-detecting-cycle-in-external-va/70490150?noredirect=1 So my IDE can detect the dependency that I published (above), but Gradle cannot seem to resolve it. The actual error message:
    Detecting cycle in external variants for :
    my.dependency:dependency:version: //<---- the one i published (above)
      - my.other.project:other:version
    Dependency resolution has ignored the cycle to produce a result. It is recommended to resolve the cycle by upgrading one or more dependencies.
    h
    o
    11 replies · 3 participants
  • r

    rkechols

    01/06/2022, 7:54 PM
    Working on understanding the overall setup for KMM, currently working on the Android portion. Two questions I have (which I believe are related): • What's the difference between the
    /androidApp
    portion and the
    /shared/src/androidMain
    ? • Is it possible for an
    expect
    declaration in the shared code (
    /shared/src/commonMain
    ) to find its
    actual
    implementation in the
    /androidApp
    portion?
    n
    a
    +2
    11 replies · 5 participants
  • v

    v79

    01/07/2022, 2:26 PM
    Hello! I have a project which is multiplatform (all code is in src/commonMain). Now, I'm not actually interested in mobile or iOS, or even native maybe, and I'd like to add a JVM library to the project. I've added the dependency in gradle (`implementation("io.github.quillraven.fleks:Fleks:1.0-RC1")`and IntelliJ has downloaded the code from mavenCentral to "external libraries". But neither IntelliJ nor gradle can build the project, which the confusing error message "Unresolved reference: com". The "com" in
    import com.github.quillraven.fleks.World
    is highlighted red too. So.... what do I do?
    h
    a
    12 replies · 3 participants
  • r

    Rodrigo Bressan De Souza

    01/07/2022, 2:34 PM
    Hi guys, I have one doubt regarding the Kotlin Multiplatform framework, I want to create a library that can be used on most platforms, mainly targeting: • js (node, to be used with react-native or a front-end framework) • Android • iOS Is Kotlin Multiplatform a viable option to it? What would be the artifacts generated for each of those options and does anyone have an example? (edited)
    e
    g
    +2
    6 replies · 5 participants
  • b

    brabo-hi

    01/07/2022, 11:20 PM
    Hi, is it safe to use
    kotlin Number
    type to represent monetary value?
    🇳🇴 5
    d
    h
    3 replies · 3 participants
  • s

    Sourabh Rawat

    01/08/2022, 6:11 AM
    Hi, getting following error when trying to share a jvm target in desktop and android targets
    Could not determine the dependencies of task ':desktop:run'.
    > Could not resolve all task dependencies for configuration ':desktop:jvmRuntimeClasspath'.
       > Could not resolve project :common.
         Required by:
             project :desktop
          > The consumer was configured to find a runtime of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm'. However we cannot choose between the following variants of project :common:
              - commonJvmDefault
              - commonJvmRuntimeElements
              - desktopDefault
              - desktopRuntimeElements
    gradle files posted in thread.
    3 replies · 1 participant
  • d

    dimsuz

    01/08/2022, 11:06 PM
    I have published a library to our maven (tried maven local too), and it has one transitive dependency. The consuming project does not see this transitive dependency and fails to compile. Although I can see that both "library.pom" and "library-jvm.pom" list this library under
    <dependencies>
    section. Does anyone know why this can happen and how to fix this? Adding the dependency directly to a consuming project works, but I'd like to avoid requiring users of my library do that manually.
    m
    5 replies · 2 participants
  • r

    Radoslaw Juszczyk

    01/10/2022, 12:19 PM
    Hey guys, what is a possible reason of this build failure?
    e: Compilation failed: null
    
     * Source files: 
     * Compiler version info: Konan: 1.6.10 / Kotlin: 1.6.10
     * Output kind: FRAMEWORK
    
    e: java.lang.NullPointerException
    	at org.jetbrains.kotlin.backend.konan.optimizations.DataFlowIR$SymbolTable.mapClassReferenceType(DataFlowIR.kt:520) ...
    I got it when trying to execute linkMultiplatformAppReleaseFrameworkIosArm64 gradle task
    k
    a
    +1
    11 replies · 4 participants
  • s

    spierce7

    01/10/2022, 8:48 PM
    Has anyone benchmarked the new Kotlin native memory model vs the old one? I’d be curious.
    👀 2
    e
    r
    5 replies · 3 participants
  • d

    Douaa Su

    01/11/2022, 10:21 AM
    Hi Guys , How do you handle caching in shared kmm modules ?
    p
    j
    +2
    7 replies · 5 participants
  • k

    Kathrin Petrova

    01/11/2022, 11:32 AM
    📣 Attention all Kotlin Multiplatform users! Our users are the best source of information about Kotlin and we continue to rely on their help while making decisions about the future of the technology. Every change made to Kotlin has been based on feedback from thousands of Kotlin users worldwide. Take part in the Kotlin Multiplatform user survey, share your thoughts and feedback, and help us make Kotlin Multiplatform even better! 🎁 As a token of thanks, everyone that participates in this survey will be entered into a raffle where they could win a special prize from the Kotlin team!
    :kotlin: 8
    🔥 18
    x
    1 reply · 2 participants
  • a

    Anton Afanasev

    01/11/2022, 4:01 PM
    Hi, want to get your opinion about documentation best practices with multiplatform code. Do you document both expect/actual classes? If yes, do you document functions in expect/actual as well? Note. By documenting, I mean kdoc.
    l
    1 reply · 2 participants
  • j

    Jozef Matus

    01/11/2022, 4:14 PM
    Hi guys 🙂, I’m not able to configure KMM project so it uses
    native-mt
    coroutines and works on apple silicon ios simulator. Did anybody make it work please ?
    j
    p
    +1
    14 replies · 4 participants
  • u

    ultraon

    01/11/2022, 4:51 PM
    Who knows if
    gradle 7.3.3
    is supported by KMM plugin? I've found that unit tests for native platform can't be run.
    j
    t
    +2
    6 replies · 5 participants
  • r

    rahulrav

    01/12/2022, 1:15 AM
    How do framework names on iOS map to Platform specific app packages ? For e.g. I am trying to find
    os_signpost_emit_with_type
    , and I can't seem to find it. https://developer.apple.com/documentation/os/os_signpost_emit_with_type?language=objc
    1 reply · 1 participant
  • c

    calrissian

    01/12/2022, 5:12 AM
    Hey so tried to follow most of the multi-platform instructions (https://play.kotlinlang.org/hands-on/Full Stack Web App with Kotlin Multiplatform) and I was able get my app working locally.. The problem that I am seeming to have is that my index.html uses a line
    <script src="myJS.js"></script>
    but when my frontend tries to request that JS file from my Ktor server it response with 404 .. (the request made is http//:host:port/myJs.js)I followed the steps to copy myJr.js into my jar file but still seems like the file can't be found.. Also to be clear when I run jsBrowser[Development/Production]Run everything works correctly. But that is likely because webpack dev server is serving js file Also I would like to mention that when I manually create an endpoint get("/myJs.js") and return static resource myJs.js all seems to work as expected not sure what I am missing .. any help or suggestions would be appreciated
    2 replies · 1 participant
  • t

    Travis Reitter

    01/12/2022, 6:21 AM
    Hi! Does anyone have example projects that build Objective-C directly into an iOS target? Is it possible to just include a handful of
    .m
    and
    .h
    files that way so I can use them in some
    actual
    implementations? Or do I have to somehow build a library of the
    .m
    files and link against that? I'm trying to follow the Gradle examples here but my iOS build is failing to find my header. Not sure if I have to adjust my Xcode project to include the header file or what. Any help is greatly appreciated!
    z
    a
    +1
    18 replies · 4 participants
  • r

    Robert Munro

    01/12/2022, 12:13 PM
    i am trying to opt-in for
    @ExperimentalTime
    in my multi-platform module - but the following doesnt work :
    sourceSets {
        all {
            languageSettings.optIn("kotlin.time.ExperimentalTime")
        }
    }
    languageSettings
    cant be found
    languageSettings.optIn("kotlin.time.ExperimentalTime")
                       ^ Unresolved reference: languageSettings
    anyine know what am i missing? this seems to be exactly as per the documentation page https://kotlinlang.org/docs/opt-in-requirements.html#module-wide-opt-in i'm updating to
    1.6.10
    j
    1 reply · 2 participants
  • s

    SrSouza

    01/13/2022, 12:38 AM
    Hi folks, there is anyway to have
    expect interface
    with a
    expect val property: String
    that should be defined with
    actual get() =
    ? The currently interface I want to move to multiplatform looks something like this:
    interface Screen : Serializable {
      val key: String
         get() = this::class.qualiedName ?: error()
    }
    So it was
    Serializable
    , I'm expect/actual for the JVM version to have Serializable (Android need it), and the key I'm not able to use expect/actual.
    ✅ 1
    t
    2 replies · 2 participants
  • s

    Stefan Oltmann

    01/13/2022, 10:52 AM
    Can I use value classes in shared code from Swift? I defined in my shared code this:
    @JvmInline
    value class PhotoUri(val value: String)
    In Swift
    PhotoUri
    is not defined according to the error message. Attributes that use it seem to be of type
    Any
    now. If I change that to an data class it's available. How can I use value classes with Kotlin v1.6.10?
    ✅ 1
    h
    p
    34 replies · 3 participants
  • t

    Thomas Kranzer

    01/13/2022, 11:55 AM
    Hi, is it possible to include a KMM Library (target Android and iOS) into a plain Android Application using Gradle Composite Builds (using
    includeBuild
    )? If yes, are there any working examples?
    ✅ 1
    s
    u
    5 replies · 3 participants
  • h

    hfhbd

    01/13/2022, 1:24 PM
    Does anybody know a workaround to create a fat framework on macOS? https://youtrack.jetbrains.com/issue/KT-47355
    val xcf = XCFramework()
    fun KotlinNativeTarget.config() {
        binaries {
            framework {
                baseName = "shared"
                export("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0")
                xcf.add(this)
            }
        }
    }
    iosArm64 { config() }
    iosSimulatorArm64 { config() }
    macosArm64 { config() }
    macosX64 { config() }
    iOS targets work without any problem, macOS fails with `Fat frameworks are not supported for platform `macos_arm64``
    ➕ 2
    t
    s
    3 replies · 3 participants
  • g

    georgi

    01/13/2022, 9:16 PM
    Hey folks! I'm observing strange behaviour when running
    ./gradlew connectedAndroidTest
    where my shared module unit tests inside
    src/commonTest/kotlin
    also run as part of the Android instrumented tests. Anyone experienced this before? 🤔 More details in 🧵
    ✅ 1
    m
    7 replies · 2 participants
  • r

    Radoslaw Juszczyk

    01/14/2022, 6:47 AM
    Hey guys, I am trying to consume my multiplatform module in swift. But I have problem with classes and objects which are children of a sealed class. It looks more or less like that:
    interface SomeViewModelDelegate {
        fun consumeState(state: State)
    }
    
    sealed class State {
        object Loading: State()
        data class Loaded(
            val data: String,
        ): State()
    
        data class Error(val errorMessage: String): State()
    }
    In this case only State is exposed to swift but not Loading, Loaded, Error so I cannot type check nor cast it to these specific types. Any ideas how to get it exposed to swift?
    x
    a
    15 replies · 3 participants
Powered by Linen
Title
r

Radoslaw Juszczyk

01/14/2022, 6:47 AM
Hey guys, I am trying to consume my multiplatform module in swift. But I have problem with classes and objects which are children of a sealed class. It looks more or less like that:
interface SomeViewModelDelegate {
    fun consumeState(state: State)
}

sealed class State {
    object Loading: State()
    data class Loaded(
        val data: String,
    ): State()

    data class Error(val errorMessage: String): State()
}
In this case only State is exposed to swift but not Loading, Loaded, Error so I cannot type check nor cast it to these specific types. Any ideas how to get it exposed to swift?
as a workaround I was able to do it this way:
interface SomeViewModelDelegate {
    fun consumeStateLoading(state: State.Loading)
    fun consumeStateLoaded(state: State.Loaded)
    fun consumeStateError(state: State.Error)
}
but I am not a fan of it
x

xxfast

01/14/2022, 11:25 AM
this is definitely doable. I have an sealed state like
sealed class LoginState : Parcelable {
  abstract val version: String

  data class IdleState(
    override val version: String,
    val inputs: UsernamePasswordState,
  ) : LoginState() {
    // State copy extensions for native clients
    fun doCopyInputs(inputs: UsernamePasswordState) = copy(inputs = inputs)
  }

  @Parcelize
  data class LoadingState(
    override val version: String,
    val step: LoadingStep
  ) : LoginState()
}
which is accessible from swift like
switch viewModelDelegate.state {
case let idleState as LoginState.IdleState :
    UsernamePasswordView(
        state: idleState.inputs,
        ...
    )

case let progressState as LoginState.LoadingState:
    switch progressState.step {
    case .checkingcredentials:
        ProgressView(..)
    ..
    }

default: ProgressView(MR.strings().login_loadingDefaultText.localised())
}
try addressing type as
State.Loading
?
a

Anton Afanasev

01/14/2022, 2:29 PM
Sealed classes have some limitations when translated to Swift. But in your case you should be able to use something like:
switch state {
case _ as State.Loading:
   // handle loading here
case let loaded as State.Loaded:
   loaded.data.description // operate the `data` as a payload of state Loaded.
default:
    // On kotlin native sealed classes are not exhaustive so `default` case is a must
}
r

Radoslaw Juszczyk

01/14/2022, 2:32 PM
yeah but i dont get these types in the exported pod , I think the issue is that this sealed class is defined in another kmm module than the one which is exported if I have a method fun consume(state:State) only then the child classes are not exported but if I define three separate methods: consumeStateLoading(state: State.Loading), consumeStateLoaded(state: State.Loaded) ... then they got exported correctly
a

Anton Afanasev

01/14/2022, 2:35 PM
Are this states comes from 3-rd party library?
r

Radoslaw Juszczyk

01/14/2022, 2:36 PM
from my kmm module
a

Anton Afanasev

01/14/2022, 2:37 PM
Check your library exported
.h
file if it contains this states. They should be there (unless this states are package private / internal) If they are there, you should be able to work with them.
r

Radoslaw Juszczyk

01/14/2022, 2:47 PM
if i define that sealed interface inside the main kmp module then it is correclty present in swift and .h file if I define a sealed interface in another kmp module which the main module depends on then that sealed interface is not available neither in swift nor in .h file
but if i use that type somewhere in the public api of the main module then it is exported and visible in .h file
a

Anton Afanasev

01/14/2022, 2:51 PM
Just to get an idea of your project structure. • You have a multiplatform public api project with shared/ios/android modules. • Your shared depends on some other multiplatform project which has this sealed states. If so, it might be that you need to export this other module as a bitcode when you build your xcframework.
r

Radoslaw Juszczyk

01/14/2022, 2:51 PM
yesss!
it was exactly that
actually i added export(...) in wrong place I had it inside ios() { binaries.framewrok {} } instead of inside cocoapods { framework }
👍 1
thank you so much for help 🙂
View count: 16