Platform-specific requirements
This page covers the Android build and project requirements specific to integrating with Ingenico Axium SmartPOS devices via the NMI Payment Device SDK for Android.
For general Android SDK reference shared across all PIN pads, see the shared SDK guide.
SDK Package Contents
The Payment Device SDK for Android is supplied as a .zip archive containing:
| Folder | Description |
|---|---|
ChipDnaMobileJavaDemo | Example client written in Java, including source code |
ChipDnaMobileKotlinDemo | Example client written in Kotlin, including source code |
doc | Generated API documentation |
libs/lite | SDK binaries for the Lite flavour |
libs/full | SDK binaries for the Full flavour |
Android SDK Flavours
The SDK ships in two flavours. Choose one based on your integration's requirements.
Do not include both flavours in the same project. When SmartPOS Integration is enabled at runtime via
IsSmartPosIntegration = TRUE, all other PIN pad devices become unavailable to the SDK regardless of flavour.
| Flavour | JAR | Minimum Android | Tap to Pay | Extra dependencies |
|---|---|---|---|---|
| Lite | ChipDnaMobile-lite.jar | Android 10 (API 29) | No | — |
| Full | ChipDnaMobile.jar | Android 12 (API 31) | Yes | Cloud Commerce SDK |
The Lite flavour is recommended for SmartPOS integrations. It has the lower Android minimum, no Tap to Pay dependencies you don't need, and a smaller binary footprint. Choose Full only if the same application also needs to drive Tap to Pay on the host mobile device.
Android Version Requirements
Minimum supported Android version depends on the flavour selected:
- Lite — Android 10 (API 29) or above.
- Full — Android 12 (API 31) or above.
Set the corresponding minSdkVersion in your build.gradle.
Required Permissions
The following permissions must be declared in your application's AndroidManifest.xml:
READ_PHONE_STATE— read-only access to the phone state, used to obtain a unique identifier for the mobile device.BLUETOOTHandBLUETOOTH_ADMIN— connect to Bluetooth devices.BLUETOOTH_SCANandBLUETOOTH_CONNECT— required on Android 12+ (API 31+) for Bluetooth operations.ACCESS_COARSE_LOCATIONandACCESS_FINE_LOCATION— required for Bluetooth Low Energy scanning on Android 6+ / Android 11+ respectively.INTERNET— open network sockets to the NMI gateway.
Also declare the following hardware features:
android.hardware.telephonyset tofalse— prevents devices without telephony from being filtered out on Google Play.
Gradle Dependencies
Add the following to your application's build.gradle dependencies block:
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.core:core-ktx:1.8.0'
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.8.0'
implementation 'net.zetetic:sqlcipher-android:4.7.2@aar'
implementation 'androidx.sqlite:sqlite:2.1.0'
implementation 'com.jakewharton.timber:timber:4.7.1'
For Kotlin setup, see the official guide: developer.android.com/kotlin/add-kotlin.
SQLCipher
SQLCipher is the encrypted SQLite extension used by the SDK. The default Android SQLite libraries cannot be used in the same application as the SDK, as this can cause unexpected behaviour. The SDK requires a non-empty password during initialisation (ParameterKeys.Password); your application can reuse the same SQLCipher library for its own storage with any password — including an empty one for unencrypted use.
The SDK uses SQLCipher 4.7.2 on Android — declared via the Gradle dependency above. Ensure no other SQLCipher version is pulled in transitively.
Obfuscation
The Payment Device SDK for Android is already obfuscated. Running the SDK binaries through secondary obfuscation can cause incorrect operation, including loss of data. Exclude the SDK JARs from ProGuard / R8.
Example ProGuard configuration excluding the SDK binaries:
-keep class net.sqlcipher.** { *; }
-keep class net.sqlcipher.database.* { *; }
-libraryjars /libs/ChipDnaMobile-lite.jar
-libraryjars /libs/CardEaseXMLClient.jar
-keep class com.creditcall.** {
*;
}
If you're using the Full flavour, replace ChipDnaMobile-lite.jar with ChipDnaMobile.jar and add the Cloud Commerce SDK JARs to the -libraryjars list.
