Repository navigation
Releases: BlueCodeSystems/opensrp-client-opd
Releases · BlueCodeSystems/opensrp-client-opd
Release list
OpenSRP Client OPD 1.0.3
Release Notes - v1.0.3
Release Date: September 2, 2025
Overview
This is a critical patch release that fixes a compilation error affecting the JitPack build system. The issue was related to SnakeYAML Constructor compatibility across different library versions.
What's Fixed
SnakeYAML Compatibility Issue
- Issue: Direct instantiation of
Constructor(YamlConfig.class)caused compilation error: "incompatible types: Class cannot be converted to LoaderOptions" - Root Cause: The code was directly referencing SnakeYAML 1.x constructors at compile time, which conflicts with SnakeYAML 2.x APIs
- Solution: Replaced direct constructor calls with reflection-based instantiation to avoid compile-time dependency issues
- Impact: JitPack builds now succeed consistently across different SnakeYAML versions
Technical Details
The fix replaces this problematic code:
Constructor constructor = new Constructor(YamlConfig.class); // Compile errorWith a reflection-based approach:
Class<?> ctorCls = org.yaml.snakeyaml.constructor.Constructor.class;
java.lang.reflect.Constructor<?> ctorCtor = ctorCls.getConstructor(Class.class);
Object ctor = ctorCtor.newInstance(YamlConfig.class);This ensures compile-time safety while maintaining runtime compatibility with both SnakeYAML 1.x and 2.x versions.
Build Pipeline
- Removed all Gradle GPG signing configuration to ensure CI does not attempt to sign artifacts. Publishing remains functional for MavenLocal and other unsigned use cases.
JitPack Build Notes
To build this library via JitPack:
- Use JDK 17 (set in JitPack configuration)
- The
-PskipSample=trueflag excludes the sample module during builds - Artifacts publish to MavenLocal without any signing steps in CI
Upgrading
Maven/Gradle
implementation 'io.github.bluecodesystems:opensrp-client-opd:1.0.3'Changes Required
No breaking changes - this is a pure bug fix release.
Previous Issues Resolved
This release also includes all fixes from v1.0.1 and v1.0.2:
- French string resource formatting fixes
- Resource compilation improvements
- CI/CD pipeline enhancements
OpenSRP Client OPD 1.0.0
OpenSRP Client OPD 1.0.0
Release date: 2025-09-02
Breaking Changes
- Raise minimum SDK to 24 and require Java 17 for compilation (source/target). Consumers must compile with JDK 17 and support API 24+.
- Migrate dialog themes to MaterialComponents overlays; apps may need to align app theme/AlertDialog styles.
Features
- Reusable publishing/signing/zip flow:
- Shared
maven.gradlewith Sonatype (s01) publishing and GPG signing viagpg. - Android
publishing.singleVariant("release")with sources and javadoc jars. - New
packageReleaseZiptask to bundle release AAR, POM, sources, and javadoc.
- Shared
Bug Fixes
VisitDao: correctcreated_atcolumn name and SQL; safe "Today" string retrieval when library context isn’t initialized.- Add null-safety and fallbacks in
OpdJsonFormUtils,OpdLibrary,OpdCloseFormProcessing,OpdDiagnoseAndTreatFormProcessor, presenters for unit test environments. AppExecutors: execute directly when no Android main looper in JVM tests.OpdMiniClientProcessorForJava: centralize event extraction, validate client existence for CHECK_IN, clearer error messages.
Dependencies
com.android.tools:desugar_jdk_libs1.2.2.- Test stack: Robolectric 4.12.2; AndroidX test core 1.6.1; Fragment 1.6.2 +
fragment-testing. - Replace legacy Saferoom; add BlueCode CircleProgressbar; excludes to prevent duplicate core deps.
Coordinates
implementation 'io.github.bluecodesystems:opensrp-client-opd:1.0.0'Build / Publish
- Build AAR:
./gradlew :opensrp-opd:assembleRelease - Publish to Maven Local:
./gradlew :opensrp-opd:publishToMavenLocal - Zip AAR+POM+sources+javadoc:
./gradlew :opensrp-opd:packageReleaseZip(seeopensrp-opd/build/releasePackage)
Central (Sonatype)
- Local Central bundle zip (manual upload):
./gradlew -PcentralBundle=true -PuseGpgCmd=true :opensrp-opd:publishReleasePublicationToCentralBundleRepository :opensrp-opd:generateCentralBundleChecksums :opensrp-opd:zipCentralBundle
- Remote publish to Sonatype (staging):
export ORG_GRADLE_PROJECT_sonatypeUsername='TOKEN_USER'
export ORG_GRADLE_PROJECT_sonatypePassword='TOKEN_PASS'
./gradlew :opensrp-opd:publish -PuseGpgCmd=true -PcentralRelease=true
./gradlew closeAndReleaseRepository