Создание библиотеки Android AAR, включая Javadoc и исходники

Моя команда разрабатывает библиотеку Android для использования в некоторых примерах приложений, также разработанных нами. Библиотека создается в виде файла AAR. Вот его build.gradle

apply plugin: 'com.android.library'
apply from: 'deploy.gradle'

android {
    compileSdkVersion 20
    buildToolsVersion '20.0.0'
    packagingOptions {
        exclude 'LICENSE.txt'
        exclude 'LICENSE'
        exclude 'NOTICE'
    }
    defaultConfig {
        // Excluded for brevity
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        abortOnError false
        // if true, check all issues, including those that are off by default
        checkAllWarnings true
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v13:20.0.+'
    compile 'com.google.android.gms:play-services:5.+'
    compile 'com.squareup.retrofit:retrofit:1.6.1'
}

Вот часть зависимостей в build.gradle приложения

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile ('com.mycompany.myapp:0.6.5-SNAPSHOT@aar') {
        transitive = true
        downloadJavadoc = true
        downloadSources = true
    }
}

Я могу использовать все классы lib, но я не вижу ни Javadocs, ни источников. Как я могу упаковать свой AAR, чтобы он включал источники и Javadocs?

3 ответа

Похоже, это не может быть сделано на данный момент. Однако добавление этих заданий в deploy.gradle, -javadoc.jar и -sources.jar созданы.

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

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

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

artifacts {
//    archives packageReleaseJar
    archives androidSourcesJar
    archives androidJavadocsJar
}

После этого источники и javadoc необходимо импортировать вручную. Согласно этой теме и этой открытой проблеме они не могут быть автоматически импортированы.

Это не решение, а важное замечание, независимо от того, какое решение вы придумаете. Если вы публикуете свою библиотеку в Maven, вы должны убедиться, что имя файла aar, javadocs и источников имеет одно и то же имя, иначе Android Studio не сможет получить javadocs и позволить разработчикам навести указатель мыши на класс / функцию. / property, чтобы получить помощь. Например, если ваша библиотека называется MyLib и она включает номер версии в имени файла, например:

MyLib-1.0.0.aar

Документы javadoc и исходные файлы должны быть названы:

      MyLib-1.0.0-javadoc.jar
MyLib-1.0.0-sources.jar

Это может показаться очевидным, но по умолчанию Android создает библиотеки, включающие такие названия вариантов, как:

MyLib-1.0.0-release.aar

Если слово «выпуск» также не появляется в именах файлов для документации javadoc и источников, Gradle не сможет их получить. Стандартное соглашение об именах при загрузке в Maven - это удаление имени варианта перед загрузкой.

Мне удалось создать банку с исходным кодом для библиотеки в Котлине , используя приведенный ниже

      task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.kotlin.sourceFiles
}

task androidJavadocsJar(type: Jar) {
    archiveClassifier.set("javadoc")
    //baseName = artifact_id
    from androidJavadocs.destinationDir
}

task androidSourcesJar(type: Jar) {
    archiveClassifier.set("sources")
    //baseName = artifact_id
    from android.sourceSets.main.kotlin.sourceFiles
}

artifacts {
//    archives packageReleaseJar
    archives androidSourcesJar
    archives androidJavadocsJar
}

Я сослался на библиотеку U-crop. классификатор, похоже, также устарел. с помощью java.sourcefiles созданы пустые каталоги src.

Этот код добавляется перед android{} в app > build.gradle

Другие вопросы по тегам