Skip to main content
Version: 5.x.x

Known Issues - Flutter

This page lists known issues in Flutter SDK 5.x and how to work around them.

Issue : 1​

The SDK does not run on x86 and x86_64 Android emulators.

Solution​

The SDK ships its native libraries for arm64-v8a and armeabi-v7a. Test on an ARM device, or on an emulator with an arm64-v8a system image.

To keep your app off devices where the SDK cannot load, build it for arm64-v8a and armeabi-v7a only. Add an ABI filter to defaultConfig:

android/app/build.gradle.kts
android {
defaultConfig {
ndk {
abiFilters += listOf("arm64-v8a", "armeabi-v7a")
}
}
}

In a Groovy android/app/build.gradle, write ndk { abiFilters 'arm64-v8a', 'armeabi-v7a' } instead. Then add this line to android/gradle.properties. It needs Flutter 3.41 or later. Without it, Flutter adds its own ABIs to the filter and yours has no effect.

android/gradle.properties
disable-abi-filtering=true

Issue : 2​

Your app does not run in the iOS Simulator on an Intel Mac.

Solution​

Run the app on an iPhone or iPad, or in the Simulator on a Mac with Apple silicon.

If your Podfile excludes arm64 for the Simulator (EXCLUDED_ARCHS[sdk=iphonesimulator*]), remove that exclusion. Otherwise the app does not build for the Simulator.

Issue : 3​

The iOS build fails with errors about the videosdk plugin or the FlutterFramework package.

Solution​

The SDK's iOS plugin ships as a Swift Package. It needs Flutter 3.41 or later, with Swift Package Manager turned on for your project. Turn it on by adding config: under the existing flutter: section of your app's pubspec.yaml:

pubspec.yaml
flutter:
config:
enable-swift-package-manager: true

Or run flutter config --enable-swift-package-manager on every machine that builds your app, including CI. Then run flutter clean and build again.

Issue : 4​

On Android, the camera and microphone stay off after you join, and Events.error reports 3017 (camera) or 3018 (microphone).

Solution​

The SDK does not ask the user for camera and microphone permission on Android. Ask with VideoSDK.requestPermissions() before you call join(), and before you call changeMode(Mode.SEND_AND_RECV).

Future<void> joinRoom(Room room) async {
await VideoSDK.requestPermissions();
await room.join();
}

Issue : 5​

Your app also depends on videosdk_webrtc or videosdk_media_effects.

Solution​

Remove both packages from your pubspec.yaml, together with their imports. The SDK no longer uses videosdk_webrtc, and on iOS it clashes with classes inside the SDK. videosdk_media_effects depends on videosdk_webrtc.

RTCVideoView, RTCVideoRenderer, RTCVideoViewObjectFit and MediaDeviceInfo now come from package:videosdk/videosdk.dart. For noise suppression, pass noiseConfig to VideoSDK.createMicrophoneAudioTrack(). For background blur, use VideoSDK.setVideoEffects(). The Migration Guide covers the other changes.

Issue : 6​

The Android build fails with script compilation errors in the build.gradle.kts of permission_handler_android, such as Unresolved reference: compilerOptions or Unresolved reference 'compilerOptions'.

Solution​

permission_handler 13 brings in permission_handler_android 14, which builds only with Android Gradle Plugin 9. Pin permission_handler to version 12, then run flutter clean and build again.

flutter pub add permission_handler:^12.0.1

Issue : 7​

The SDK works in a debug build of your Android app, but not in a release build.

Solution​

Flutter shrinks every Android release build with R8, which removes or renames the videosdk.org classes that the SDK loads by name. Add these rules to android/app/proguard-rules.pro, and create the file if your app does not have one:

android/app/proguard-rules.pro
-keep class videosdk.org.** { *; }
-dontwarn videosdk.org.**

Keep the -dontwarn line, because the keep rule alone fails the build with a missing-class error.

Issue : 8​

On iOS, VideoSDK.requestPermissions() and VideoSDK.checkPermissions() report the camera or the microphone as not granted, even after the user allows access.

Solution​

The iOS build turns camera and microphone permission on only when your app's Info.plist has the NSCameraUsageDescription and NSMicrophoneUsageDescription keys. Add both keys, as shown in Integrate Flutter SDK. If you added them after your first iOS build, delete Xcode's DerivedData folder once, so that the next build picks them up.

Got a Question? Ask us on discord