Configure dependency injection for API and the database. Uses Dagger (dagger.dev) The API is held in a holder, so that it can be invalidated or recreated as needed. Big refactor of the feeds, this introduces a bit more duplication of code (some very similar methods that differ only in the types or minor details), but now the inheritance makes more sense and there is less "forcing" to make the inheritance work (for example: no more casting Int to String just to have the right type for the key) It should be easier to work with the feeds in the future, maybe we'll find better abstractions later on.
185 lines
6.8 KiB
Groovy
185 lines
6.8 KiB
Groovy
apply plugin: 'com.android.application'
|
|
apply plugin: 'kotlin-android'
|
|
apply plugin: 'kotlin-android-extensions'
|
|
apply plugin: 'jacoco'
|
|
|
|
android {
|
|
|
|
compileSdkVersion 29
|
|
buildToolsVersion '30.0.1'
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
}
|
|
kotlinOptions {
|
|
jvmTarget = "1.8"
|
|
}
|
|
defaultConfig {
|
|
applicationId "com.h.pixeldroid"
|
|
minSdkVersion 23
|
|
targetSdkVersion 29
|
|
versionCode 3
|
|
versionName "1.0.alpha3"
|
|
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
testInstrumentationRunnerArguments clearPackageData: 'true'
|
|
}
|
|
lintOptions{
|
|
disable 'MissingTranslation'
|
|
}
|
|
sourceSets {
|
|
main.java.srcDirs += 'src/main/java'
|
|
test.java.srcDirs += 'src/test/java'
|
|
androidTest.java.srcDirs += 'src/androidTest/java'
|
|
}
|
|
|
|
|
|
|
|
buildTypes {
|
|
debug {
|
|
testCoverageEnabled true
|
|
}
|
|
release {
|
|
minifyEnabled false
|
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
}
|
|
}
|
|
testOptions {
|
|
animationsDisabled true
|
|
|
|
}
|
|
|
|
apply plugin: 'kotlin-kapt'
|
|
}
|
|
|
|
dependencies {
|
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
|
implementation 'androidx.appcompat:appcompat:1.1.0'
|
|
implementation 'androidx.core:core-ktx:1.3.1'
|
|
implementation 'androidx.preference:preference:1.1.1'
|
|
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
|
implementation 'androidx.navigation:navigation-fragment:2.3.0'
|
|
implementation 'androidx.navigation:navigation-ui:2.3.0'
|
|
implementation 'com.squareup.okhttp3:okhttp:4.8.0'
|
|
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
|
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
|
|
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'
|
|
implementation 'io.reactivex.rxjava2:rxjava:2.2.17'
|
|
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
|
|
implementation "androidx.browser:browser:1.2.0"
|
|
implementation 'com.google.android.material:material:1.1.0'
|
|
implementation 'com.github.connyduck:sparkbutton:4.0.0'
|
|
|
|
def room_version = "2.2.5"
|
|
implementation "androidx.room:room-runtime:$room_version"
|
|
kapt "androidx.room:room-compiler:$room_version"
|
|
implementation "androidx.room:room-ktx:$room_version"
|
|
testImplementation "androidx.room:room-testing:$room_version"
|
|
|
|
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
|
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
|
|
implementation 'androidx.navigation:navigation-fragment-ktx:2.3.0'
|
|
implementation 'androidx.navigation:navigation-ui-ktx:2.3.0'
|
|
|
|
implementation 'info.androidhive:imagefilters:1.0.7'
|
|
implementation 'com.github.yalantis:ucrop:2.2.5-native'
|
|
|
|
implementation("com.github.bumptech.glide:glide:4.11.0") {
|
|
exclude group: "com.android.support"
|
|
}
|
|
|
|
implementation "com.github.bumptech.glide:okhttp-integration:4.11.0"
|
|
implementation("com.github.bumptech.glide:recyclerview-integration:4.11.0") {
|
|
// Excludes the support library because it's already included by Glide.
|
|
transitive = false
|
|
}
|
|
kapt 'com.github.bumptech.glide:compiler:4.11.0'
|
|
|
|
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
|
testImplementation 'com.github.tomakehurst:wiremock-jre8:2.27.1'
|
|
testImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"
|
|
testImplementation 'junit:junit:4.13'
|
|
|
|
androidTestImplementation('com.squareup.okhttp3:mockwebserver:4.8.0')
|
|
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
|
|
androidTestImplementation 'androidx.test:runner:1.2.0'
|
|
androidTestImplementation 'androidx.test:rules:1.2.0'
|
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
|
|
androidTestImplementation 'androidx.test.espresso:espresso-intents:3.2.0'
|
|
androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'
|
|
implementation 'androidx.paging:paging-runtime-ktx:2.1.2'
|
|
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
|
|
implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0'
|
|
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"
|
|
|
|
implementation "com.mikepenz:materialdrawer:8.0.3"
|
|
|
|
//required support lib modules
|
|
implementation "androidx.annotation:annotation:1.1.0"
|
|
|
|
// Add for NavController support
|
|
implementation "com.mikepenz:materialdrawer-nav:8.0.3"
|
|
|
|
//iconics
|
|
implementation "com.mikepenz:materialdrawer-iconics:8.0.3"
|
|
implementation "com.mikepenz:iconics-views:5.0.2"
|
|
implementation 'com.mikepenz:google-material-typeface:3.0.1.4.original-kotlin@aar'
|
|
|
|
//Dagger (dependency injection)
|
|
implementation 'com.google.dagger:dagger-android:2.28.3'
|
|
implementation 'com.google.dagger:dagger-android-support:2.28.3'
|
|
// if you use the support libraries
|
|
kapt 'com.google.dagger:dagger-android-processor:2.28.3'
|
|
kapt 'com.google.dagger:dagger-compiler:2.28.3'
|
|
|
|
androidTestImplementation 'androidx.test:runner:1.2.0'
|
|
androidTestImplementation 'androidx.test:rules:1.2.0'
|
|
|
|
def fragment_version = '1.2.5'
|
|
debugImplementation "androidx.fragment:fragment-testing:$fragment_version"
|
|
|
|
// Use the most recent version of CameraX
|
|
def camerax_version = '1.0.0-beta07'
|
|
implementation "androidx.camera:camera-core:${camerax_version}"
|
|
implementation "androidx.camera:camera-camera2:${camerax_version}"
|
|
// CameraX Lifecycle library
|
|
implementation "androidx.camera:camera-lifecycle:$camerax_version"
|
|
|
|
// CameraX View class
|
|
implementation 'androidx.camera:camera-view:1.0.0-alpha14'
|
|
|
|
implementation 'com.karumi:dexter:6.2.1'
|
|
|
|
|
|
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
|
|
|
|
}
|
|
|
|
tasks.withType(Test) {
|
|
jacoco.includeNoLocationClasses = true
|
|
jacoco.excludes = ['jdk.internal.*']
|
|
}
|
|
|
|
|
|
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) {
|
|
|
|
reports {
|
|
xml.enabled = true
|
|
html.enabled = true
|
|
}
|
|
|
|
def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*']
|
|
def kotlinDebugTree = fileTree(dir: "$project.buildDir/tmp/kotlin-classes/debug", excludes: fileFilter)
|
|
def mainSrc = "$project.projectDir/src/main/java"
|
|
getSourceDirectories().from(files([mainSrc]))
|
|
getClassDirectories().from(files([kotlinDebugTree]))
|
|
getExecutionData().from(fileTree(dir: project.buildDir, includes: [
|
|
|
|
'outputs/code_coverage/debugAndroidTest/connected/*coverage.ec',
|
|
|
|
'jacoco/testDebugUnitTest.exec'
|
|
|
|
]))
|
|
}
|