Libraries and tools included:
- Support libraries
- RecyclerViews, ConstraintLayout and CardViews
- RxJava and RxAndroid
- Retrofit 2
- Dagger 2
- Timber
- Glide
- Functional tests with Espresso
- Robolectric
- Mockito
- Logging interceptor
- Android SDK.
- Kotlin 1.2.21.
- Latest Android SDK Tools and build tools.
This project follows ribot's Android architecture guidelines that are based on MVP (Model View Presenter). Read more about them here.
Imagine you have to implement a sign in screen.
- Create a new package under
uicalledsignin - Create a new class called
SignInContract. InsideSignInContract, create an interface calledViewextendingMvPViewand an abstract class calledPresenterextendingBasePresenter<View>.
class SignInContract{
interface View: MvPView{
}
abstract class Presenter: BasePresenter < View>(){
}
}
- Create a new class called
SignInPresenterextendingSignInContract.Presenter.
class SignInPresenter(): SignInContract.Presenter(){
}
- Provide dependency injection to Presenter at
PresenterModule.
@Provides
@ConfigPersistent
fun provideSignInPresenter(): SignInContract.Presenter{
return SignInPresenter()
}
- Create a new Activity called
SignInActivity. You could also use a Fragment. You should extendBaseActivity()orBaseFragment()and your view contract definied.
class SignInActivity(): BaseActivity(), SignInContract.View {
@Inject lateinit var presenter: SignInContract.Presenter
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_signin)
activityComponent.inject(this)
presenter.attachView(this)
}
}
- Provide activity injector method at
ActivityComponentorConfigPersistentComponentfor fragments. - Create a
SignInPresenterTestand write unit tests. Remember to mock the view and also theDataManager.
To run unit tests on your machine:
gradlew test
Change you version number and version name in your app build.gradle:
versionCode 1
versionName "1.0"
To generate a new version, use the following command:
gradlew clean test assembleRelease
The apk file will be in:
trunk\app\build\outputs\apk\release\app-release.apk
