Hi everyone, I'm running a simple project and simp...
# multiplatform
j
Hi everyone, I'm running a simple project and simply adding in the Navigation Compose dependency (or attempting to use it afterwards) makes the iOS build not run anymore. This is what I'm adding: Module:
org.jetbrains.androidx.navigation:navigation-compose
Version: Tried
2.9.0-alpha17
and
2.9.0-beta01
The error (clipped) is below
Copy code
Undefined symbols for architecture arm64:
  "_kfun:androidx.lifecycle.viewmodel.compose#androidx_lifecycle_viewmodel_compose_LocalViewModelStoreOwner$stableprop_getter$artificial(){}<http://kotlin.Int|kotlin.Int>", referenced from:
      _kfun:com.judahben149.basic.ui#HomeScreen(androidx.compose.ui.Modifier?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){} in ComposeApp.framework.o
ld: symbol(s) not found for architecture arm64
error: Compilation finished with errors

FAILURE: Build failed with an exception.
a
Can you share your build.gradle (app) file as well?
r
You have to use these versions navigationCompose=2.7.0-aplha06 composeMultiplatform=1.7.0 androidx-lifecycle=2.8.0-rc03 I don't know why it's not working on the latest versions
j
This is my build.gradle file @Anthony Mamode
Copy code
plugins {
    alias(libs.plugins.androidApplication)
    alias(libs.plugins.kotlinMultiplatform)
    alias(libs.plugins.composeMultiplatform)
    alias(libs.plugins.composeCompiler)
    alias(libs.plugins.sqlDelight)
}

kotlin {
    androidTarget()

    listOf(
        iosX64(),
        iosArm64(),
        iosSimulatorArm64()
    ).forEach { iosTarget ->
        iosTarget.binaries.framework {
            baseName = "ComposeApp"
            isStatic = false
            // Required when using NativeSQLiteDriver
//            linkerOpts.add("-lsqlite3")
//            linkerOpts("-lsqlite3")
        }
    }

    sourceSets {

        androidMain.dependencies {
            implementation(compose.preview)
            implementation(libs.androidx.activity.compose)
            implementation(libs.sqldelight.android)
            implementation(libs.koin.android)
            implementation(libs.koin.compose.android)
        }
        commonMain.dependencies {
            implementation(compose.runtime)
            implementation(compose.foundation)
            implementation(compose.material3)
            implementation(compose.ui)
            implementation(compose.components.resources)
            implementation(compose.components.uiToolingPreview)
            implementation(libs.androidx.lifecycle.viewmodel)
            implementation(libs.androidx.lifecycle.runtime.compose)

//            implementation(libs.sqldelight.jvm)
            implementation(libs.sqldelight.runtime)
            implementation(libs.sqldelight.coroutines)

            implementation(libs.koin.core)
            implementation(libs.koin.compose)
            implementation(libs.koin.compose.viewmodel)

//            implementation(libs.kotlin.coroutines.swing)
            implementation(libs.kotlinx.datetime)
//            implementation(libs.navigation.compose)
        }
        iosMain.dependencies {
            implementation(libs.sqldelight.native)
        }
    }
}

android {
    namespace = "com.judahben149.basic"
    compileSdk = libs.versions.android.compileSdk.get().toInt()

    defaultConfig {
        applicationId = "com.judahben149.basic"
        minSdk = libs.versions.android.minSdk.get().toInt()
        targetSdk = libs.versions.android.targetSdk.get().toInt()
        versionCode = 1
        versionName = "1.0"
    }
    packaging {
        resources {
            excludes += "/META-INF/{AL2.0,LGPL2.1}"
        }
    }
    buildTypes {
        getByName("release") {
            isMinifyEnabled = false
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
}

dependencies {
    debugImplementation(compose.uiTooling)
}

sqldelight {
    databases {
        create("BasicDatabase") {
            packageName.set("com.judahben149.basic")
            schemaOutputDirectory.set(file("src/commonMain/sqldelight/com/thomaskioko/tvmaniac/schemas"))
            migrationOutputDirectory.set(file("src/commonMain/sqldelight/com/thomaskioko/tvmaniac/migrations"))
            verifyMigrations.set(true)
        }
    }

    linkSqlite.set(true)
}
Alright, let me try these versions @Ranjith
a
you might miss this dep : org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose ? https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-viewmodel.html
Also on my side, using 2.9.0 for lifecycle + navigation and compose 1.8.0 is working