From ea4d65274e6a3d33692179aa34353f728c189145 Mon Sep 17 00:00:00 2001 From: sravan Date: Fri, 30 Oct 2026 20:42:00 +0530 Subject: [PATCH] android(call): fix LiveKit audio API import + audioswitch duplicate-class MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit JitPack fix worked; two new failures surfaced, both fixed here: 1) checkDebugDuplicateClasses: LiveKit 2.29.2 already BUNDLES a fork (com.github.davidliu:audioswitch) carrying the same com.twilio.audioswitch classes at runtime, so our explicit `implementation com.twilio:audioswitch` put both on the runtime classpath. Switch it to `compileOnly` — we get the AudioDevice types at compile time, runtime uses only LiveKit's bundled fork. (Also clears the "namespace used in multiple modules" merge warning.) 2) CallMedia.kt: `Unresolved reference: AudioOptions`. In 2.29.2 AudioOptions is declared in package io.livekit.android (inside LiveKitOverrides.kt), not io.livekit.android.audio. Corrected the import. Verified AudioSwitchHandler's API (registerAudioDeviceChangeListener / availableAudioDevices / selectedAudioDevice / selectDevice) against the v2.29.2 source. Co-Authored-By: Claude Opus 4.8 --- mobile/plugins/native-call/android/build.gradle | 8 ++++++-- .../main/java/com/bizgaze/connect/nativecall/CallMedia.kt | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/mobile/plugins/native-call/android/build.gradle b/mobile/plugins/native-call/android/build.gradle index ef14a65..360fa50 100644 --- a/mobile/plugins/native-call/android/build.gradle +++ b/mobile/plugins/native-call/android/build.gradle @@ -88,6 +88,10 @@ dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion" // Native call media (background audio) + audio-device routing (speaker/bluetooth/earpiece). implementation "io.livekit:livekit-android:$livekitVersion" - // AudioDevice types used by LiveKit's AudioSwitchHandler; declared so they're on our compile classpath. - implementation "com.twilio:audioswitch:$audioswitchVersion" + // AudioDevice types (com.twilio.audioswitch.AudioDevice) used by our CallMedia.kt. LiveKit already BUNDLES a + // fork (com.github.davidliu:audioswitch) that ships these exact classes at RUNTIME — so declaring our own as + // `implementation` put both forks on the runtime classpath and failed checkDebugDuplicateClasses. Use + // `compileOnly`: twilio:audioswitch gives us the types at compile time, while runtime uses only LiveKit's + // bundled fork (binary-identical package/classes) → no duplicate. + compileOnly "com.twilio:audioswitch:$audioswitchVersion" } diff --git a/mobile/plugins/native-call/android/src/main/java/com/bizgaze/connect/nativecall/CallMedia.kt b/mobile/plugins/native-call/android/src/main/java/com/bizgaze/connect/nativecall/CallMedia.kt index 5757715..3e87fbe 100644 --- a/mobile/plugins/native-call/android/src/main/java/com/bizgaze/connect/nativecall/CallMedia.kt +++ b/mobile/plugins/native-call/android/src/main/java/com/bizgaze/connect/nativecall/CallMedia.kt @@ -5,7 +5,7 @@ import android.util.Log import com.twilio.audioswitch.AudioDevice import io.livekit.android.LiveKit import io.livekit.android.LiveKitOverrides -import io.livekit.android.audio.AudioOptions +import io.livekit.android.AudioOptions import io.livekit.android.audio.AudioSwitchHandler import io.livekit.android.room.Room import kotlinx.coroutines.CoroutineScope