Skip to content

Releases: BlueCodeSystems/opensrp-client-opd

OpenSRP Client OPD 1.0.3

Choose a tag to compare

@AndreLesa AndreLesa released this 02 Sep 21:45

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 error

With 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=true flag 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

Choose a tag to compare

@AndreLesa AndreLesa released this 02 Sep 04:47

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.gradle with Sonatype (s01) publishing and GPG signing via gpg.
    • Android publishing.singleVariant("release") with sources and javadoc jars.
    • New packageReleaseZip task to bundle release AAR, POM, sources, and javadoc.

Bug Fixes

  • VisitDao: correct created_at column 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_libs 1.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 (see opensrp-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