Android Gradle javadoc注释不存在

Che*_*rra 23 android javadoc android-gradle-plugin

我正在尝试建立一个在jcenter上发布的aar.

assembleRelease任务正常,javadoc任务也可正常工作,但javadocJar任务输出此错误:

/Users/martinmoreno/Projects/android-dev-utils/dev-utils/src/main/java/com/tinchoapps/devutils/BitmapUtils.java:11:错误:包android.support.annotation不存在
import android.support .annotation.NonNull;

这是(简化的)gradle文件:

apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'


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

...

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:support-annotations:20.0.0'
    compile 'com.android.support:support-v4:22.0.0'
}

task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    destinationDir = file("../javadoc/")
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives sourcesJar
    archives javadocJar
}
Run Code Online (Sandbox Code Playgroud)

它似乎与依赖关系有关,因为它在导入的类中也提供了一些"类未找到"异常,但无法弄清楚出错了什么.

有什么想法吗?

Mar*_*eth 18

这为我修复了各种类似的错误:

将以下内容添加到build.gradle:

configurations {
    javadocDeps
}

dependencies {
    compile 'com.android.support:support-annotations:22.2.0'
    javadocDeps 'com.android.support:support-annotations:22.2.0'
    androidTestCompile 'junit:junit:4.+'
    androidTestCompile 'com.jayway.android.robotium:robotium-solo:+'
}
Run Code Online (Sandbox Code Playgroud)

在JavaDoc任务中添加以下行:

classpath += configurations.javadocDeps
Run Code Online (Sandbox Code Playgroud)


Lou*_*CAD 8

只需在javadoc任务中添加此行(注意最后一部分:) + configurations.compile:

classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + configurations.compile
Run Code Online (Sandbox Code Playgroud)

该行的最后一部分确保javadoc使用编译依赖项来解析它用于javadoc的类.此时,它不应该再失败了.


sta*_*air 5

由于Android Gradle 3.0.0中引入了apiand implementation依赖配置,因此已弃用。为了在javadoc类路径中包含依赖项,我更新了Loius CAD答案compileimplementation

task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    configurations.implementation.setCanBeResolved(true)
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + configurations.implementation
}
Run Code Online (Sandbox Code Playgroud)

我不希望这是最干净的解决方案。configuration.implementation默认情况下无法解决可能是有原因的。