xxmessenger (Android)
Current Version: 2.92/629 (MainNet)
Device Orientation: Portrait
API Target: Android 26+ (Oreo)
Setup
Clone this repository and import into Android Studio
git clone git@git.xx.network:elixxir/client-android.git
Build variants
Use the Android Studio Build Variants button to choose between local-ndf,mock-env, prod-ndf and betanet flavors combined with debug and release build types.
-
mainNet:
Production build on MainNet -
mainNetDebug:
Debuggable build for use during development on MainNet -
releaseNet:
Debuggable build for use during development on the ReleaseNet network -
mock:
Mock environment to test UI only
Manual Deploy
Android Studio
- The app currently has a dependency on Firebase Crashlytics and Firebase Cloud Messaging. You will have to either set up your own Firebase Project here or remove Firebase from the project by follow the steps below.
- In Android Studio Menu, click Build > Generate Signed Bundle/APK to create an APK you can deploy on an Android device. Create a new keystore if necessary.
Removing Firebase dependency
- Remove id("com.google.gms.google-services") from build.gradle.kts
- Remove all Firebase references from build.gradle.kts
- In Android Studio Menu, click Build > Make Project. The build will fail, as Firebase references no longer compile. You may remove each reference that is found in Build Output.
Architecture
- This app uses MVVM architecture with dependency injection via Dagger2
- Each component of the app has its own package that includes UI using
fragments
and itsViewModels
- A single
activity
is used as a NavHost to host for multiplefragments
- Navigation uses Navigation Component
- Dependency injection with Mockito is preferable for Unit Tests.
Libraries used
Core
Kotlin Standard Library
KotlinX Coroutines
Guava
Android KTX
Android MultiDex
Dagger2
Android Components and UI - Jetpack
AndroidX Lifecycle
AndroidX Navigation
AndroidX AppCompat
AndroidX Biometrics
AndroidX RecyclerView
AndroidX Paging
AndroidX CameraX
AndroidX SwipeToRefresh
Android UI - Non Jetpack
Database
Notifications
Reactive
Logger
Time
Image Loading and Caching
Data Serialization
Testing
Android Arch Core
Truth
Mockito
JUnit Jupiter
Expresso
Roboeletric