android defaultConfig ndk abiFilters += "arm64-v8a" sourceSets getByName("main") jniLibs.srcDirs("src/androidMain/jniLibs")
import kotlinx.cinterop.* import platform.posix.dlopen actual fun loadVlcLibraries() // For iOS, use MobileVLCKit (static lib) instead of .so // .so is Android-specific; iOS uses .dylib or .framework kmp external codec libvlcjni.so cpu arm64-v8a
# Clone VLC Android source git clone https://code.videolan.org/videolan/vlc-android.git cd vlc-android ./compile.sh -a arm64-v8a Output located at: vlc-android/libvlc/jni/libs/arm64-v8a/libvlcjni.so Loading the Library in KMP Shared Code Use
For KMP, ensure the Android target uses androidTarget() and not android() . The jniLibs folder must be correctly merged during the final APK/AAB build. 4. Loading the Library in KMP Shared Code Use platform-specific expects/actuals to load libvlcjni.so : 4.1 Common Kotlin ( commonMain ) expect fun loadVlcLibraries() 4.2 Android Actual ( androidMain ) import android.os.Build import java.io.File actual fun loadVlcLibraries() System.loadLibrary("vlcjni") // Additional setup for VLC context kmp external codec libvlcjni.so cpu arm64-v8a
src/ └── androidMain/ └── jniLibs/ └── arm64-v8a/ ├── libvlcjni.so ├── libvlc.so └── (other dependent .so files) In your build.gradle.kts (Android target):
Stable streaming performance, simple management, and tools crafted for modern online radios.
Optimized infrastructure, low latency and CDN for smooth listening everywhere.
Schedule playlists, jingles and recurring shows in just a few clicks.
Manage streams, DJs, mounts, podcasts and analytics from a clean, modern interface.
HTTPS streaming, optional geo-blocking and integrated DMCA alert tools.
Track listeners, countries, audience peaks and performance of your tracks.
Radio specialists who reply fast and efficiently — 24/7.
android defaultConfig ndk abiFilters += "arm64-v8a" sourceSets getByName("main") jniLibs.srcDirs("src/androidMain/jniLibs")
import kotlinx.cinterop.* import platform.posix.dlopen actual fun loadVlcLibraries() // For iOS, use MobileVLCKit (static lib) instead of .so // .so is Android-specific; iOS uses .dylib or .framework
# Clone VLC Android source git clone https://code.videolan.org/videolan/vlc-android.git cd vlc-android ./compile.sh -a arm64-v8a Output located at: vlc-android/libvlc/jni/libs/arm64-v8a/libvlcjni.so
For KMP, ensure the Android target uses androidTarget() and not android() . The jniLibs folder must be correctly merged during the final APK/AAB build. 4. Loading the Library in KMP Shared Code Use platform-specific expects/actuals to load libvlcjni.so : 4.1 Common Kotlin ( commonMain ) expect fun loadVlcLibraries() 4.2 Android Actual ( androidMain ) import android.os.Build import java.io.File actual fun loadVlcLibraries() System.loadLibrary("vlcjni") // Additional setup for VLC context
src/ └── androidMain/ └── jniLibs/ └── arm64-v8a/ ├── libvlcjni.so ├── libvlc.so └── (other dependent .so files) In your build.gradle.kts (Android target):