Simplify ThemePicker dependencies

Replace ThemePicker_common_defaults, ThemePicker_srcs and
ThemePicker_res with a single ThemePickerLib android_library.
This will compile ThemePicker_srcs and ThemePicker_res a single
time instead of in every module.

Also replace the ThemePicker_src_overrides with a ThemePickerOverridesLib
java_library.

Bug: 319160342
Test: builds
Test: atest --host ThemePickerRoboTests
Flag: NA
Change-Id: Ia55daf02a86c331d77d33187b1173e13422f3fc1
diff --git a/Android.bp b/Android.bp
index e6c07a8..4b78713 100644
--- a/Android.bp
+++ b/Android.bp
@@ -19,22 +19,6 @@
     default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
-filegroup {
-    name: "ThemePicker_srcs",
-    srcs: [
-        "src/**/*.java",
-        "src/**/*.kt",
-    ],
-}
-
-filegroup {
-    name: "ThemePicker_src_overrides",
-    srcs: [
-        "src_override/**/*.java",
-        "src_override/**/*.kt",
-    ],
-}
-
 // Production-only files that should be excluded in tests.
 filegroup {
     name: "ThemePicker_src_prod",
@@ -42,6 +26,30 @@
     srcs: ["src_override/com/android/customization/picker/CustomizationPickerApplication.java"],
 }
 
+java_library {
+    name: "ThemePickerOverridesLib",
+    srcs: [
+        "src_override/**/*.java",
+        "src_override/**/*.kt",
+    ],
+    exclude_srcs: [":ThemePicker_src_prod"],
+    libs: [
+        "hilt_android",
+        "ThemePickerLib",
+    ],
+}
+
+java_library {
+    name: "ThemePickerApplicationLib",
+    srcs: [":ThemePicker_src_prod"],
+    libs: [
+        "hilt_android",
+        "ThemePickerLib",
+        "ThemePickerOverridesLib",
+    ],
+}
+
+
 filegroup {
     name: "ThemePicker_Manifest",
     srcs: [
@@ -49,33 +57,8 @@
     ],
 }
 
-genrule {
-    name: "ThemePicker_res",
-    tools: ["soong_zip"],
-    srcs: [
-        "res/**/*",
-    ],
-    out: ["ThemePicker_res.zip"],
-    cmd: "INPUTS=($(in)) && "
-        + "RES_DIR=$$(dirname $$(dirname $${INPUTS[0]})) && "
-        + "$(location soong_zip) -o $(out) -C $$RES_DIR -D $$RES_DIR"
-}
-
-genrule {
-    name: "ThemePicker_res_overrides",
-    tools: ["soong_zip"],
-    srcs: [
-        "res_override/**/*",
-    ],
-    out: ["ThemePicker_res_overrides.zip"],
-    cmd: "INPUTS=($(in)) && "
-        + "RES_DIR=$$(dirname $$(dirname $${INPUTS[0]})) && "
-        + "$(location soong_zip) -o $(out) -C $$RES_DIR -D $$RES_DIR"
-}
-
-// Common defaults that doesn't have ThemePicker specifics.
-java_defaults {
-    name: "ThemePicker_common_defaults",
+android_library {
+    name: "ThemePickerLib",
 
     static_libs: [
         "guava",
@@ -93,20 +76,35 @@
         "hilt_android",
     ],
 
-    jni_libs: [
-        "librenderscript-toolkit",
+    srcs: [
+        "src/**/*.java",
+        "src/**/*.kt",
     ],
 
-    srcs: [
-        ":ThemePicker_srcs",
+    resource_dirs: [
+        "res",
+        "res_override",
+    ],
+
+    manifest: "AndroidManifest-empty.xml",
+}
+
+java_defaults {
+    name: "ThemePicker_defaults",
+    static_libs: [
+        "ThemePickerLib",
+        "ThemePickerOverridesLib",
+        "hilt_android",
+    ],
+
+    jni_libs: [
+        "librenderscript-toolkit",
     ],
 
     required: ["android.software.theme_picker.xml"],
 
     use_embedded_native_libs: true,
 
-    resource_zips: [":ThemePicker_res", ":ThemePicker_res_overrides"],
-
     optimize: {
         enabled: false,
     },
@@ -117,12 +115,6 @@
     system_ext_specific: true,
 }
 
-java_defaults {
-    name: "ThemePicker_defaults",
-    defaults: ["ThemePicker_common_defaults"],
-    srcs: [":ThemePicker_src_overrides"],
-}
-
 prebuilt_etc {
     name: "android.software.theme_picker.xml",
     system_ext_specific: true,
@@ -141,4 +133,5 @@
     manifest: "AndroidManifest.xml",
     additional_manifests: [":WallpaperPicker2_Manifest"],
     overrides: ["WallpaperPicker", "WallpaperPicker2"],
+    static_libs: ["ThemePickerApplicationLib"],
 }
diff --git a/AndroidManifest-empty.xml b/AndroidManifest-empty.xml
new file mode 100644
index 0000000..848ee0d
--- /dev/null
+++ b/AndroidManifest-empty.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:tools="http://schemas.android.com/tools"
+          package="com.android.wallpaper">
+</manifest>
diff --git a/src/com/android/customization/module/ThemePickerInjector.kt b/src/com/android/customization/module/ThemePickerInjector.kt
index 23b776f..9e63127 100644
--- a/src/com/android/customization/module/ThemePickerInjector.kt
+++ b/src/com/android/customization/module/ThemePickerInjector.kt
@@ -89,7 +89,7 @@
 @Singleton
 open class ThemePickerInjector
 @Inject
-internal constructor(
+constructor(
     @MainDispatcher private val mainScope: CoroutineScope,
     @MainDispatcher private val mainDispatcher: CoroutineDispatcher,
     @BackgroundDispatcher private val bgScope: CoroutineScope,
diff --git a/tests/common/Android.bp b/tests/common/Android.bp
index 9215ba6..06c3834 100644
--- a/tests/common/Android.bp
+++ b/tests/common/Android.bp
@@ -23,12 +23,12 @@
 android_library {
     name: "ThemePickerTestLib",
 
-    defaults: ["ThemePicker_common_defaults"],
     srcs: [
         "src/**/*.java",
         "src/**/*.kt",
     ],
     static_libs: [
+        "ThemePickerLib",
         "WallpaperPicker2TestLib",
         "androidx.annotation_annotation",
         "kotlinx_coroutines_test",
diff --git a/tests/robotests/Android.bp b/tests/robotests/Android.bp
index 296d2ca..0a0a57f 100644
--- a/tests/robotests/Android.bp
+++ b/tests/robotests/Android.bp
@@ -25,6 +25,7 @@
         "kotlinx_coroutines_test",
         "truth",
         "SystemUICustomizationTestUtils",
+        "ThemePickerApplicationLib",
     ],
 
     libs: [