[英]Create Android library AAR including javadoc and sources
我的團隊正在開發一個 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 類,但我看不到 Javadoc 和源代碼。 如何打包我的 AAR 以使其包含源代碼和 Javadoc?
好像現在無法做到。 但是,在deploy.gradle
添加這些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
}
這不是一個解決方案,而是一個重要的注意事項,無論您想出什么解決方案。 如果您將庫發布到 Maven,則必須確保 aar、javadocs 文件和源的名稱都具有相同的名稱,否則 Android Studio 將無法檢索 javadoc 並讓開發人員將鼠標移到類/函數上/property 以獲得幫助。 例如,如果您的庫名為 MyLib 並且它在文件名中包含一個版本號,例如:
MyLib-1.0.0.aar
javadocs 和源文件必須命名為:
MyLib-1.0.0-javadoc.jar
MyLib-1.0.0-sources.jar
這似乎很明顯,但默認情況下,Android 構建庫以包含變體名稱,例如:
MyLib-1.0.0-release.aar
如果“發布”一詞也沒有出現在 javadoc 和源的文件名中,Gradle 將無法檢索它們。 上傳到 Maven 時的標准命名約定是在上傳之前剝離變體名稱。
我能夠使用以下內容在 Kotlin 中為庫創建源 jar
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 目錄。
這段代碼是在 app > build.gradle 中的 android{} 之前添加的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.