Mobbeel for developers

Mobbeel for developers

  • MobbScan
  • MobbID
  • MobbSign
  • Clients
  • FAQ

›Additional configuration

MobbScan Android SDK

  • Configure MobbScan Android SDK
  • 16 KB Page Size Compatibility

Getting Started

  • Getting started with MobbScan
  • Detect and scan a document in two different calls
  • Detect and scan MRZ
  • Detect and scan a PDF417
  • Scanning documents with NFC
  • Error Handling

Additional configuration

  • Configure the detection process
  • Perform face matching with MobbScan
  • Select images returned by a scan
  • Fix scan orientation
  • Record a video while user performs a scan
  • Adding a video step
  • Configure Play Store distribution

MobbScan UI customization

  • Customize MobbScan Default Interfaces
  • Customize MobbScan document scan UI
  • Customize MobbScan MRZ scan UI
  • Customize Unattended Process UI
  • Customize feedback messages

MobbScan-Agent configurations

  • Getting the verification result

Migration Guides

  • Migration to 2.29.x
  • Migration 2.25.x to 2.26.x
  • Migration 2.24.x to 2.25.x
  • Migration to 2.24.x
  • Migration to 2.22.x
  • Migration 2.19.x to 2.21.x
  • Migration 2.18.x to 2.19.x
  • Migration 2.13.x to 2.14.x

Information

  • Changelog
  • API Reference

Configure Play Store distribution

ProGuard / R8 Configuration

When compiling release APKs or Android App Bundles (AAB) with code shrinking enabled (R8 / ProGuard), add the necessary keep rules to prevent obfuscation or stripping of MobbScan SDK interfaces and models.

Add the following rules to your proguard-rules.pro file. Keep the existing rules for your application and its dependencies unless a minified release build verifies they are no longer needed.

Standard ProGuard rules

-keepattributes *Annotation*, Exceptions, Deprecated, Signature, MethodParameters, InnerClasses
-keepparameternames

## Rules for EventBus (2.4.0)
-keepattributes *Annotation*
-keepclassmembers class * {
  @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }

# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
  <init>(java.lang.Throwable);
}

## Rules for Tesseract
-keep class com.googlecode.tesseract.android.TessBaseAPI {
  protected void onProgressValues(int, int, int, int, int, int, int, int, int);
}

## Rules for MobbScan
-dontwarn com.mobbeel.**
-dontwarn okio.mobbeel.**
-dontwarn org.opencv.**
-dontnote org.apache.http.**

-keep class com.mobbeel.** { *; }

## Rules for Gson
-dontwarn sun.misc.**
-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }

# Prevent ProGuard from stripping interface information from Gson adapters
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

## MobbCommons rules
-dontwarn mobbeel.http.**
-dontwarn okio.mobbeel.**
-dontwarn javax.annotation.**
-dontwarn org.conscrypt.**

# A resource is loaded with a relative path so the package of this class must be preserved.
-keepnames class mobbeel.http.internal.publicsuffix.PublicSuffixDatabase

## SpongyCastle rules
-keep class org.spongycastle.crypto.* {*;}
-keep class org.spongycastle.crypto.agreement.** {*;}
-keep class org.spongycastle.crypto.digests.* {*;}
-keep class org.spongycastle.crypto.ec.* {*;}
-keep class org.spongycastle.crypto.encodings.* {*;}
-keep class org.spongycastle.crypto.engines.* {*;}
-keep class org.spongycastle.crypto.macs.* {*;}
-keep class org.spongycastle.crypto.modes.* {*;}
-keep class org.spongycastle.crypto.paddings.* {*;}
-keep class org.spongycastle.crypto.params.* {*;}
-keep class org.spongycastle.crypto.prng.* {*;}
-keep class org.spongycastle.crypto.signers.* {*;}

-keep class org.spongycastle.jcajce.provider.** { *; }
-keep class org.spongycastle.jcajce.provider.digest.** {*;}
-keep class org.spongycastle.jcajce.provider.keystore.** {*;}
-keep class org.spongycastle.jcajce.provider.symmetric.** {*;}
-keep class org.spongycastle.jcajce.spec.* {*;}
-keep class org.spongycastle.jce.** {*;}

## BouncyCastle rules
-keep class org.bouncycastle.crypto.* {*;}
-keep class org.bouncycastle.crypto.agreement.** {*;}
-keep class org.bouncycastle.crypto.digests.* {*;}
-keep class org.bouncycastle.crypto.ec.* {*;}
-keep class org.bouncycastle.crypto.encodings.* {*;}
-keep class org.bouncycastle.crypto.engines.* {*;}
-keep class org.bouncycastle.crypto.macs.* {*;}
-keep class org.bouncycastle.crypto.modes.* {*;}
-keep class org.bouncycastle.crypto.paddings.* {*;}
-keep class org.bouncycastle.crypto.params.* {*;}
-keep class org.bouncycastle.crypto.prng.* {*;}
-keep class org.bouncycastle.crypto.signers.* {*;}

-keep class org.bouncycastle.jcajce.provider.** { *; }
-keep class org.bouncycastle.jcajce.provider.digest.** {*;}
-keep class org.bouncycastle.jcajce.provider.keystore.** {*;}
-keep class org.bouncycastle.jcajce.provider.symmetric.** {*;}
-keep class org.bouncycastle.jcajce.spec.* {*;}
-keep class org.bouncycastle.jce.** {*;}

-dontwarn javax.naming.**
-keep class net.sf.scuba.smartcards.** { public *; }

Video module ProGuard rules

If you integrate the mobbscan-video-android module, also include:

# Twilio Video rules
-keep class tvi.webrtc.** { *; }
-keep class org.webrtc.** { *; }
-keep class com.twilio.video.** { *; }
-keepattributes InnerClasses

NFC module ProGuard rules

If you integrate the mobbscan-nfc-extension-android module, also include:

## NFC rules
-dontwarn de.tsenger.androsmex.**
-dontwarn jj2000.**
-dontwarn java.awt.**
-dontwarn com.fasterxml.jackson.**
-dontwarn javax.**

Architectures and ABI Filters

MobbScan Android SDK binaries are aligned for 16 KB page sizes across all four standard Android architectures. Mobbeel-built native libraries use NDK r29; the Twilio Video 7.10.0 native library is also verified for 16 KB alignment:

  • arm64-v8a
  • armeabi-v7a
  • x86
  • x86_64

Reducing APK size with ABI filters

If your app targets mobile devices exclusively and you want to reduce APK size, you can filter for ARM architectures in your build.gradle:

android {
    defaultConfig {
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }
    }
}

Or configure per-buildType / per-flavor filters:

android {
    buildTypes {
        debug {
            debuggable true
            minifyEnabled false
            ndk {
                abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
            }
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            ndk {
                abiFilters 'armeabi-v7a', 'arm64-v8a'
            }
        }
    }
}
← Adding a video stepCustomize MobbScan Default Interfaces →
  • ProGuard / R8 Configuration
    • Standard ProGuard rules
    • Video module ProGuard rules
    • NFC module ProGuard rules
  • Architectures and ABI Filters
    • Reducing APK size with ABI filters
Mobbeel for developers
Product Documentation
MobbIDMobbScanMobbSign
Connect
LinkedInFacebookX
More
FAQContact Us
Mobbeel Solutions SL
Copyright © 2026 Mobbeel Solutions SL