我有一个Android应用程序,当我运行以下命令时,其构建失败:

Here is the error I receive:

> Task :app:lint FAILED

FAILURE: Build failed with an exception.

* What went wrong:
A problem was found with the configuration of task ':app:lint'.
> No value has been specified for property 'lintClassPath'.

App module build.gradle file:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: 'kotlin-kapt'

apply plugin: 'io.fabric'

apply plugin: "androidx.navigation.safeargs"

// For Epoxy
kapt {
    correctErrorTypes = true
}

android {
    kotlinOptions {
        jvmTarget = '1.6'
    }
    compileSdkVersion 28
    defaultConfig {
        applicationId "..."
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 8
        versionName "0.4"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        debug {
            if (project.hasProperty('ApiKey')) {
                buildConfigField('String', 'API_KEY', ApiKey)
            } else {
                buildConfigField('String', 'API_KEY', "\"mock-key\"")
            }
        }
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            if (project.hasProperty('ApiKey')) {
                buildConfigField('String', 'API_KEY', ApiKey)
            } else {
                buildConfigField('String', 'API_KEY', "\"mock-key\"")
            }
        }

    }

    def build_param = "${build}"

    if (build_param != "dev") {
        //exclude production build
        android.variantFilter { variant ->
            if (variant.buildType.name == 'dev') {
                variant.setIgnore(true)
            }
        }
    } else {
        //exclude all except production build
        android.variantFilter { variant ->
            if (variant.buildType.name != 'dev') {
                variant.setIgnore(true)
            }
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    androidExtensions {
        experimental = true
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

    // Android
    def lifecycle_version = "2.0.0"
    implementation 'androidx.appcompat:appcompat:1.1.0-alpha02'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    implementation 'com.google.android.material:material:1.0.0'
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    implementation 'androidx.core:core-ktx:1.0.1'
    implementation 'androidx.preference:preference:1.0.0'
    implementation 'androidx.legacy:legacy-preference-v14:1.0.0'

    def room_version = "2.1.0-alpha04"
    implementation "androidx.room:room-runtime:$room_version"
    implementation "androidx.room:room-rxjava2:$room_version"
    kapt "androidx.room:room-compiler:$room_version"

    def nav_version = "1.0.0-rc02"
    implementation "android.arch.navigation:navigation-fragment-ktx:$nav_version"
    implementation "android.arch.navigation:navigation-ui-ktx:$nav_version"

    // Networking
    implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0'
    implementation 'com.squareup.okhttp3:okhttp:3.13.1'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.13.1'
    implementation 'com.squareup.retrofit2:converter-moshi:2.4.0'
    implementation 'com.squareup.moshi:moshi-adapters:1.8.0'
    // DI
    def koin_version = "1.0.2"
    implementation "org.koin:koin-android:$koin_version"
    implementation "org.koin:koin-androidx-scope:$koin_version"
    implementation "org.koin:koin-androidx-viewmodel:$koin_version"
    // Rx
    implementation 'io.reactivex.rxjava2:rxjava:2.2.7'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
    implementation 'io.reactivex.rxjava2:rxkotlin:2.3.0'
    implementation 'com.jakewharton.rxbinding2:rxbinding:2.2.0'
    implementation 'com.jakewharton.rxrelay2:rxrelay:2.1.0'
    // Image Loading
    implementation 'com.github.bumptech.glide:glide:4.8.0'
    kapt 'com.github.bumptech.glide:compiler:4.8.0'
    // Tests
    testImplementation 'junit:junit:4.12'
    testImplementation 'org.mockito:mockito-core:2.24.5'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    // UI
    implementation 'com.pierfrancescosoffritti.androidyoutubeplayer:core:9.0.1'
    implementation 'com.airbnb.android:epoxy:3.2.0'
    kapt 'com.airbnb.android:epoxy-processor:3.2.0'
    implementation 'com.github.VladimirWrites:Lemniscate:1.4.4'
    // Firebase
    implementation 'com.google.firebase:firebase-core:16.0.7'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
}

apply plugin: 'com.google.gms.google-services'

Project level build.gradle file:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.3.21'
    repositories {
        jcenter()
        maven {
            url 'https://maven.fabric.io/public'
        }
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.2.0'
        classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-rc02"
        classpath 'io.fabric.tools:gradle:1.27.0'
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
        }
        maven {
            url 'https://jitpack.io'
        }
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

I am not sure how to fix this. Downgrading the Android Gradle plugin does not solve the issue, and there are no issues related to this anywhere on Github or Stackoverflow.

有谁知道怎么解决这个问题吗?

推荐答案

我已经知道问题出在哪里了.我使用构建参数"dev"(Pbuild=dev)来确保CI(本例中是Travis)使用app/src/dev文件夹中google-services.json文件的模拟版本.但是,我忘了在构建中配置"dev"构建变量.我的模块的gradle文件.

Solution is to add the dev build type in all modules, like this:

build.gradle

android {
  ...

  buildTypes {
    release {
      ...
    }
    debug {
      ...
    }
    dev {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

Please note that you will have to do this for all the modules in your project.

Kotlin相关问答推荐

数据源配置

在构造函数中创建内部类实例时,只能使用包含类的接收器调用内部类的构造函数

扩展属性委托给实例属性

如何在数据类中删除空格 (String)?

如何将 `when` 与 2 个密封类一起使用并获取内部值?

Kotlin 如何使用其 get 函数在内部检索映射值

如何缩短 MaterialTheme.colors.primary?

Kotlin 中二叉树的深度

如何使用 Either monad 并避免嵌套 flatMap

如何使用 Kotlin KClass 属性 simpleName 生成空值

如何创建 Kotlin DSL - DSL 语法 Kotlin

如何在 Kotlin 中为变量设置监听器

Kotlin:如何在活页夹中返回正在运行的服务实例?

Kotlin 具体化的泛型不会按计划保持类型

未找到导入 kotlinx.coroutines.flow.*

使用Dagger 2提供函数依赖性

Spring Boot:更改属性占位符符号

项目未与 Gradle 链接

将字符串转换为HashMap的最简单方法

Android Compose 生产准备好了吗?