2015-04-16 15 views
20

Próbuję zbudować aar do opublikowania na jcenter.Android Gradle Adnotacja javadoc nie istnieje

Zadaniem assembleRelease działa ok, zadanie javadoc również działa dobrze, ale wyjścia zadaniowe javadocJar ten błąd:

/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; 

Oto (uproszczony) Gradle plik:

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 
} 

Wydaje związane z zależnościami, ponieważ daje pewne wyjątki "nie znaleziono klasy" na klasach wewnątrz importu, ale nie może dowiedzieć się, co jest nie tak.

Jakieś myśli?

+0

Czy używasz programu proguard w tym przypadku? – AndroidEx

+0

nop, Edytowałem z ustawieniami proguard – Cheborra

+0

Widzę, że już wypróbowałeś kilka rozwiązań :) Czy kompilacja przebiega bez błędów, jeśli usuniesz adnotacje z 'BitmapUtils'? – AndroidEx

Odpowiedz

14

to naprawić różne błędy podobne do mnie:

Dodaj do build.gradle następujące:

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:+' 
} 

W JavaDoc Zadanie dodać ten wiersz:

classpath += configurations.javadocDeps 
+0

Działa jak urok. Dzięki :) –

+0

Tak, ale które zadanie "javadoc" to umieści?Wtyczka instalacyjna Maven (via) wywołuje 'javadoc' zamiast' androidJavadoc'. A gradle nie pozwala mi modyfikować oryginalnego zadania 'javadoc'. Jakieś pomysły? – milosmns

+0

Tworzenie własnego zadania javadoc tak: allJavadoc zadania (dependsOn: [ ''] assembleRelease, typ: Javadoc) { classpath + = configurations.javadocDeps } –

3

mam do czynienia to podczas działania ./gradlew install. Występował podczas kompilacji JavaDocs (o ile mogę to zrozumieć).

Właśnie dodałem failOnError false do task javadoc.

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

Rozumiem, że uniknęliśmy niepowodzenia ostrzeżeń, że nie można znaleźć biblioteki adnotacji.

+0

To działało dla mnie. Występuje błąd biblioteki wsparcia i innych bibliotek zależnych. – Fenil

6

Wystarczy dodać ten wiersz w swoim zadaniu javadoc (zauważ ostatnią część: + configurations.compile):

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

Ostatnia część linii pilnuje Javadoc używać zależności kompilacji rozwiązać klas to użyciem javadoc . W tym momencie nie powinno już zawieść.

+2

to właśnie dla mnie zadziałało! – jpage4500

1

obserwuję od odpowiedzi Markus, to jak miałem to zrobić, aby to działało:

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 
     } 
    } 
} 
+0

To zadziałało dla mnie. Jednak zamiast 'androidJavadocs' użyłem' javadoc'. – fernandospr

0

Od wprowadzenia konfiguracji zależność api i implementation w Android Gradle 3.0.0, compile jest przestarzała. Aby to zależność w ścieżce klasy javadoc implementation, zaktualizowałem Loius CADs answer:

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

Nie spodziewam się, że jest to najczystszy z możliwych rozwiązań. Prawdopodobnie istnieje powód, dla którego configuration.implementation nie jest domyślnie rozpoznawalny.

Powiązane problemy