build.gradle 6.19 KB
Newer Older
1 2 3 4
apply plugin: "com.android.application"
apply plugin: "kotlin-android"
apply plugin: "kotlin-android-extensions"
apply plugin: "kotlin-kapt"
5
apply plugin: "androidx.navigation.safeargs.kotlin"
Christophe Henry's avatar
Christophe Henry committed
6
apply plugin: "com.diffplug.gradle.spotless"
7 8

android {
9 10
    def schema_location = "$projectDir/src/main/java/fr/chenry/android/freshrss/store/database/migrations".toString()

11 12 13 14 15
    compileSdkVersion 28
    defaultConfig {
        applicationId "fr.chenry.android.freshrss"
        minSdkVersion 21
        targetSdkVersion 28
Christophe Henry's avatar
Christophe Henry committed
16 17
        versionCode 5
        versionName "1.1.0"
18
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
19 20
        javaCompileOptions {
            annotationProcessorOptions {
21
                arguments = ["room.schemaLocation": schema_location]
22 23
            }
        }
24
    }
Christophe Henry's avatar
Christophe Henry committed
25 26 27 28 29

    lintOptions {
        disable "AllowBackup", "VectorPath"
    }

30 31 32 33
    sourceSets {
        androidTest.assets.srcDirs += files(schema_location)
    }

34 35 36 37 38 39
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
        }
    }
40

41 42 43
    dataBinding {
        enabled = true
    }
Christophe Henry's avatar
Christophe Henry committed
44

45
    configurations.all {
46 47
        resolutionStrategy.force "com.google.code.findbugs:jsr305:1.3.9"
        exclude group: "com.google.guava", module: "listenablefuture"
48 49
    }

Christophe Henry's avatar
Christophe Henry committed
50 51 52 53 54 55
    applicationVariants.all { variant ->
        if (variant.name.contains("elease")) {
            variant.mergeAssetsProvider.get().doLast {
                delete new FileNameFinder().getFileNames(buildDir.absolutePath, "**/config.properties")
            }
        }
Christophe Henry's avatar
Christophe Henry committed
56
    }
57 58 59 60

    androidExtensions {
        experimental = true
    }
61 62
}

Christophe Henry's avatar
Christophe Henry committed
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
configurations {
    ktlint
}

spotless {
    format "misc", {
        target "**/*.gradle", "**/*.md", "**/.gitignore", "**/*.kt"
        trimTrailingWhitespace()
        endWithNewline()
    }
    kotlin {
        ktlint().userData([
            "trim_trailing_whitespace": true,
            "insert_final_newline": true,
            "max_line_length": 120,
        ])
    }
    format "xml", {
        target fileTree(".") {
            include "**/*.xml"
            exclude "**/build/**"
        }
        eclipseWtp("xml").configFile "$rootDir/freshrss.xmlformat.prefs".toString()
    }
}

