Android Paper Installation
Requirements
| Requirement | Version |
|---|---|
| Android Min SDK | 23+ (Android 6.0+) |
| Android Compile SDK | 36+ |
| Java | 17+ |
| Architecture | armeabi-v7a, arm64-v8a |
| Camera | 720p+ |
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
}
}
}