Reader SDK Documents
Breadcrumbs

Android v3.0.0

1. Migration Guide

1.1. Java and Kotlin Target Version

  • Changed:

    • sourceCompatibility: 1.8 → 17

    • targetCompatibility: 1.8 → 17

    • kotlinOptions.jvmTarget: 1.8 → 17

  • Developer Action:
    Ensure your app module also compiles with Java 17 and uses Kotlin jvmTarget = "17".
    Example:

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = "17"
    }
    
    
  • Impact Analysis:

    • Minimum Gradle/AGP requirements: Android Gradle Plugin 8.0+ is compatible with Java 17, so most modern builds will already be compliant.

    • Potential Issues: Projects still using older AGP (<8.0) or Java 1.8 syntax tools may fail to compile.

    • Third-party dependencies compiled for Java 8 remain usable but may trigger warnings.

1.2. OpenCV Upgrade

  • Changed: 4.8.0 → 4.12.0

  • Impact:

    • Binary compatibility is maintained.

    • Performance improvements and bug fixes.

    • If you reference OpenCV classes directly (e.g., org.opencv.core.Mat), re-run lint to ensure imports resolve correctly.

1.3. Android 16KB Page Size Support

  • Description: Required for Play Store releases targeting November 2025+ compliance.

  • Developer Impact: No API changes, but upgrading ensures continued store acceptance.

1.4. Gradle & NDK Toolchain Updates

Component

Old

New

AGP

8.4.2

8.9.0

compileSdk

34

35

NDK

22.0.7026061

29.0.14033849 rc4

CMake

3.10.2

3.22.1

  • Developer Action:

    • Update your local Android SDK components to match these versions.

    • Validate your CI build environment (NDK and CMake versions).

    • Clean rebuild is recommended due to ABI and toolchain changes.

1.5. PMF Loader API Change

// Old
fun loadAnalyserConfiguration(jsonString: String): AnalyserConfiguration

// New
fun loadAnalyserConfiguration(json: String): AnalyserConfiguration

  • Change: Parameter name only (jsonStringjson) — no signature or behavior change.

  • Developer Impact: None, unless using named parameters in Kotlin calls:

    // Update this
    loadAnalyserConfiguration(jsonString = myConfig)
    // To this
    loadAnalyserConfiguration(json = myConfig)