aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2020-11-19 18:01:57 -0800
committerColin Cross <ccross@android.com>2020-11-23 18:40:45 +0000
commitef11c9af76c6c5d591f7e5213a408526ceaed759 (patch)
tree273c6e17137f50007c1290491532fd3d31db48c3
parentd605a834ccfb27972be5835d02bccd38b54979ac (diff)
downloaddagger2-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.bp158
-rwxr-xr-xandroid-annotation-stubs/gen_annotations.sh1
-rw-r--r--android-annotation-stubs/src/net/ltgt/gradle/incap/IncrementalAnnotationProcessorType.java1
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
}