Android πŸ€–

Hero image for Android πŸ€–

Project Structure

The team typically uses the following project structure:

co.nimblehq.project
β”œβ”€β”€ app
β”‚Β Β  β”œβ”€β”€ libs
β”‚Β Β  β”œβ”€β”€ src
β”‚Β Β  β”‚   β”œβ”€β”€ androidTest
β”‚Β Β  β”‚   β”‚Β Β  └── java
β”‚Β Β  β”‚   β”‚Β Β      └── co
β”‚Β Β  β”‚   β”‚Β Β          └── nimblehq
β”‚Β Β  β”‚   β”‚Β Β              └── project
β”‚Β Β  β”‚   β”‚Β Β                  └── InstrumentedTest.kt
β”‚Β Β  β”‚   β”‚
β”‚Β Β  β”‚   β”œβ”€β”€ main
β”‚Β Β  β”‚   β”‚Β Β  β”œβ”€β”€ java
β”‚Β Β  β”‚   β”‚Β Β  β”‚Β Β  └── co
β”‚Β Β  β”‚   β”‚Β Β  β”‚Β Β      └── nimblehq
β”‚Β Β  β”‚   β”‚Β Β  β”‚           └── project
β”‚Β Β  β”‚   β”‚Β Β  β”‚Β Β              β”œβ”€β”€ data
β”‚Β Β  β”‚   β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ model
β”‚Β Β  β”‚   β”‚Β Β  β”‚Β Β              β”‚Β Β  └── repository
β”‚Β Β  β”‚   β”‚Β Β  β”‚Β Β              β”œβ”€β”€ di
β”‚Β Β  β”‚   β”‚Β Β  β”‚Β Β              β”œβ”€β”€ extension
β”‚Β Β  β”‚   β”‚Β Β  β”‚Β Β              β”œβ”€β”€ notification
β”‚Β Β  β”‚   β”‚Β Β  β”‚Β Β              β”œβ”€β”€ service
β”‚Β Β  β”‚   β”‚Β Β  β”‚Β Β              β”œβ”€β”€ ui
β”‚Β Β  β”‚   β”‚Β Β  β”‚Β Β              β”œβ”€β”€ util
β”‚Β Β  β”‚   β”‚Β Β  β”‚Β Β              β”œβ”€β”€ usecase
β”‚Β Β  β”‚   β”‚Β Β  β”‚Β Β              β”‚
β”‚Β Β  β”‚   β”‚Β Β  β”‚Β Β              └── ApplicationClass.kt
β”‚Β Β  β”‚   β”‚Β Β  β”‚
β”‚Β Β  β”‚   β”‚Β Β  β”œβ”€β”€ res
β”‚Β Β  β”‚   β”‚Β Β  β”‚   β”œβ”€β”€ anim
β”‚Β Β  β”‚   β”‚Β Β  β”‚   β”œβ”€β”€ color
β”‚Β Β  β”‚   β”‚Β Β  β”‚   β”œβ”€β”€ drawable
β”‚Β Β  β”‚   β”‚Β Β  β”‚   β”œβ”€β”€ layout
β”‚Β Β  β”‚   β”‚Β Β  β”‚   β”œβ”€β”€ navigation
β”‚Β Β  β”‚   β”‚Β Β  β”‚   └── values
β”‚Β Β  β”‚   β”‚Β Β  β”‚
β”‚Β Β  β”‚   β”‚Β Β  └── AndroidManifest.xml
β”‚Β Β  β”‚   β”‚
β”‚Β Β  β”‚   β”œβ”€β”€ staging
β”‚Β Β  β”‚   β”‚   └── res
β”‚Β Β  β”‚   β”‚       └── values
β”‚Β Β  β”‚   β”‚
β”‚Β Β  β”‚   └── test
β”‚Β Β  β”‚       └── java
β”‚Β Β  β”‚           └── co
β”‚Β Β  β”‚               └── nimblehq
β”‚Β Β  β”‚     Β Β             └── project
β”‚Β Β  β”‚                       └── UnitTest.kt
β”‚Β Β  β”‚
β”‚Β Β  β”‚
β”‚Β Β  β”œβ”€β”€ build.gradle
β”‚Β Β  └── proguard-rules.pro
β”‚
β”œβ”€β”€ other-module
β”‚
β”œβ”€β”€ spec
β”‚  └── rspec_test.rb
β”‚
β”œβ”€β”€ .travis.yml
β”œβ”€β”€ phraseapp.yml
β”‚
β”œβ”€β”€ build.gradle
β”œβ”€β”€ keystore.jks
β”œβ”€β”€ settings.gradle
└── README.md

Regarding structuring App flavors, read the section Gradle configuration.

Development Environment

Android SDK, IDE

  • The team uses Android Studio as the main official IDE.
  • It’s encouraged to use the Developer preview version to access the new feature and adopt the changes in order to improve the productivity.

Emulator

  • Use x86 emulator for significant speed up during development.

CI services such as Circle CI or Travis CI do not support x86 Emulator.