Current production versions
| Component | Version | Delivery |
|---|---|---|
| Android native SDK | 3.0.1 | nosmai-sdk-3.0.1.aar from GitHub Releases |
| iOS native SDK | 3.0.0 | NosmaiCameraSDK CocoaPod or nosmai.framework.zip from GitHub Releases |
| Flutter package | 3.0.6 | nosmai_camera_sdk from pub.dev |
| Cloud catalog schema | 2.0.0 | Selected by SDK request options |
Flutter package 3.0.6 is compatible with Android native SDK 3.0.1 and iOS native SDK 3.0.0.
The Flutter, native SDK, and cloud schema versions are independent. A Flutter patch can improve the Dart or bridge layer without requiring a new native binary. Do not infer compatibility only because the version numbers look similar.
Official distribution locations
| Component | Official location |
|---|---|
| Android | github.com/nosmai/camera-sdk-android/releases |
| iOS | github.com/nosmai/camera-sdk-ios/releases |
| iOS CocoaPod | NosmaiCameraSDK |
| Flutter | nosmai_camera_sdk |
| Flutter source and releases | github.com/nosmai/nosmai_camera_sdk_flutter |
Use official release assets. Do not copy a framework or AAR from an unrelated application, old build folder, chat attachment, or unverified mirror.
Platform contract
| Platform | Minimum OS | Architecture | Current limitation |
|---|---|---|---|
| Android | API 21 | arm64-v8a | Other ABIs are not included |
| iOS | iOS 15.0 | Physical arm64 device | No iOS Simulator slice |
| Flutter Android | API 21 | arm64-v8a | Host app supplies the external AAR |
| Flutter iOS | iOS 15.0 | Physical arm64 device | Plugin resolves the CocoaPod |
The current Android native libraries are compatible with 16 KB native page-size requirements.
Use physical devices for final camera, face tracking, recording, streaming, lifecycle, and performance validation.
Verify native downloads
Every native GitHub release includes SHA256SUMS.
Download the binary and checksum file into the same directory, then run:
shasum -a 256 -c SHA256SUMS
Expected Android result:
nosmai-sdk-3.0.1.aar: OK
Expected iOS result:
nosmai.framework.zip: OK
Do not integrate an artifact when checksum verification fails. Download both files again from the same release and contact Nosmai support if the mismatch remains.
Native Android installation
Place the verified AAR in the native application's module:
app/libs/nosmai-sdk-3.0.1.aar
Add it once:
dependencies {
implementation(files("libs/nosmai-sdk-3.0.1.aar"))
}
Do not keep an old AAR under another filename. Gradle can package duplicate Java classes or native libraries even when only one version is called directly.
Native iOS installation
CocoaPods is recommended:
platform :ios, '15.0' target 'CameraApp' do use_frameworks! pod 'NosmaiCameraSDK', '3.0.0' end
Run:
pod install --repo-update
Open the generated .xcworkspace.
For manual integration, verify and unzip nosmai.framework.zip, then embed nosmai.framework with Embed & Sign. Do not keep a manual framework and CocoaPods copy in the same application target.
Flutter installation contract
Add the Dart package:
dependencies: nosmai_camera_sdk: ^3.0.6
Flutter iOS
The plugin depends on NosmaiCameraSDK ~> 3.0.0 and resolves it through CocoaPods. Do not manually copy an iOS framework into the Flutter project.
Flutter Android
The proprietary AAR is intentionally excluded from pub.dev so the package remains small and the commercial binary is distributed through its authorized release.
Download and verify Android native SDK 3.0.1, rename it to nosmai-release.aar, and place it at:
android/app/libs/nosmai-release.aar
Add it to the host app module:
dependencies {
implementation files('libs/nosmai-release.aar')
}
The Flutter plugin uses the native AAR as a compile-only dependency. The consuming Android application must supply it at build and runtime.
Upgrade procedure
Use this sequence for any upgrade:
- Read the native and Flutter release notes.
- Confirm the documented compatibility combination.
- Download and verify new native artifacts.
- Replace the previous Android AAR instead of keeping both.
- Update the iOS pod version or replace the manual framework, not both.
- Update the Flutter package constraint when applicable.
- Run
flutter cleanor the native platform's clean build when binary dependencies change. - Resolve CocoaPods again and inspect
Podfile.lock. - Build from a clean state.
- Test licenses, camera lifecycle, package rules, cloud filters, capture, recording, and streaming.
For Flutter:
flutter clean flutter pub get cd ios pod install --repo-update
Return to the project root before running Flutter build commands.
Detect duplicate or stale native SDKs
Common signs include:
- Android duplicate-class or duplicate-native-library errors.
- An API compiles but fails with
UnsatisfiedLinkErrorat runtime. - iOS reports duplicate framework output or loads an older version.
- Flutter behavior differs between Android and iOS after only one native side was updated.
- A method exists in Dart but is missing from the installed native binary.
Check:
- every Android
libsdirectory - Gradle file dependencies and transitive dependency reports
- Xcode Frameworks, Libraries, and Embedded Content
- CocoaPods
Podfile.lock - manually copied iOS framework folders
- Flutter plugin caches only when diagnosing a stale dependency
Keep exactly one intended native SDK version per application binary.
Compatibility policy
- Patch releases should remain source compatible unless release notes state otherwise.
- Minor releases can add APIs and capabilities while preserving the documented major-version contract.
- Major releases can require application changes.
- A newer Flutter package may require a specific minimum native version.
- Cloud catalog schema changes are documented separately from package versions.
- Published versions and release assets are immutable. A correction is delivered under a new version.
Pin exact native versions in production applications. Flutter applications may use a compatible Dart constraint, but release builds should preserve their resolved dependency lockfiles according to the application's dependency policy.
Production validation after an upgrade
At minimum, verify:
- Valid, invalid, expired, and temporary network license states.
- First camera open, close, reopen, and app relaunch.
- Front and back camera switching.
- Local
filter,effect,beauty_effect, andbackgroundpackages. - Built-in beauty, makeup, face reshape, and color controls.
- Mutual exclusion between built-in controls and AR-slot packages.
- Cloud type tabs, pagination, download, cache, retry, apply, and removal.
- Background None and global clear actions.
- Photo capture and processed video recording.
- Live streaming integration if the application uses it.
- Repeated apply, remove, and reapply cycles.
- Release-mode build with no internal diagnostics or sensitive log output.
Continue with the platform guide for Android, iOS, or Flutter.