- Download the Zoom macOS SDK from the Zoom App Marketplace.
- Create a ZoomSDK/macOS/ folder and extract the SDK contents into it.
Example structure:
<YourApp>/
├── macos/
├── ...
└── ZoomSDK/
└── macOS/
├── Plugins/
│ └── ...
└── ZoomSDK/
└── ...Zoom SDK binaries (frameworks, dylibs, etc.) come pre-signed by Zoom, but macOS requires all binaries to be signed using your own developer identity.
To comply with this, you must re-sign all Zoom SDK files using your own code signing identity.
Run this to list your valid signing identities:
security find-identity -v -p codesigningExample output:
1) aaa "Apple Development: aaa (aaa)"
2) bbb "Apple Development: bbb (bbb)"
2 valid identities foundReplace with your identity and run this from the project root:
CODE_SIGN_IDENTITY="Apple Development: bbb (bbb)"
FRAMEWORKS_PATH="./ZoomSDK/macOS/ZoomSDK"
find "$FRAMEWORKS_PATH" -name "*.framework" -exec codesign --force --deep --sign "${CODE_SIGN_IDENTITY}" {} \;
find "$FRAMEWORKS_PATH" -name "*.dylib" -exec codesign --force --sign "${CODE_SIGN_IDENTITY}" {} \;
find "$FRAMEWORKS_PATH" -name "*.bundle" -exec codesign --force --sign "${CODE_SIGN_IDENTITY}" {} \;
find "$FRAMEWORKS_PATH" -name "*.app" -exec codesign --force --sign "${CODE_SIGN_IDENTITY}" {} \;First, make sure to run pod install to generate the Pod targets:
cd macos
pod installThen, open the macos project in Xcode:
<YourApp>/macosThis will allow you to access both your app target and the plugin target in Xcode.
- Set Minimum macOS Version to 10.9 or higher
Note: Per Zoom SDK requirements
-
Team & Signing Certificate
- Set your Team and Signing Certificate
- Must match the certificate used when resigning the SDK
-
App Sandbox (Debug & Profile)
- Network:
- ✅ Incoming Connections (Server)
- ✅ Outgoing Connections (Client)
- Hardware:
- ✅ Camera
- ✅ Audio Input
- Network:
-
App Sandbox (Release)
- Network:
- ✅ Outgoing Connections (Client)
- Hardware:
- ✅ Camera
- ✅ Audio Input
- Network:
-
Framework Search Paths:
$(PROJECT_DIR)/../ZoomSDK/macOS/ZoomSDK -
Library Search Paths:
$(PROJECT_DIR)/../ZoomSDK/macOS/ZoomSDK
-
Copy Files (ZoomAudioDevice)
- Add new Copy Files Phase
- Set Destination to
Plugins and Foundation Extensions - Add
ZoomAudioDevice.driver
-
Copy Files (Zoom Frameworks)
- Add another Copy Files Phase
- Set Destination to
Frameworks - Select all files inside
ZoomSDK/macOS/ZoomSDK
- Framework Search Paths
Debug, Profile, Release all add:
${PODS_ROOT}/../../ZoomSDK/macOS/ZoomSDK
Note: When you run the flutter app, flutter might run
pod install. Your Pod configuration might reset. All you need to do is repeat this step.
Edit macos/Runner/Info.plist and add the following:
<key>NSCameraUsageDescription</key>
<string>In order for participants to see you, requires access to your camera.</string>
<key>NSMicrophoneUsageDescription</key>
<string>In order to speak to participants, requires access to your microphone.</string>
<key>NSAppleEventsUsageDescription</key>
<string>Required for screen sharing functionality.</string>✅ These are required by Zoom SDK for video/audio/screen sharing.
After setup, run your Flutter app, you should be able to launch without errors.:
flutter run
⚠️ If you hit code signing errors, double-check:
- Your Team and Signing Certificate match the one used to sign the SDK
- All SDK files are properly signed using the script
⚠️ If you encounter animport ZoomSDKerror, it’s likely because Flutter reset the Pod configuration during a clean or re-build.
To fix this, re-check your Pod Target Configuration. You might need to redo this part.