89 90
dependencies {
    def lifecycle_version = "2.0.0"
91
    def room_version = "2.1.0-alpha04"
92
    def roomigrant_version = "0.1.1"
93
    def fuel_version = "2.0.1"
94
    def jackson_version = "2.9.6"
95 96 97 98
    def espresso_version = "3.1.1"
    def test_runnner_version = "1.1.1"
    def promise_version = "3.3.0"
    def android_support_version = "28.0.0"
Christophe Henry's avatar
Christophe Henry committed
99
    def android_navigation = "1.0.0"
100

Christophe Henry's avatar
Christophe Henry committed
101 102 103
    // Linter
    ktlint "com.github.shyiko:ktlint:0.31.0"

104 105
    implementation "androidx.legacy:legacy-support-v4:1.0.0"
    implementation fileTree(include: ["*.jar"], dir: "libs")
Christophe Henry's avatar
Christophe Henry committed
106 107

    // Kotlin stuff
108 109
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
Christophe Henry's avatar
Christophe Henry committed
110 111

    // Compat libraries
112 113 114 115
    implementation "com.android.support:appcompat-v7:$android_support_version"
    implementation "com.android.support:preference-v7:$android_support_version"
    implementation "com.android.support:support-core-utils:$android_support_version"
    implementation "com.android.support:support-fragment:$android_support_version"
116
    implementation "com.android.support:support-compat:$android_support_version"
117
    implementation "com.android.support:support-core-ui:$android_support_version"
Christophe Henry's avatar
Christophe Henry committed
118 119

    // AndroidX layout
Christophe Henry's avatar
Christophe Henry committed
120
    implementation "androidx.appcompat:appcompat:1.1.0-alpha04"
Christophe Henry's avatar
Christophe Henry committed
121
    implementation "androidx.core:core-ktx:1.1.0-alpha05"
122
    implementation "com.google.android.material:material:1.1.0-alpha05"
123 124
    implementation "androidx.constraintlayout:constraintlayout:1.1.3"
    implementation "androidx.recyclerview:recyclerview:1.0.0"
125 126

    // ViewModel and LiveData
127
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
128 129
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version"
Christophe Henry's avatar
Christophe Henry committed
130
    kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
131
    androidTestImplementation "androidx.arch.core:core-testing:$lifecycle_version"
132

Christophe Henry's avatar
Christophe Henry committed
133
    // Room
134
    kapt "androidx.room:room-compiler:$room_version"
135
    implementation "androidx.room:room-runtime:$room_version"
136 137 138
    implementation "androidx.room:room-rxjava2:$room_version"
    implementation "androidx.room:room-guava:$room_version"
    implementation "androidx.room:room-coroutines:$room_version"
139 140 141 142
    androidTestImplementation "androidx.room:room-testing:$room_version"
    // roomigrant
    implementation "com.github.MatrixDev.Roomigrant:RoomigrantLib:$roomigrant_version"
    kapt "com.github.MatrixDev.Roomigrant:RoomigrantCompiler:$roomigrant_version"
143

144
    // HTTP and promises
145 146
    implementation "com.github.kittinunf.fuel:fuel:$fuel_version"
    implementation "com.github.kittinunf.fuel:fuel-android:$fuel_version"
147 148
    implementation("com.github.kittinunf.fuel:fuel-jackson:$fuel_version") { transitive = false }
    implementation "com.fasterxml.jackson.module:jackson-module-kotlin:$jackson_version"
149
    implementation "com.fasterxml.jackson.datatype:jackson-datatype-joda:$jackson_version"
150 151 152
    implementation "nl.komponents.kovenant:kovenant:$promise_version"
    implementation "nl.komponents.kovenant:kovenant-android:$promise_version"

153 154 155 156
    // Navigation
    implementation "android.arch.navigation:navigation-fragment-ktx:$android_navigation"
    implementation "android.arch.navigation:navigation-ui-ktx:$android_navigation"

Christophe Henry's avatar
Christophe Henry committed
157
    // Utils
158 159 160
    implementation "org.apache.commons:commons-text:1.4"
    implementation "joda-time:joda-time:2.10.1"
    implementation "com.squareup.picasso:picasso:2.71828"
161
    implementation "com.x5dev:chunk-templates:3.4.0"
162 163 164
    implementation "eu.davidea:flexible-adapter:5.1.0"
    implementation "eu.davidea:flexible-adapter-ui:1.0.0"

Christophe Henry's avatar
Christophe Henry committed
165
    // Tests
166
    testImplementation "junit:junit:4.12"
Christophe Henry's avatar
Christophe Henry committed
167
    androidTestImplementation "androidx.test:runner:$test_runnner_version"
168
    androidTestImplementation "androidx.test.espresso:espresso-core:$espresso_version"
Christophe Henry's avatar
Christophe Henry committed
169 170

    // Debug
171
    debugImplementation "com.facebook.stetho:stetho:1.5.0"
172
}