我试图从我的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'
}
答案 0 :(得分:0)
您的sourceSets
区块似乎位于错误的位置。确保它位于与android
和buildTypes
相同的defaultConfig
块内。
另外,查看代码,根本不需要sourceSets块。一切都设置为默认值。