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

JJD*_*JJD 5 android gradle build.gradle android-gradle-plugin

我想更新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.
Run Code Online (Sandbox Code Playgroud)

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

// 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 // <----
}
Run Code Online (Sandbox Code Playgroud)

如何重写代码以摆脱警告?

Sco*_*rta 10

android.sourceSets.main.java没有你期望的类型.你将它传递给期望的东西File[],但实际上它有类型com.android.build.gradle.internal.api.DefaultAndroidSourceDirectorySet.如果您查看AndroidsourceSetsAPI,您会发现有一种sourceDirs方法可以返回您想要的内容.所以设置你的任务是这样的:

task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
}
Run Code Online (Sandbox Code Playgroud)