Prerequisites
- An Android application with minimum API 24 or later
- Android compile SDK 35 for the current integration baseline
- Java 11 bytecode compatibility
- A physical Android device whose ABI list contains
arm64-v8aorarmeabi-v7a - A Nosmai license key bound to the application's exact application ID
Requirement details
- AAR is the Android library file added to the app.
- API level identifies an Android version and the system features available to the app. Minimum API 24 means Android 7.0 is the oldest supported Android version for this native SDK release.
- Compile SDK 35 means the project builds against Android's API 35 tools. It does not mean every user must run Android 15.
- ABI describes native processor compatibility. Nosmai Effects SDK
3.0.5supportsarm64-v8afor compatible 64-bit ARM devices andarmeabi-v7afor compatible 32-bit ARM devices. - Java 11 compatibility is a project build setting required by this release.
- Android emulators using
x86orx86_64are not supported by the current AAR. Use a supported physical ARM device for camera and runtime verification.
Download and verify the AAR
Create the application library directory:
mkdir -p app/libs
Download the native SDK and checksum file from the official Android v3.0.5 release.
A checksum is a digital fingerprint used to confirm that the downloaded file is complete and unchanged. SHA-256 is the checksum algorithm used for this release.
curl -L \ -o app/libs/nosmai-sdk-3.0.5.aar \ https://github.com/nosmai/nosmai_effects_sdk_android/releases/download/v3.0.5/nosmai-sdk-3.0.5.aar curl -L \ -o app/libs/SHA256SUMS \ https://github.com/nosmai/nosmai_effects_sdk_android/releases/download/v3.0.5/SHA256SUMS
Verify the downloaded AAR from the directory containing both files:
cd app/libs shasum -a 256 -c SHA256SUMS cd ../..
A successful verification prints:
nosmai-sdk-3.0.5.aar: OK
The expected SHA-256 checksum for nosmai-sdk-3.0.5.aar is:
c1474da6106926ab1fb152e404a02666456da7bed92c2aefa6e275b356b2f58f
Do not integrate, rename, or distribute an AAR that fails checksum verification. Download the artifact again from the official release if the calculated checksum does not match.
Configure the app module
Add the verified AAR to the application module and configure the supported Android requirements.
For Kotlin DSL (build.gradle.kts):
android {
compileSdk = 35
defaultConfig {
minSdk = 24
ndk {
abiFilters += listOf("arm64-v8a", "armeabi-v7a")
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
}
dependencies {
implementation(files("libs/nosmai-sdk-3.0.5.aar"))
}
For Groovy DSL (build.gradle):
android {
compileSdkVersion 35
defaultConfig {
minSdkVersion 24
ndk {
abiFilters 'arm64-v8a', 'armeabi-v7a'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
}
dependencies {
implementation files('libs/nosmai-sdk-3.0.5.aar')
}
The AAR contains native libraries for both supported Android ABIs. If the application uses an Android App Bundle, Google Play delivers the matching ABI to each compatible device instead of delivering both native architectures to every user.
The AAR also contains consumer R8 rules for the public API, JNI entry points, frame callbacks, and Cloud Filter response types. Keep the application's normal release minification configuration. When adding custom shrinking or obfuscation rules, inspect the merged R8 configuration and verify the signed release build on both supported ABI types where possible.
Add Android permissions
Add the permissions required by the application features:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<application
android:allowBackup="true"
android:label="CameraApp"
android:theme="@style/Theme.CameraApp" />
</manifest>
Request CAMERA permission at runtime before opening the Camera2 source.
Request RECORD_AUDIO permission only when the application records video with audio. The permission is not required for a camera preview without audio recording.
Internet access is used for license verification, Cloud Filter catalog requests, and Cloud Filter downloads. Previously downloaded effects may remain available through SDK-managed storage, subject to license state and operating-system cache behavior.
AAR size
The 3.0.5 AAR is 59,140,732 bytes, approximately 56.4 MiB. It contains native libraries for both arm64-v8a and armeabi-v7a.
The AAR size is not the same as the final Play Store download increase. Android App Bundle ABI delivery, store compression, existing shared dependencies, resources, and symbols affect the size delivered to each device.
Build a signed release Android App Bundle and inspect its device-specific download and installed sizes in Google Play Console before publishing.
Verify the installation
Add a version log after application startup:
import android.util.Log;
import com.nosmai.effect.api.NosmaiSDK;
Log.i("CameraApp", "Nosmai version: " + NosmaiSDK.getVersion());
Build and install the application on a physical Android device that supports arm64-v8a or armeabi-v7a and runs Android API 24 or later.
A successful build and launch showing version 3.0.5 confirms that the Java classes and matching native libraries are packaged correctly.
Continue to the Android quickstart to initialize the SDK, connect the Camera2 source, display the processed preview, and apply skin smoothing.
Common errors
| Error | Cause | Fix |
|---|---|---|
Could not find com.nosmai or package com.nosmai.effect.api does not exist | The application module does not reference the AAR, or the file is stored at a different path | Place nosmai-sdk-3.0.5.aar in app/libs and add implementation(files("libs/nosmai-sdk-3.0.5.aar")) |
INSTALL_FAILED_NO_MATCHING_ABIS | The target device or packaged application does not contain a compatible arm64-v8a or armeabi-v7a native library | Use a supported physical ARM device and retain at least one supported ABI in abiFilters |
minSdkVersion compatibility error | The application is configured with a minimum Android API lower than the SDK's supported baseline | Set the application module's minimum SDK to API 24 or later |
UnsatisfiedLinkError | The AAR is missing, corrupted, duplicated, incorrectly packaged, or its native libraries were removed | Verify the SHA-256 checksum, keep one AAR copy, inspect the packaged lib directories, and review custom R8 or packaging rules |
Duplicate class or duplicate native library error | More than one version or copy of the Nosmai AAR is included | Remove older AARs and keep exactly one verified 3.0.5 AAR in the application dependency graph |
License key cannot be null or empty | The application configuration did not supply a Nosmai license key | Load the app-bound key before calling NosmaiSDK.initialize |
| License verification fails with an application ID mismatch | The installed application's final applicationId does not match the identity registered in Nosmai Console | Register the exact application ID used by the signed build and use the Android key created for that identity |
Cleartext HTTP traffic not permitted | The application is loading a development asset or effect package over an insecure HTTP connection | Use HTTPS, or add an explicit development-only network security configuration without weakening the production application |
| Camera preview does not start | Camera permission is missing, another component owns the camera, or processing started before initialization completed | Grant camera permission, release any existing camera controller, wait for successful initialization, and then start the Camera2 and Nosmai processing pipeline |
| App installs on one device but not another | The second device uses an unsupported ABI, Android version, or emulator architecture | Confirm that the device runs API 24 or later and reports arm64-v8a or armeabi-v7a in its supported ABI list |
Next steps
- Add real-time camera effects to an Android app
- Get and apply a license key
- Check Android capability support
- Apply a beauty filter on Android