Overview¶
DHIS2 Android SDK é uma biblioteca que abstrai a complexidade da interação com a API da web DHIS2. Pretende ser um ponto de partida para construir aplicativos Android para DHIS2, cobrindo algumas tarefas que qualquer aplicativo Android deve implementar, como metadados e sincronização de dados.
Objetivos principais:
- API da web DHIS2 abstrata. Não há necessidade de realizar consultas de API no servidor. O SDK inclui métodos para interagir com a API da 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.
- Garanta a compatibilidade DHIS2. Ele encapsula as alterações entre as versões DHIS2 para que o aplicativo não precise se preocupar com elas. Caso o SDK introduza algumas alterações para acomodar uma nova versão DHIS2, o aplicativo pode detectar com segurança essas alterações em tempo de compilação.
Visão geral da tecnologia¶
O SDK é escrito principalmente em Java 8 usando o subconjunto reduzido de recursos permitidos na versão mínima da API do Android, embora componentes mais novos sejam implementados em [Kotlin] (https://kotlinlang.org/), que é a linguagem recomendada pelo Google para construção de aplicativos Android. O SDK usa alguns componentes específicos do Android, como bibliotecas para criar listas pagináveis (LiveData, PagedList) ou para acessar o sistema de arquivos. Por esse motivo, atualmente** o SDK só pode ser executado em um ambiente Android**.
Ele usa [RxJava] (https://github.com/ReactiveX/RxJava) para facilitar o tratamento assíncrono de alguns métodos. Embora seja opcional, recomendamos essa abordagem para garantir chamadas sem bloqueio.
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.