Example Android project showing architecture choice, coding style, ideas, ...
Single-activity & MVVM
Kotlin, XML, Gradle
Library used for sending HTTP requests.
Library used for multi-threading.
Typical libraries used in MVVM architecture.
Used for persisting data local to the app. Can also be made secured
Library used to load images hosted online that also allows for offline caching. Can also show a placeholder and animations.
Regular graphics are boring. Lottie animations brings a little more life to the screen. Perfect for buttons animations and app introductions.
To comply with open source libraries licenses, we display the notices using oss-licenses dependency
Also commonly known as UI tests. Although more difficult to setup and maintain compared to unit tests, it covers a much higher range of potential bugs including some within individual android kernels.
Most commonly used library used for integration/UI tests.
A library used for mocking API requests. Uses self defined mock data which is returned on the loopback address so that the app knows no difference.
Some customer matchers have been added to help further test images, recycler views, backgrounds, ...
TODO
Library used for obtaining code coverage from tests.
The app offers different build variants, typically used in cases such as offering a 'free' or 'paid' version of the app allowing different code sources to be used. It can also be used for configuration between different environments such as integration, staging or a mock environment for testing.
The app is available to download here
A script has been added to automate release notes with the commits since the previous app version. This can be further refined by adding grep to the script to search for commits only containing something like a jira ticket reference.
Tracking has been added to show how to track what titles have been added/removed from favourites
Allows making changes to the app without an update, such as turning features on/off. It can also be used to allow for a simpler force app update, see below.
The app has been setup to send crash information to Firebase
Some cases require the app to be updated flexibly or by force eg. code breaking API changes in older app version
See here
When activated it removes unused code & libraries making the app smaller as well as shortening classes and members to reduce DEX file sizes, see here
An XML file containing restrictions on clear traffic, domain communication and allowing for certificate pinning, see here
This library checks for memory leaks on any when debugging.