This is Xmartlabs Android base project. Architecturally composed of a set of libraries for building modern and scalable applications from the ground up.
The BigBang of our Android projects.
Our architecture divides the typical layers of an Android application into simple coherent modules, which are completely independent from one another:
- UI
- Services
- Database
- Crashlytics Logger
In order to keep modules independent, we decoupled the behavior required for each layer into a single module, where everything comes together smoothly, which we call core
. This not only allows you to choose which modules to use, but also gives you independence from any service or database oriented libraries we use.
Learn more about the project on the BigBang Wiki or by reading the Javadocs.
The first step is to include the Core library into your project as a Gradle compile dependency:
compile 'com.xmartlabs.bigbang:core:0.1.54'
Then, add jCenter to the buildscript repositories:
buildscript {
repositories {
jcenter()
}
}
Also, you'll need to add the following repositories:
repositories {
flatDir {
dirs 'libs'
}
maven { url "https://jitpack.io" }
maven { url 'https://maven.fabric.io/public' }
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}
Then, include any of the following compile dependencies to add an specific module to your app:
compile 'com.xmartlabs.bigbang:dbflow:0.1.54'
compile 'com.xmartlabs.bigbang:log-crashlytics:0.1.54'
compile 'com.xmartlabs.bigbang:retrofit:0.1.54'
compile 'com.xmartlabs.bigbang:ui:0.1.54'
The dbflow
module is database related, while the retrofit
module is service related.
There are four main components. The core
component exposes the
interfaces needed to implement a certain type of service, like database or network related.
Thus, the core
component should always be included in any project that makes use of this
architecture.
A component should encapsulate and provide a single functionality. If the component belongs to a certain category of services (like networking or database), then the functionality should be specified and described in the core component.
In order to start using the modules, you'll need to set up a few things, which are well explained in their respective Wiki. Therefore, to start a new project, we provide a template, which consists of the minimal setup required to get you going. You will find that in the bigbang-template repository.
We strictly follow our style guide, which extends from the Google Java Style Guide but with some modifications. Please remember to follow it when contributing to this project.
When submitting code, please make every effort to follow existing conventions and style in order to keep the code as readable as possible. Please also make sure your code compiles and try to cover your code with tests.
We welcome contributors!
For bugs, issues, feature requests, questions and discussions please use the Github Issues.
This can be found in the CHANGELOG.md file.