Requirements
Platform Requirementsโ
| Requirement | Version |
|---|---|
| iOS | 15.0+ |
| Xcode | 15.0+ |
| Swift | 5.9+ |
| NCKit (recommended) | 1.2.1+ |
| Device architecture | arm64 |
| Simulator architectures | arm64, x86_64 (via ios-arm64_x86_64-simulator) |
From NCKit 1.2.1, the XCFramework includes an ios-arm64_x86_64-simulator slice. Intel Mac simulators run natively on x86_64 without Rosetta. Use 1.2.1 or newer โ see v1.2.1 changelog.
| Requirement | Value |
|---|---|
| Android | API 26 (Android 8.0 Oreo) |
| compileSdk | 36 |
| Kotlin | 2.4.10 (AGP 9 built-in Kotlin) |
| Android Gradle Plugin | 9.3.1 |
| Gradle Wrapper | 9.6.1 |
| JDK | 17+ (including JVM 25) |
| Library bytecode | Java 17 |
| Architectures | arm64-v8a, armeabi-v7a, x86_64 |
| NCKit (recommended) | 1.1.2 |
Use an x86_64 or arm64-v8a system image. NCKit ships native .so libraries for all three ABIs listed above.
1.1.2 is a build and publishing toolchain update. Public API and runtime behavior are unchanged from 1.1.1. Apps can keep minSdk 26 and a Java 17 bytecode target. See v1.1.2 changelog.
Architecture Detailsโ
NCKit.xcframework/ # 1.2.1+
โโโ ios-arm64/ # Physical iOS devices (iPhone, iPad)
โ โโโ NCKit.framework/
โโโ ios-arm64_x86_64-simulator/ # iOS Simulator (Apple Silicon + Intel)
โโโ NCKit.framework/
The ios-arm64_x86_64-simulator slice is a universal simulator binary:
| Simulator host | Architecture | Supported (1.2.1+) |
|---|---|---|
| Apple Silicon Mac | arm64 | Yes |
| Intel Mac | x86_64 | Yes |
Releases before 1.2.1 shipped ios-arm64-simulator only. Intel Mac simulators required Rosetta or a physical device. See Simulator troubleshooting.
NCKit AAR (`com.5exceptions:nckit`)
โโโ jniLibs/
โ โโโ arm64-v8a/libdfn3kit_jni.so
โ โโโ armeabi-v7a/libdfn3kit_jni.so
โ โโโ x86_64/libdfn3kit_jni.so
โโโ assets/
โโโ DeepFilterNet3_onnx.dfn3 # bundled model (extracted at runtime)
Dependenciesโ
NCKit has no external Swift dependencies. The following Apple frameworks are used internally:
| Framework | Usage |
|---|---|
AVFoundation | Audio file decoding, format conversion, AVAudioConverter |
Accelerate | SIMD math operations in the DSP pipeline |
Foundation | File system, Bundle, URL handling |
These are linked automatically via the podspec and xcframework metadata. No manual linking required for SPM or CocoaPods users.
NCKit has no transitive Maven dependencies. Runtime use of Android system APIs only:
| API | Usage |
|---|---|
MediaCodec / MediaExtractor | Decode and resample input files |
android.content.Context | Extract bundled model from assets |
No extra permissions beyond what your app already needs for file I/O and (if applicable) microphone access.
Model Fileโ
NCKit bundles NCKit_model.tar.gz inside NCKit.xcframework. The model is approximately 8.5 MB and is embedded in both device and simulator slices.
NCKitModelLocator.modelTarGzURL() handles extracting the model to a writable path at runtime.
The model (DeepFilterNet3_onnx.tar.gz, ~7.6 MB) ships inside the AAR as DeepFilterNet3_onnx.dfn3 (.dfn3 avoids Android stripping .gz assets).
NCKitModelLocator.modelFile(context) copies it to the app cache on first use.
See How to Use.