getting error : could not build Objective-C module 'AVFoundation' error: fatalError
Issue Description
I'm encountering an issue while building my Swift file AudioRecorderImpl.swift, which requires AVFoundation. The error message I'm getting is:
could not build Objective-C module 'AVFoundation' error: fatalError
My swift code
// AudioRecorderImpl.swift
import Foundation
import AVFoundation
@objc class AudioRecorderImpl: NSObject, AVAudioRecorderDelegate {
private var audioRecorder: AVAudioRecorder?
private var audioFileURL: URL?
@objc func startRecording() {
// ... (your existing code)
}
@objc func stopRecording() -> NSData {
// ... (your existing code)
}
}
##My directory structure
Mirror (root package)
|-- Compose App
| |-- native
| | |-- AudioRecorderImpl.swift
| |-- src
| |-- androidmain
| |-- commonmain
| |-- iosmain
##inside gradle.kts
import org.jetbrains.compose.ExperimentalComposeLibrary
plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidApplication)
alias(libs.plugins.jetbrainsCompose)
alias(libs.plugins.kotlinxSerialization)
alias(libs.plugins.sqlDelight)
alias(libs.plugins.swiftklib)
}
sqldelight {
databases {
create("MirrorLocalDatabase") {
packageName.set("org.example.mirror.database")
}
}
}
kotlin {
androidTarget {
compilations.all {
kotlinOptions {
jvmTarget = "1.8"
}
}
}
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach { iosTarget ->
iosTarget.binaries.framework {
baseName = "ComposeApp"
isStatic = true
}
iosTarget.compilations {
val main by getting {
cinterops {
create("AudioRecorderImpl")
}
}
}
}
sourceSets {
androidMain.dependencies {
//android specific dependencies
}
iosMain.dependencies {
//ios specific dependencies
}
commonMain.dependencies {
//common dependencies
}
}
}
android {
//android section
}
swiftklib {
create("AudioRecorderImpl") {
path = file("native")
packageName("org.example.mirror")
}
}
I'm facing the same error, have you solved it @Vaibhav-214 ?
@jcaiqueoliveira Nopes couldn't get it to work, I used a different method for my usecase.
Created an interface in iosMain and implemented that in Swift and with some DI, it is working for me.
What exactly use your usecase?
@Vaibhav-214 try wrapping in compiler directives:
#if canImport(RadioPlayer)
or
#if os(iOS)
@Vaibhav-214 This issue should be fixed in https://github.com/ttypic/swift-klib-plugin/releases/tag/v0.6.2
Please reopen if issue persists