flutter_zoom_videosdk 2.5.0 fails to build on both iOS simulator (Apple Silicon) and Android (D8 Record desugaring)

Hi team,

Thanks for the 2.5.0 release — we appreciate the work that goes into shipping these updates. While upgrading from 2.3.0, we ran into two build-time issues that we believe are bugs (not configuration problems on our side), so we wanted to flag them. Happy to provide more context, logs, or a reproduction repo if helpful.

Environment

  • Flutter: 3.35.3 (stable)
  • flutter_zoom_videosdk: 2.5.0 (worked fine on 2.3.0)
  • Host: macOS on Apple Silicon (arm64)
  • iOS target: iPhone 16 simulator (iOS 18, arm64)
  • Android target: sdk gphone64 arm64 emulator, minSdk 28, compileSdk 36
  • AGP: tried 8.9.1 and 8.13.0
  • Gradle: 8.13
  • coreLibraryDesugaringEnabled = true
  • desugar_jdk_libs: tried 2.1.4 and 2.1.5

Issue 1: iOS simulator build fails on Apple Silicon Mac (podspec out of sync with the new architecture support)

'ZoomVideoSDK/ZoomVideoSDK.h' file not found in plugin sources.

We understand from the 2.5.0 changelog that dropping x86 support on the iOS simulator is intentional. The problem is that the Flutter plugin’s podspec has not been updated to match this new reality — it still excludes arm64 for the simulator, which after 2.5.0 is the only arch the SDK supports there.

flutter_zoom_videosdk-2.5.0/ios/flutter_zoom_videosdk.podspec:

s.pod_target_xcconfig = {
  'DEFINES_MODULE' => 'YES',
  'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386 arm64'   # <-- needs to be 'i386 x86_64' for 2.5.0
}

Because arm64 is excluded, the XCFramework copy script’s select_slice cannot match any slice on Apple Silicon Macs (where the simulator runs as arm64), so ZoomVideoSDK.framework is never installed and the header-not-found error occurs.

Additionally, several plugin files use the wrong-case module name <ZoomVideoSdk/ZoomVideoSDK.h> (lowercase Sdk):

  • Classes/JSONConvert.h
  • Classes/FlutterZoomVideoSdkWhiteboardView.h
  • Classes/FlutterZoomVideoSdkPhoneHelper.h

(They build by luck on case-insensitive file systems but break Clang modules in some configurations.)

Suggested fix

  • Update EXCLUDED_ARCHS[sdk=iphonesimulator*] to 'i386 x86_64' so that the new arm64-only simulator slice is selected on Apple Silicon Macs.
  • Unify all framework imports to <ZoomVideoSDK/ZoomVideoSDK.h> (capital SDK).

Local workaround

In Podfile’s post_install:

config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'i386 x86_64'

Issue 2: Android build fails on mergeExtDexDebug (Record desugaring)

ERROR: D8: Invalid build configuration. Attempt to create a global synthetic
for 'Record desugaring' without a global-synthetics consumer.

Failed to transform zoomvideosdk-whiteboard-2.5.0.aar
(us.zoom.videosdk:zoomvideosdk-whiteboard:2.5.0)
to match attributes { artifactType=android-dex,
  dexing-component-attributes=ComponentSpecificParameters(
    minSdkVersion=28, debuggable=true,
    enableCoreLibraryDesugaring=true,
    enableGlobalSynthetics=false,            # <-- the AGP per-artifact dexing transform
    enableDesugaring=true,
    needsClasspath=false, useFullClasspath=false, ...
  ),
  ...
}
> Execution failed for DexingNoClasspathTransform: jetified-zoomvideosdk-whiteboard-2.5.0-runtime.jar
> Error while dexing.

The zoomvideosdk-whiteboard:2.5.0 AAR contains Java Records. AGP’s per-artifact DexingNoClasspathTransform is invoked with enableGlobalSynthetics=false, so D8 cannot desugar the Records (it needs to emit a global synthetic but has no consumer).

We tried, all unsuccessful:

  • android.useFullClasspathForDexingTransform=true
  • desugar_jdk_libs: 2.1.4 → 2.1.5
  • compileSdk 35 → 36
  • AGP 8.9.1 → 8.13.0

The only thing that works is downgrading to flutter_zoom_videosdk: 2.3.0.

Suggested fix

  • Lower the source language level of zoomvideosdk-whiteboard (and any other module that uses Records) so the AAR doesn’t ship Record classes, or
  • Pre-desugar Records inside the AAR before publishing.

Steps to reproduce

  1. New Flutter project (or existing project) with minSdk 28, coreLibraryDesugaringEnabled true.
  2. Add flutter_zoom_videosdk: 2.5.0 to pubspec.yaml.
  3. flutter run on iPhone 16 simulator (Apple Silicon Mac) and flutter run on Android emulator with compileSdk 36 and AGP 8.x.

Severity

Blocker — 2.5.0 is unusable for app developers on Apple Silicon Macs (the standard macOS dev environment in 2026) and for any Android project that uses core library desugaring (most modern Flutter apps do).

We’re pinning to 2.3.x for now. Please advise if there’s a recommended workaround beyond what we listed.

Hey, I updated the quickstart app GitHub - zoom/videosdk-flutter-quickstart: This is a sample application that demonstrates how to use the Zoom Video SDK in a Flutter app · GitHub to v2.5.0 and it works flawlessly on both a physical Android and iOS device. The emulator can have issues with OpenGL. Can you test out this app and see if it works on your setup with physical devices please?
You can look at the config for the Android setup in videosdk-flutter-quickstart/android/app/build.gradle at main · zoom/videosdk-flutter-quickstart · GitHub for example.

Thanks for the detailed report — this is really well broken down and helpful.

The iOS simulator issue on Apple Silicon especially sounds like a clear podspec + architecture mismatch after dropping x86 support, so updating the excluded architectures and fixing the framework import casing does seem necessary for 2.5.0 compatibility.

On the Android side, the Record desugaring / D8 global synthetics error looks like a packaging-level issue in the whiteboard AAR rather than a project configuration problem, since multiple AGP + desugar combinations were already tested without success.

Pinning back to 2.3.x as a temporary workaround makes sense until there’s a proper SDK fix or republished AAR. Hopefully the maintainers can address both the podspec alignment and Java Records compatibility in the next patch release.