This is a code test project I have previously submitted as a part of the interview process. The project covers common RESTApi, SQLite, RecyclerView, Constraint Layout, MVVm, plus dependency injection and testings.
Although the title carries "Android TV", it has nothing to do with that - this is an Android mobile App as required by the specifications. Except for a portion of open-source codes attributed inline, this project was completed by myself alone.
Under the commit history, you will see how I have built everything from scratch - with rounds of refactoring and bug fixes. The interview process was concluded in October, 2021, but I am still keep on improving the codes for demonstration purpose.
Please note that the APIs are supplied by DAZN for recruitment purpose. They may not work at any time, as we have already concluded the interview process.
- Kotlin
- MVVM architecture
- Jetpack Databinding
- Live Data
- Bottom Navigation
- Travis-CI - CI
-
Jetpack Room - Database
-
Retrofit - RESTAPI
-
Moshi - RESTAPI
-
Glide - Network Image
-
ExoPlayer - Media Player
-
Dagger Hilt - Dependency Injection
-
Hamcrest - Testing
-
Timber - Logging
-
LeakCanary - Leak detection
- Android Studio Arctic Fox 2021.3.1 Patch 2
- Android device or simulator running Android 5.0+ (API 21)
-
Android keystore is not being stored in this repository. You need your own keystore to generate the apk / App Bundle
-
To ensure sensitive data are not being pushed to Git by accident, the keystore and its passwords are kept one level up of the project folder, so they are not managed by Git.
-
If your project folder is at
/app/dazn-code-challenge/
, the keystore file andkeystore.properties
should be placed at/app/
-
The format of
keystore.properties
is:store=/app/release-key.keystore alias=<alias> pass=<alias password> storePass=<keystore password>
- Tests can be executed on Android Studio, by choosing the tests to run
- Command line options are:
./gradlew testDebugUnitTest
and./gradlew testReleaseUnitTest
./gradlew installDebug
// or
// ./gradlew installRelease
- Options are:
Debug
,Release
- Debug builds will have an App package name suffix
.debug
After August 2021, all new apps and games will be required to publish with the Android App Bundle format.
./gradlew clean && ./gradlew bundleRelease
./gradlew clean && ./gradlew assembleRelease
- The generated apk(s) will be stored under
app/build/outputs/apk/
- Other usages can be listed using
./gradelew tasks