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 KotlinjvmTarget = "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 (
jsonString→json) — 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)