當(dāng)構(gòu)建 Android 應(yīng)用程序或庫時(shí),常見的做法是將你的工件保存到本地文件儲(chǔ)存或回購。
除了你的 APK,還有一些你想要/需要保存的附加的工件,并且你想要這樣做。最常見的一個(gè)是 Javadoc,或許是你的 proguard 生成文件,如映射文件。
我當(dāng)然希望 Gradle 任務(wù)能夠處理這個(gè)問題。所以讓我們看看你可能想用的一些任務(wù)。
下面將添加任務(wù)來為每一個(gè)構(gòu)建類型生成 Javadocs,并組裝成 jar 存檔。
android.applicationVariants.all { variant ->
project.task("${variant.name.capitalize()}Javadoc", type: Javadoc) {
destinationDir = new File("$project.buildDir/javadoc/$variant.name")
source = variant.javaCompile.source
ext.androidJar = "${project.android.sdkDirectory}/platforms/${project.android.compileSdkVersion}/android.jar"
classpath = project.files(variant.javaCompile.classpath.files) + project.files(ext.androidJar)
options {
linksOffline("http://d.android.com/reference", "${project.android.sdkDirectory}/docs/reference")
links("http://docs.oracle.com/javase/7/docs/api/");
setMemberLevel(JavadocMemberLevel.PACKAGE)
docEncoding = 'UTF-8'
encoding = 'UTF-8'
charSet = 'UTF-8'
}
exclude '**/BuildConfig.java'
exclude '**/R.java'
}
project.task("generate${variant.name.capitalize()}JavadocJar", type: Jar, dependsOn: "${variant.name.capitalize()}Javadoc") {
classifier 'javadoc'
description = 'Assembles a jar archive containing the generated Javadoc API documentation of $variant.name.'
destinationDir = new File("$project.buildDir/libs/")
exclude '**/BuildConfig.class'
exclude '**/R.class'
from "$project.buildDir/javadoc/$variant.name"
}
}
當(dāng)添加到 build.gradle
文件時(shí),會(huì)從 gradle generateReleaseSourcesJar
命令行生成 Javadoc jar 檔案。
以下將添加任務(wù)來組裝一個(gè)包含 Java 源的 jar 檔案。
android.applicationVariants.all { variant ->
project.task("generate${variant.name.capitalize()}SourcesJar", type: Jar) {
classifier = 'sources'
description = 'Assembles a jar archive containing the main sources of $variant.name..'
destinationDir = new File("$project.buildDir/libs/")
// exclude generated files
exclude '**/BuildConfig.java'
exclude '**/R.java'
from variant.javaCompile.source
}
}
當(dāng)添加到你的 build.gradle
文件時(shí),會(huì)從 gradle generateReleaseSourcesJar
的命令行生成你的源 jar 檔案。
以下將添加任務(wù)來組裝一個(gè)包含生成混淆文件的 zip 檔案。
android.applicationVariants.all { variant ->
project.task("generate${variant.name.capitalize()}ProguardFilesJar", type: Zip) {
classifier 'proguard'
description = 'Assembles a jar archive containing the Proguard files of $variant.name..'
destinationDir = new File("$project.buildDir/libs/")
from "$project.buildDir/outputs/mapping"
}
}
當(dāng)添加到你的 build.gradle
文件時(shí),會(huì)從 gradle generateReleaseProguardFilesJar
的命令行生成混淆 zip 檔案。