首页 > 解决方案 > 如何将 javadoc/sources 与 aar 库捆绑在一起

问题描述

我正在为 Android 发布一个开源库。我想用它打包源代码/javadoc,以便用户在 Android Studio 中使用自动完成时可以看到文档。

我不希望用户必须手动导入sources.jar文件;我希望这会自动发生。这个链接声称如果代码是开源的,它可以很容易地完成,但它没有详细说明如何。

谁能解释一下如何?我在 SO 和 Google 的答案中找到的方法对我不起作用。这是我的build.gradle,它尝试包含.aar sources.jar,但它从未包含在最终的 .aar 中:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"
    defaultConfig {
        minSdkVersion 18
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    api fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    testImplementation 'junit:junit:4.13'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.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))
}

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

task classesJar(type: Jar) {
    from "$buildDir/intermediates/classes/release"
}

artifacts {
    archives classesJar
    archives javadocJar
    archives sourcesJar
}

标签: androidgradlejavadocandroid-studio-3.0aar

解决方案


推荐阅读