Подтвердить что ты не робот

Android Gradle аннотации javadoc не существует

Я пытаюсь создать aar для публикации в jcenter.

Задача assembleRelease работает нормально, задача javadoc также отлично работает, но задача javadocJar выводит эту ошибку:

/Users/martinmoreno/Projects/android-dev-utils/dev-utils/src/main/java/com/tinchoapps/devutils/BitmapUtils.java:11: error: package android.support.annotation does not exist
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
}

Похоже, что это связано с зависимостями, потому что он дает некоторые исключения "class not found" тоже для классов внутри импорта, но не может понять, что неправильно.

Любые мысли?

4b9b3361

Ответ 1

Это фиксировало различные аналогичные ошибки для меня:

Добавьте следующую команду 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:+'
}

В Задаче JavaDoc добавьте эту строку:

classpath += configurations.javadocDeps

Ответ 2

Просто добавьте эту строку в свою задачу javadoc (обратите внимание на последнюю часть: + configurations.compile):

classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + configurations.compile

Последняя часть строки гарантирует, что javadoc использует зависимости компиляции для разрешения классов, которые он использует для javadoc. На этом этапе это не должно терпеть неудачу.

Ответ 3

Я столкнулся с этим при запуске ./gradlew install. Это происходило при компиляции JavaDocs (насколько я понимаю).

Я просто добавил failOnError false в task javadoc.

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

Я понимаю, что мы избежали ошибок при предупреждении о невозможности найти библиотеку аннотаций.

Ответ 4

Следуя от ответа Маркуса, так я должен был сделать это, чтобы он работал:

configurations {
    javadocDeps
}

dependencies {
    compile 'com.android.support:support-annotations:25.3.1'
    javadocDeps 'com.android.support:support-annotations:25.3.1'
}

tasks.whenTaskAdded { task ->
    if (task.name == 'androidJavadocs') {
        task.configure {
            classpath += configurations.javadocDeps
        }
    }
}