Skip to main content

Android Paper Installation

Requirements

RequirementVersion
Android Min SDK23+ (Android 6.0+)
Android Compile SDK36+
Java17+
Architecturearmeabi-v7a, arm64-v8a
Camera720p+

1. Add the Maven Repository

Ensure mavenCentral() is included in your settings.gradle (or build.gradle) repositories block:

repositories {
// ...
mavenCentral()
}

2. Add Dependencies

Add the BOM and required modules to your app's build.gradle:

dependencies {
implementation(platform("com.microblink.blinkreceipt:blinkreceipt-bom:1.8.7"))

implementation("com.microblink.blinkreceipt:blinkreceipt-core")
implementation("com.microblink.blinkreceipt:blinkreceipt-recognizer")
}

The BOM manages version alignment across all BlinkReceipt modules — you don't need to specify individual versions.

3. R8 / ProGuard Rules

Add the following keep rules to your ProGuard configuration.

Retrofit

-keepattributes Signature, InnerClasses, EnclosingMethod
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
-keepclassmembers,allowshrinking,allowobfuscation interface * {
@retrofit2.http.* <methods>;
}
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn javax.annotation.**
-dontwarn kotlin.Unit
-dontwarn retrofit2.KotlinExtensions
-dontwarn retrofit2.KotlinExtensions$*
-if interface * { @retrofit2.http.* <methods>; }
-keep,allowobfuscation interface <1>

OkIO

-dontwarn org.codehaus.mojo.animal_sniffer.*

OkHttp

-dontwarn javax.annotation.**
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
-dontwarn org.codehaus.mojo.animal_sniffer.*
-dontwarn okhttp3.internal.platform.ConscryptPlatform

4. Initialization

The SDK initializes automatically via androidx.startup. No code changes are needed for standard setups.

To disable auto-initialization and initialize manually, add the following to AndroidManifest.xml:

<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data
android:name="com.microblink.internal.ReceiptSdkInitializer"
android:value="androidx.startup"
tools:node="remove" />
</provider>

Then initialize manually from your Application class:

@Override
public void onCreate() {
super.onCreate();
BlinkReceiptSdk.initialize(context);
}

And terminate on app exit:

@Override
public void onTerminate() {
BlinkReceiptSdk.terminate();
super.onTerminate();
}

If your app uses a custom WorkManager configuration, see WorkManager Integration for additional setup steps.

5. Processor Architecture

BlinkReceipt ships with armeabi-v7a and arm64-v8a native binaries. To minimize APK size, distribute your app via Android App Bundle, which lets Google Play serve the correct ABI per device.

If you need APK splits instead, configure them in build.gradle:

android {
splits {
abi {
enable true
reset()
include 'arm64-v8a'
universalApk true
}
}
}