diff options
author | Colin Cross <ccross@android.com> | 2020-11-19 18:01:57 -0800 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2020-11-23 18:40:45 +0000 |
commit | ef11c9af76c6c5d591f7e5213a408526ceaed759 (patch) | |
tree | 273c6e17137f50007c1290491532fd3d31db48c3 | |
parent | d605a834ccfb27972be5835d02bccd38b54979ac (diff) | |
download | dagger2-ef11c9af76c6c5d591f7e5213a408526ceaed759.tar.gz |
Build hilt_android and its annotation processors
Add Android.bp rules for hilt_android and its many annotation
processors. Hilt uses 7 separate annotation processors. To reduce
compilation and runtime cost, compile them all together into
a single library, and embed it into a single java_plugin module.
The rest of the java_plugin modules provide the name of a processor
class, but contain no classes themselves.
Bug: 173800389
Test: mma
Change-Id: I0f255f7749e49f5ef1d49f354a93103df124efb9
-rw-r--r-- | Android.bp | 158 | ||||
-rwxr-xr-x | android-annotation-stubs/gen_annotations.sh | 1 | ||||
-rw-r--r-- | android-annotation-stubs/src/net/ltgt/gradle/incap/IncrementalAnnotationProcessorType.java | 1 |
3 files changed, 158 insertions, 2 deletions
diff --git a/Android.bp b/Android.bp index 6612f8cc7..0a095bb4e 100644 --- a/Android.bp +++ b/Android.bp @@ -83,6 +83,13 @@ java_plugin { visibility: ["//visibility:public"], processor_class: "dagger.internal.codegen.ComponentProcessor", generates_api: true, + static_libs: ["dagger2-compiler-lib"], + // shade guava to avoid conflicts with guava embedded in Error Prone. + jarjar_rules: "jarjar-rules.txt", +} + +java_library_host { + name: "dagger2-compiler-lib", use_tools_jar: true, srcs: [ @@ -114,8 +121,6 @@ java_plugin { "kotlinx_metadata_jvm", ], - // shade guava to avoid conflicts with guava embedded in Error Prone. - jarjar_rules: "jarjar-rules.txt", libs: [ "auto_factory_annotations", @@ -150,3 +155,152 @@ java_library { sdk_version: "core_current", srcs: ["android-annotation-stubs/src/**/*.java"], } + +// build core hilt library + +java_library { + name: "hilt_core", + srcs: [ + "java/dagger/hilt/*.java", + "java/dagger/hilt/codegen/*.java", + "java/dagger/hilt/components/*.java", + "java/dagger/hilt/internal/*.java", + "java/dagger/hilt/internal/aliasof/*.java", + "java/dagger/hilt/internal/definecomponent/*.java", + "java/dagger/hilt/internal/generatesrootinput/*.java", + "java/dagger/hilt/migration/*.java", + "java/dagger/hilt/processor/internal/aggregateddeps/AggregatedDeps.java", + ], + static_libs: [ + "jsr305", + "jsr330", + "dagger2", + ], + sdk_version: "core_current", +} + +// Build the android hilt library. Depending on this will enable the Hilt annotation processors. + +android_library { + name: "hilt_android", + visibility: ["//visibility:public"], + + srcs: [ + "java/dagger/hilt/android/*.java", + "java/dagger/hilt/android/components/*.java", + "java/dagger/hilt/android/migration/*.java", + "java/dagger/hilt/android/qualifiers/*.java", + "java/dagger/hilt/android/scopes/*.java", + "java/dagger/hilt/android/internal/*.java", + "java/dagger/hilt/android/internal/builders/*.java", + "java/dagger/hilt/android/internal/lifecycle/*.java", + "java/dagger/hilt/android/internal/managers/*.java", + "java/dagger/hilt/android/internal/migration/*.java", + "java/dagger/hilt/android/internal/modules/*.java", + ], + manifest: "java/dagger/hilt/android/AndroidManifest.xml", + static_libs: [ + "androidx.annotation_annotation", + "androidx.fragment_fragment", + "jsr305", + "jsr330", + "dagger2", + "hilt_core", + ], + sdk_version: "current", + min_sdk_version: "14", + + exported_plugins: [ + "dagger2-compiler", + "hilt_android_entry_point_processor", + "hilt_aggregated_deps_processor", + "hilt_alias_of_processor", + "hilt_define_component_processor", + "hilt_generates_root_input_processor", + "hilt_originating_element_processor", + "hilt_root_processor", + ], +} + +// Hilt has many annotation processors. To reduce compilation and runtime cost, they are all compiled +// into hilt_android_processors. A java_plugin can only expose a single processor class, so each has +// to be defined separately. Since they are not visible outside this package and will always be +// exported together, only the first actually contains the annotation processor classes. + +java_plugin { + name: "hilt_android_entry_point_processor", + generates_api: true, + processor_class: "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor", + static_libs: ["hilt_android_processors"], +} + +java_plugin { + name: "hilt_aggregated_deps_processor", + generates_api: true, + processor_class: "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor", +} + +java_plugin { + name: "hilt_alias_of_processor", + generates_api: true, + processor_class: "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor", +} + +java_plugin { + name: "hilt_define_component_processor", + generates_api: true, + processor_class: "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor", +} + +java_plugin { + name: "hilt_generates_root_input_processor", + generates_api: true, + processor_class: "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor", +} + +java_plugin { + name: "hilt_originating_element_processor", + generates_api: true, + processor_class: "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor", +} + +java_plugin { + name: "hilt_root_processor", + generates_api: true, + processor_class: "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor", +} + +java_library_host { + name: "hilt_android_processors", + use_tools_jar: true, + srcs: [ + "java/dagger/hilt/android/processor/**/*.java", + "java/dagger/hilt/codegen/*.java", + "java/dagger/hilt/processor/internal/**/*.java", + ], + exclude_srcs: [ + "java/dagger/hilt/android/processor/internal/bindvalue/*.java", + ], + plugins: [ + "auto_service_plugin", + "auto_value_plugin", + "auto_value_memoized_extension_plugin", + ], + static_libs: [ + "auto_common", + "auto_service_annotations", + "auto_value_annotations", + "auto_value_memoized_extension_annotations", + "guava", + "jsr305", + "dagger2-compiler-lib", + "dagger2", + "javapoet", + "jsr330", + "kotlin-stdlib", + "kotlinx_metadata_jvm", + "dagger2-android-annotation-stubs", + ], + // shade guava to avoid conflicts with guava embedded in Error Prone. + jarjar_rules: "jarjar-rules.txt", +} diff --git a/android-annotation-stubs/gen_annotations.sh b/android-annotation-stubs/gen_annotations.sh index ff3ed4b4f..d4a029029 100755 --- a/android-annotation-stubs/gen_annotations.sh +++ b/android-annotation-stubs/gen_annotations.sh @@ -59,6 +59,7 @@ cat > ${f} <<EOF package net.ltgt.gradle.incap; public enum IncrementalAnnotationProcessorType { + AGGREGATING, DYNAMIC, ISOLATING } diff --git a/android-annotation-stubs/src/net/ltgt/gradle/incap/IncrementalAnnotationProcessorType.java b/android-annotation-stubs/src/net/ltgt/gradle/incap/IncrementalAnnotationProcessorType.java index 1d7fc30ad..ef86328ae 100644 --- a/android-annotation-stubs/src/net/ltgt/gradle/incap/IncrementalAnnotationProcessorType.java +++ b/android-annotation-stubs/src/net/ltgt/gradle/incap/IncrementalAnnotationProcessorType.java @@ -16,6 +16,7 @@ package net.ltgt.gradle.incap; public enum IncrementalAnnotationProcessorType { + AGGREGATING, DYNAMIC, ISOLATING } |