Overview¶
DHIS2 Android SDK es una biblioteca que abstrae la complejidad de interactuar con la API web DHIS2. Su objetivo es ser un punto de partida para crear aplicaciones Android para DHIS2, cubriendo algunas tareas que cualquier aplicación de Android debería implementar, como metadatos y sincronización de datos.
Objetivos principales:
- API web abstracta de DHIS2. No es necesario realizar consultas de API en el servidor. El SDK incluye métodos para interactuar con la API web.
- Work offline. It implements a simplified version of DHIS2 model that is persisted in a local database (Room Database). It ensures that all the metadata required to perform data entry tasks is available at any time to build the data entry forms. Data is saved locally and uploaded to the server when connection is available.
- Garantizar la compatibilidad con DHIS2. Encapsula los cambios entre las versiones de DHIS2 para que la aplicación no tenga que preocuparse por ellos. En caso de que el SDK introduzca algunos cambios para adaptarse a una nueva versión de DHIS2, la aplicación puede detectar estos cambios de forma segura en tiempo de compilación.
Visión general de la tecnología¶
The SDK is entirely written in Kotlin, which is the language recommended by Google for building Android apps. The SDK uses some Android-specific components, such as libraries to create paged list (LiveData, PagedList) or to access to file system. For this reason, currently the SDK is only runnable in an Android environment.
Every asynchronous operation is exposed in three flavours: a Kotlin suspend function (suspendGet()), an RxJava variant (rxGet()) and a blocking variant (blockingGet()). Coroutines are the recommended approach for new code; the RxJava variants are fully supported. See Dealing with return types.
Other libraries internally used by the SDK are: Koin for dependency injection, Kotlinx Serialization for JSON parsing, Ktor and OkHttpClient for API communication, Room for database persistence, or SQLCipher for DB encryption.