Gradle:使用toString()方法的DefaultAndroidSourceDirectorySet到File已被弃用

时间:2014-06-15 00:36:52

标签: android gradle android-gradle build.gradle

我想更新Android库项目的Gradle插件。新版本为0.10.4。 Gradle包装器位于1.10。当我在项目上运行./gradlew install时,会出现以下警告

Converting class com.android.build.gradle.internal.api. \
DefaultAndroidSourceDirectorySet to File using toString() method has 
been deprecated and is scheduled to be removed in Gradle 2.0. 
Please use java.io.File, java.lang.String, java.net.URL, or java.net.URI instead.

我不确定,但标记的行应该是原因:

// build.gradle

task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java // <----
}

task androidJavadocsJar(type: Jar) {
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}

task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java // <----
}

如何重写代码以消除警告?

1 个答案:

答案 0 :(得分:10)

android.sourceSets.main.java没有您期望的类型。您将其传递给期望File[]的内容,但它实际上具有com.android.build.gradle.internal.api.DefaultAndroidSourceDirectorySet类型。如果您查看API for Android sourceSets处的{{3}},就会发现sourceDirs方法可以返回您想要的内容。所以按照以下方式设置你的任务:

task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
}