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:

FolderDescription
ChipDnaMobileJavaDemoExample client written in Java, including source code
ChipDnaMobileKotlinDemoExample client written in Kotlin, including source code
docGenerated API documentation
libs/liteSDK binaries for the Lite flavour
libs/fullSDK 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.

FlavourJARMinimum AndroidTap to PayExtra dependencies
LiteChipDnaMobile-lite.jarAndroid 10 (API 29)No
FullChipDnaMobile.jarAndroid 12 (API 31)YesCloud 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.
  • BLUETOOTH and BLUETOOTH_ADMIN — connect to Bluetooth devices.
  • BLUETOOTH_SCAN and BLUETOOTH_CONNECT — required on Android 12+ (API 31+) for Bluetooth operations.
  • ACCESS_COARSE_LOCATION and ACCESS_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.telephony set to false — 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.