Skip to content

xxfoundation/elixxir-xx-Messenger-Android

Repository files navigation

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

  1. 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.
  2. 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

  1. Remove id("com.google.gms.google-services") from build.gradle.kts
  2. Remove all Firebase references from build.gradle.kts
  3. 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

  1. This app uses MVVM architecture with dependency injection via Dagger2
  2. Each component of the app has its own package that includes UI using fragments and its ViewModels
  3. A single activity is used as a NavHost to host for multiple fragments
  4. Navigation uses Navigation Component
  5. 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

Android Material
Lottie

Database

Room

Notifications

Firebase

Reactive

RxJava2

Logger

Timber

Time

Kronos
Pretty Time

Image Loading and Caching

Glide

Data Serialization

Gson
Protobuf

Testing

Android Arch Core
Truth
Mockito
JUnit Jupiter
Expresso
Roboeletric