Releases: dhis2/dhis2-android-sdk
Release 1.9.1
Bugfixes:
- New tracker import: do not send values that have not been modified (trackerDataValues, attributeValues) (ANDROSDK-1564).
- Add missing value type validators (ANDROSDK-1777).
- Expose Attribute collection repository (ANDROSDK-1776).
- Database is not responsive when using encryption (ANDROSDK-1784).
Library updates:
- Update kotlin (1.9.21 and gradle (8.2.0) (ANDROSDK-1793).
- Update SQLCipher (4.5.5).
Release 1.9.0
Features
- ANDROSDK-1743 Evaluate a TEI header
- ANDROSDK-1728 Add a parameter to define a TEI header per program
- ANDROSDK-1688 Add ObjectStyle to Indicators
- ANDROSDK-1723 Add
disableReferrals
field in Android Settings model - ANDROSDK-1724 Add
disableCollapsibleSections
field in Android Settings model - ANDROSDK-1725 Add
description
field ProgramStageSection
Bug
- ANDROSDK-1694 Remove initial "transfers" query in Tracker upload
- ANDROSDK-1745 Event status filter is not applied if event date fiter is null
- ANDROSDK-1749 Inherit IMAGE attribute is not created in inherited TEI
- ANDROSDK-1765 Download ProgramStageSection render type
- ANDROSDK-1767 Reinforce method "isLogged" in UserModule
Library changes:
- ANDROSDK-1737 Update Kotlin version to 1.9.10.
- ANDROSDK-1740 Upgrade OkHttp library to 4.10.0. It might imply the update of OkHttp resolution to at least 4.10.0.
- ANDROSDK-1618 Dagger is replaced by Koin
- Some changes in the SDK forces to update Gradle to >= 7.4.2 in the consuming app.
Breaking changes:
-
If you are using Kotlin, you might experience some breaking changes in your code. These changes come from the continuous refactor of the codebase to Kotlin and usually they cannot be avoided. They have to do with how Java and Kotlin deal with nullability and, in general, these changes will introduce more robustness (null safety) in your code.
A common change is the return type of different methods, such as
ObjectRepository
. Taking DataElement as an example, this query (dataElements().uid("uid").get()) in the JAVA-implemented repository will return aDataElement!
in Kotlin, which means that it can't tell if the returned object is nullable or not. In this case, the Kotlin compiler let you deal with these object as if they were NonNull, which could lead to a NullPointerException. Now, the repository will return aDataElement?
, which explicitly informs about the nullability of the object.
Release 1.8.2
Bugfix:
- Do not send dataValues / attributes that are not assigned to a program (ANDROSDK-1704).
- If search text contains a comma the api fails (ANDROSDK-1219).
- Network authentication does not support special characters (ANDROSDK-1739).
- Login offline in local instance is not working (ANDROSDK-1706).
- Relationship with missed item are not properly cleaned (ANDROSDK-1715).
Release 1.8.1.1
Bugfix:
- Missing Visualization after update to 1.8.1 (ANDROSDK-1692).
Release 1.8.1
Bugfix:
- Program indicators: implement support for operator "is...in" (ANDROSDK-1686), add missing support for d2:minValue and d2:maxValue functions (ANDROSDK-1571).
- Analytics: calculation support (ANDROSDK-1687).
- Map download: add optional NetworkTimeout parameter (ANDROSDK-1690).
Release 1.8.0
Features:
- New Tracker endpoint by default in 2.40: use new exporter (ANDROSDK-1641) and new importer by default (ANDROSDK-1634).
- AccountManager: add "syncState" property in DatabaseAccount (ANDROSDK-1593).
- AccountManager: make "maxAccounts" nullable, meaning limitless (ANDROSDK-1631).
- ProgramStageWorkingList support (ANDROSDK-1637, ANDROSDK-1650).
- Add DataValueConflict repository (ANDROSDK-1612).
- Add online DataStore repository (ANDROSDK-1588).
- Add MULTI_TEXT value type (ANDROSDK-1636).
- Add CANVAS ValueTypeRenderingType (ANDROSDK-1640).
- Analytics: add support for query modifiers (ANDROSDK-1569).
- Analytics: add NULL literal (ANDROSDK-1629).
- Visualization settings: method to filter by program or dataSet (ANDROSDK-1566).
- TrackedEntityAttribute: add "confidential" property (ANDROSDK-1613).
- ProgramStage: add "validationStrategy" property (ANDROSDK-1648).
Bugfix:
- Properties "createdAtClient" and "lastUpdatedAtClient" are set to null in the device after data download (ANDROSDK-1653).
- Property "completeBy" is ignored in events (ANDROSDK-1659).
- Relationships are not persisted if they are download in other bundle (ANDROSDK-1645).
- Remove incomplete or inaccessible CategoryOptionCombos (ANDROSDK-1592).
Libraries:
- Added dependency with "kotlinx-datetime".
- Added dependency with "kotlin-coroutines".
- Removed Apache libraries (commons-lang3, jexl).
- Removed Jode Time library.
Breaking changes:
- Applications must enable coreLibraryDesugaring. The SDK uses kotlinx-datetime, which requires desugaring for Android API < 26 (Google devs docs) (ANDROSDK-1632).
- DHISVersionManager: removed shortcut methods to check the version (such as
is2_38(), is2_39(),...
). These methods can be easily replaced by the methodisVersion(DHISVersion.V2_38)
,isVersion(DHISVersion.V2_39)
,... . - Remove method "withCategoryOptionCombos()" in "CategoryComboCollectionRepository". Those objects were not nested in the CategoryCombos, so it was useless.
- UserCredentials class is simplified and the repository is marked as deprecated. The class UserCredentials has been deprecated in the backend. The SDK keeps the repository and the class with a few properties (username, name, userRoles). Now, these properties are owned by the User class, so use User class instead (ANDROSDK-1584).
Release 1.7.1
Bugfix:
- Update SQLCipher to prevent "Defective OpenSSL Version (OpenSSL 1.1.1g)" (ANDROSDK-1611).
- File resize helper: store resized image in cache folder (ANDROSDK-1597).
- Include paging for options call (ANDROSDK-1601).
- Wrong composed Program Indicator expressions cause the App to crash (ANDROSDK-1604).
- Support open source maps (ANDROSDK-1605).
- Fix daysInBetween function to consider summer time (ANDROSDK-1606).
- DataSetInstance filters: filter by relevant attributeOptionCombo (ANDROSDK-1608), filter relevant period types (ANDROSDK-1600).
Release 1.7.0
New features:
- Data sync: notify about synchronized dataSets and programs (ANDROSDK-1550).
- Improved analytics support: program indicator boundaries (ANDROSDK-1433), missing variables in program indicator engine (ANDROSDK-1376), missing aggregation functions (ANDROSDK-1570), expose aggregation parameter in Analytics repo (ANDROSDK-1572), filter by attributeOptionCombo (ANDROSDK-1548).
- Event repository: filter by DataValue (ANDROSDK-1324).
- TrackedEntity repository: catch up support for new TEI filter format (working lists) (ANDROSDK-1560).
- FILE and IMAGE value types support: support for FILE and IMAGE value types has been extended to aggregated and tracker (ANDROSDK-1251, ANDROSDK-1567, ANDROSDK-1465).
- Program owner - Referrals: move permanently a TEI (ANDROSDK-1545).
- SMS synchronization: expose methods to enable synchronization with 3rd party apps (ANDROSDK-1575).
Important announcements:
- Google Play Services have been removed from the SDK in order to make it fully open-source. This is a requirement for uploading an app to some markets, such as F-Droid. Previously, the SDK only used Google Play Services to import SafetyNet and force the installation of security patches for network connections. This task can be done by other open-source alternatives, such as Conscrypt. So now the SDK is freed of these libraries and it is the responsibility of the application to decide if using Google Play Services, Conscrypt, or none of them. Check the docs to know how to setup an alternate provider or import the Google Play Services (Docs).
Breaking changes:
- Tracker download methods don't return
D2Progress
, butTrackerD2Progress
(that extendsD2Progress
). - Aggregate download methods don't return
D2Progress
, butAggregatedD2Progress
(that extendsD2Progress
). - Removed
followUp
,enrollmentStatus
andenrollmentCreatedPeriod
inTrackedEntityInstanceFilters.Builder
. UseentityQueryCriteria
instead.
Release 1.6.2
Bugfix:
- Remove incomplete relationships when removing data (ANDROSDK-1421).
- Adapt trackedEntityInstanceFilters to new fields in 2.38 (ANDROSDK-1502).
- TrackedEntityAttributes: add legendSets (ANDROSDK-1546) and aggregationType (ANDROSDK-1547).
- Analytics: add support for Event data items (ANDROSDK-1419).
- Unique constraint exception in DB (ANDROSDK-1561).
- Period generation exception (ANDROSDK-1562).
Minor breaking changes:
- Removed
periodTo
andperiodFrom
filters in repositoryTrackedEntityInstanceFilterRepository
. - Removed
followUp
,enrollmentStatus
andenrollmentCreatedPeriod
inTrackedEntityInstanceFilter.Builder
.
Release 1.6.1
Bugfix:
- Analytics: sort periods and remove duplicates (ANDROSDK-1543).
- Value evaluation in CoordinateEvaluator (ANDROSDK-1553).
- SMS version is not returned in patch releases (ANDROSDK-1554).
- TEI search does not return a single online result (ANDROSDK-1544).
Performance improvements:
- Download programIndicators relevant to the user (ANDROSDK-1519).