Task which extracts annotations from the source files, and writes them to one of two possible destinations:
Keep
annotated elements, a Proguard keep file (pointed to by
ExtractAnnotations.proguard, which lists APIs (classes, methods and fields)
that should not be removed even if no references in code are found to those APIs.We typically only extract external annotations when building libraries; ProGuard annotations are extracted when building libraries (to record in the AAR), or when building an app module where ProGuarding is enabled.
Modifiers | Name | Description |
---|---|---|
boolean |
allowErrors |
Whether we allow extraction even in the presence of symbol resolution errors |
File |
apiFilter |
An optional pointer to an API file to filter the annotations by (any annotations not found in the API file are considered hidden/not exposed.) |
List<String> |
bootClasspath |
Boot classpath: typically android.jar |
File |
classDir |
Location of class files. |
String |
encoding |
The encoding to use when reading source files. |
List<File> |
mergeJars |
A list of existing annotation zip files (or dirs) to merge in. |
File |
output |
The output .zip file to write the annotations database to, if any |
File |
proguard |
The output proguard file to write any @Keep rules into, if any |
BaseVariantData |
variant |
Fields inherited from class | Fields |
---|---|
class org.gradle.api.tasks.compile.AbstractCompile |
TASK_NAME, TASK_DESCRIPTION, TASK_GROUP, TASK_TYPE, TASK_DEPENDS_ON, TASK_OVERWRITE, TASK_ACTION |
Type | Name and description |
---|---|
protected void |
compile() |
boolean |
hasAndroidAnnotations() |
Methods inherited from class | Name |
---|---|
class AbstractAndroidCompile |
getAndroidGradlePluginVersion |
class org.gradle.api.tasks.compile.AbstractCompile |
org.gradle.api.tasks.compile.AbstractCompile#getClasspath(), org.gradle.api.tasks.compile.AbstractCompile#getDestinationDir(), org.gradle.api.tasks.compile.AbstractCompile#setClasspath(org.gradle.api.file.FileCollection), org.gradle.api.tasks.compile.AbstractCompile#setDestinationDir(java.io.File), org.gradle.api.tasks.compile.AbstractCompile#getTargetCompatibility(), org.gradle.api.tasks.compile.AbstractCompile#getSourceCompatibility(), org.gradle.api.tasks.compile.AbstractCompile#setSourceCompatibility(java.lang.String), org.gradle.api.tasks.compile.AbstractCompile#setTargetCompatibility(java.lang.String), org.gradle.api.tasks.compile.AbstractCompile#source([Ljava.lang.Object;), org.gradle.api.tasks.compile.AbstractCompile#getSource(), org.gradle.api.tasks.compile.AbstractCompile#setSource(java.lang.Object), org.gradle.api.tasks.compile.AbstractCompile#include(org.gradle.api.specs.Spec), org.gradle.api.tasks.compile.AbstractCompile#include(groovy.lang.Closure), org.gradle.api.tasks.compile.AbstractCompile#include(java.lang.Iterable), org.gradle.api.tasks.compile.AbstractCompile#include([Ljava.lang.String;), org.gradle.api.tasks.compile.AbstractCompile#include([Ljava.lang.String;), org.gradle.api.tasks.compile.AbstractCompile#include(java.lang.Iterable), org.gradle.api.tasks.compile.AbstractCompile#include(groovy.lang.Closure), org.gradle.api.tasks.compile.AbstractCompile#include(org.gradle.api.specs.Spec), org.gradle.api.tasks.compile.AbstractCompile#exclude(groovy.lang.Closure), org.gradle.api.tasks.compile.AbstractCompile#exclude(java.lang.Iterable), org.gradle.api.tasks.compile.AbstractCompile#exclude([Ljava.lang.String;), org.gradle.api.tasks.compile.AbstractCompile#exclude(org.gradle.api.specs.Spec), org.gradle.api.tasks.compile.AbstractCompile#exclude([Ljava.lang.String;), org.gradle.api.tasks.compile.AbstractCompile#exclude(groovy.lang.Closure), org.gradle.api.tasks.compile.AbstractCompile#exclude(org.gradle.api.specs.Spec), org.gradle.api.tasks.compile.AbstractCompile#exclude(java.lang.Iterable), org.gradle.api.tasks.compile.AbstractCompile#getIncludes(), org.gradle.api.tasks.compile.AbstractCompile#getExcludes(), org.gradle.api.tasks.compile.AbstractCompile#setIncludes(java.lang.Iterable), org.gradle.api.tasks.compile.AbstractCompile#setIncludes(java.lang.Iterable), org.gradle.api.tasks.compile.AbstractCompile#setExcludes(java.lang.Iterable), org.gradle.api.tasks.compile.AbstractCompile#setExcludes(java.lang.Iterable), org.gradle.api.tasks.compile.AbstractCompile#conventionMapping(java.lang.String, java.util.concurrent.Callable), org.gradle.api.tasks.compile.AbstractCompile#conventionMapping(java.lang.String, groovy.lang.Closure), org.gradle.api.tasks.compile.AbstractCompile#getConventionMapping(), org.gradle.api.tasks.compile.AbstractCompile#setProperty(java.lang.String, java.lang.Object), org.gradle.api.tasks.compile.AbstractCompile#toString(), org.gradle.api.tasks.compile.AbstractCompile#compareTo(java.lang.Object), org.gradle.api.tasks.compile.AbstractCompile#compareTo(org.gradle.api.Task), org.gradle.api.tasks.compile.AbstractCompile#getName(), org.gradle.api.tasks.compile.AbstractCompile#getActions(), org.gradle.api.tasks.compile.AbstractCompile#setName(java.lang.String), org.gradle.api.tasks.compile.AbstractCompile#getState(), org.gradle.api.tasks.compile.AbstractCompile#getState(), org.gradle.api.tasks.compile.AbstractCompile#getPath(), org.gradle.api.tasks.compile.AbstractCompile#getLogger(), org.gradle.api.tasks.compile.AbstractCompile#leftShift(groovy.lang.Closure), org.gradle.api.tasks.compile.AbstractCompile#execute(), org.gradle.api.tasks.compile.AbstractCompile#isEnabled(), org.gradle.api.tasks.compile.AbstractCompile#configure(groovy.lang.Closure), org.gradle.api.tasks.compile.AbstractCompile#configure(groovy.lang.Closure), org.gradle.api.tasks.compile.AbstractCompile#property(java.lang.String), org.gradle.api.tasks.compile.AbstractCompile#getDescription(), org.gradle.api.tasks.compile.AbstractCompile#getGroup(), org.gradle.api.tasks.compile.AbstractCompile#setDescription(java.lang.String), org.gradle.api.tasks.compile.AbstractCompile#getProject(), org.gradle.api.tasks.compile.AbstractCompile#getStandardOutputCapture(), org.gradle.api.tasks.compile.AbstractCompile#getExtensions(), org.gradle.api.tasks.compile.AbstractCompile#setGroup(java.lang.String), org.gradle.api.tasks.compile.AbstractCompile#getAnt(), org.gradle.api.tasks.compile.AbstractCompile#getConvention(), org.gradle.api.tasks.compile.AbstractCompile#hasProperty(java.lang.String), org.gradle.api.tasks.compile.AbstractCompile#getLogging(), org.gradle.api.tasks.compile.AbstractCompile#getLogging(), org.gradle.api.tasks.compile.AbstractCompile#getAsDynamicObject(), org.gradle.api.tasks.compile.AbstractCompile#setActions(java.util.List), org.gradle.api.tasks.compile.AbstractCompile#getTaskDependencies(), org.gradle.api.tasks.compile.AbstractCompile#getTaskDependencies(), org.gradle.api.tasks.compile.AbstractCompile#getDependsOn(), org.gradle.api.tasks.compile.AbstractCompile#setDependsOn(java.lang.Iterable), org.gradle.api.tasks.compile.AbstractCompile#dependsOn([Ljava.lang.Object;), org.gradle.api.tasks.compile.AbstractCompile#onlyIf(groovy.lang.Closure), org.gradle.api.tasks.compile.AbstractCompile#onlyIf(org.gradle.api.specs.Spec), org.gradle.api.tasks.compile.AbstractCompile#setOnlyIf(org.gradle.api.specs.Spec), org.gradle.api.tasks.compile.AbstractCompile#setOnlyIf(groovy.lang.Closure), org.gradle.api.tasks.compile.AbstractCompile#setDidWork(boolean), org.gradle.api.tasks.compile.AbstractCompile#getDidWork(), org.gradle.api.tasks.compile.AbstractCompile#doFirst(org.gradle.api.Action), org.gradle.api.tasks.compile.AbstractCompile#doFirst(groovy.lang.Closure), org.gradle.api.tasks.compile.AbstractCompile#doLast(groovy.lang.Closure), org.gradle.api.tasks.compile.AbstractCompile#doLast(org.gradle.api.Action), org.gradle.api.tasks.compile.AbstractCompile#deleteAllActions(), org.gradle.api.tasks.compile.AbstractCompile#getEnabled(), org.gradle.api.tasks.compile.AbstractCompile#setEnabled(boolean), org.gradle.api.tasks.compile.AbstractCompile#dependsOnTaskDidWork(), org.gradle.api.tasks.compile.AbstractCompile#getInputs(), org.gradle.api.tasks.compile.AbstractCompile#getOutputs(), org.gradle.api.tasks.compile.AbstractCompile#getOutputs(), org.gradle.api.tasks.compile.AbstractCompile#getTemporaryDir(), org.gradle.api.tasks.compile.AbstractCompile#mustRunAfter([Ljava.lang.Object;), org.gradle.api.tasks.compile.AbstractCompile#setMustRunAfter(java.lang.Iterable), org.gradle.api.tasks.compile.AbstractCompile#getMustRunAfter(), org.gradle.api.tasks.compile.AbstractCompile#finalizedBy([Ljava.lang.Object;), org.gradle.api.tasks.compile.AbstractCompile#setFinalizedBy(java.lang.Iterable), org.gradle.api.tasks.compile.AbstractCompile#getFinalizedBy(), org.gradle.api.tasks.compile.AbstractCompile#shouldRunAfter([Ljava.lang.Object;), org.gradle.api.tasks.compile.AbstractCompile#setShouldRunAfter(java.lang.Iterable), org.gradle.api.tasks.compile.AbstractCompile#getShouldRunAfter(), org.gradle.api.tasks.compile.AbstractCompile#getTaskActions(), org.gradle.api.tasks.compile.AbstractCompile#getOnlyIf(), org.gradle.api.tasks.compile.AbstractCompile#executeWithoutThrowingTaskFailure(), org.gradle.api.tasks.compile.AbstractCompile#getExecuter(), org.gradle.api.tasks.compile.AbstractCompile#setExecuter(org.gradle.api.internal.tasks.TaskExecuter), org.gradle.api.tasks.compile.AbstractCompile#getValidators(), org.gradle.api.tasks.compile.AbstractCompile#addValidator(org.gradle.api.internal.tasks.execution.TaskValidator), org.gradle.api.tasks.compile.AbstractCompile#getImpliesSubProjects(), org.gradle.api.tasks.compile.AbstractCompile#setImpliesSubProjects(boolean), org.gradle.api.tasks.compile.AbstractCompile#getTemporaryDirFactory(), org.gradle.api.tasks.compile.AbstractCompile#setProject(org.gradle.api.Project), org.gradle.api.tasks.compile.AbstractCompile#injectIntoNewInstance(org.gradle.api.internal.project.ProjectInternal, java.lang.String, java.util.concurrent.Callable), org.gradle.api.tasks.compile.AbstractCompile#wait(), org.gradle.api.tasks.compile.AbstractCompile#wait(long), org.gradle.api.tasks.compile.AbstractCompile#wait(long, int), org.gradle.api.tasks.compile.AbstractCompile#equals(java.lang.Object), org.gradle.api.tasks.compile.AbstractCompile#hashCode(), org.gradle.api.tasks.compile.AbstractCompile#getClass(), org.gradle.api.tasks.compile.AbstractCompile#notify(), org.gradle.api.tasks.compile.AbstractCompile#notifyAll() |
Whether we allow extraction even in the presence of symbol resolution errors
An optional pointer to an API file to filter the annotations by (any annotations not found in the API file are considered hidden/not exposed.) This is in the same format as the api-versions.xml file found in the SDK.
Location of class files. If set, any non-public typedef source retention annotations will be removed prior to .jar packaging.
The encoding to use when reading source files. The output file will ignore this and will always be a UTF-8 encoded .xml file inside the annotations zip file.
A list of existing annotation zip files (or dirs) to merge in. This can be used to merge in
a hardcoded set of annotations that are not present in the source code, such as
@Contract
annotations we'd like to record without actually having a dependency
on the IDEA annotations library.
The output .zip file to write the annotations database to, if any
The output proguard file to write any