如何删除与sourceSets相关的Android Lint警告

时间:2016-03-28 13:17:15

标签: android intellij-idea gradle android-gradle lint

我试图从我的Android项目中删除最后一个Lint警告。我使用的是最新的IntelliJ IDEA 2016.1。

警告是:

    'sourceSets' cannot be applied to
 '(groovy.lang.Closure<com.android.build.gradle.api.AndroidSourceSet>)' (at line 28)

我在SO上看到了多个问题,其中cannot be applied to "XXXX"不是AndroidSourceSet,建议的解决方案不适用于我的问题。

我的Android Gradle插件版本是最新版本:1.5.0

这是我的sourceSets,位于我的gradle文件的android部分。

sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src/main/java']
        resources.srcDirs = ['src/main/java']
        aidl.srcDirs = ['src/main/java']
        renderscript.srcDirs = ['src/main/java']
        res.srcDirs = ['res']
        assets.srcDirs = ['assets']
    }
    androidTest.setRoot('src/test/java')
}

当我查看gradle文档时,我无法看到这有什么问题。我即将取消对此声明的检查,但我想确定它没问题。

感谢。

修改

这是完整的gradle文件(删除了一些隐私信息)。

    buildscript {
    repositories {
          mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
        classpath 'org.ajoberstar:gradle-git:1.0.0'
    }
}

apply plugin: 'com.android.application'
apply from: 'versionupdate.gradle'

android {
    compileSdkVersion 15
    buildToolsVersion "23.0.1"

    dataBinding {
        enabled = true
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src/main/java']
            resources.srcDirs = ['src/main/java']
            aidl.srcDirs = ['src/main/java']
            renderscript.srcDirs = ['src/main/java']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
        androidTest.setRoot('src/test/java')
    }

    packagingOptions {
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        pickFirst 'LICENSE.txt'
        return true
    }
    signingConfigs {
        Signing {
            keyAlias 'somekey'
            keyPassword 'key'
            storeFile file('../.keystore')
            storePassword 'password'
        }
    }

    configurations {
        all*.exclude group: 'commons-logging', module: 'commons-logging'
    }

    buildTypes {
        applicationVariants.all { variant ->
            variant.outputs.each { output ->
                output.outputFile = file("$project.buildDir/outputs/apk/myprogram.apk")
            }
        }

        debug {
            versionNameSuffix "-SNAPSHOT"
            //noinspection GroovyAssignabilityCheck
            signingConfig signingConfigs.Signing
        }
        release {
            //noinspection GroovyAssignabilityCheck
            signingConfig signingConfigs.Signing
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
            zipAlignEnabled true
        }
    }
    return true
}

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.google.android:android:4.1.1.4'
    compile 'org.springframework.android:spring-android-core:1.0.1.RELEASE'
    compile 'commons-io:commons-io:1.4'
    compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE'
    compile 'com.google.code.gson:gson:2.4'
    compile 'org.java-websocket:Java-WebSocket:1.3.0'
    compile 'joda-time:joda-time:2.3'
    compile 'net.erdfelt.android:apk-parser:1.0.2'
    compile 'org.apache.commons:commons-compress:1.9'
    compile 'com.fatboyindustrial.gson-jodatime-serialisers:gson-jodatime-serialisers:1.2.0'
    compile 'commons-validator:commons-validator:1.4.0'
    compile 'com.intellij:annotations:12.0'
}

1 个答案:

答案 0 :(得分:0)

您的sourceSets区块似乎位于错误的位置。确保它位于与androidbuildTypes相同的defaultConfig块内。

另外,查看代码,根本不需要sourceSets块。一切都设置为默认值。