Reduce duplication for modules-utils libs

Create a defaults module with the common properties we expect utils
to use.

Test: m
Change-Id: Iba667fe6681d2086cd15b4405834e6406643636e
diff --git a/java/com/android/modules/utils/Android.bp b/java/com/android/modules/utils/Android.bp
index 4b677ea..db5c16f 100644
--- a/java/com/android/modules/utils/Android.bp
+++ b/java/com/android/modules/utils/Android.bp
@@ -17,10 +17,25 @@
     default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
+java_defaults {
+    name: "modules-utils-defaults",
+    sdk_version: "module_current",
+    min_sdk_version: "29",
+    libs: ["framework-annotations-lib"],
+    visibility: ["//visibility:public"],
+    apex_available: [
+        "//apex_available:anyapex",
+        "//apex_available:platform",
+    ],
+    defaults_visibility: [":__subpackages__"],
+}
+
 java_library {
     // TODO this rule should be split into smaller, more focused ones,
     // ideally each would have its own java package too.
     name: "modules-utils-os",
+    defaults: ["modules-utils-defaults"],
+    min_sdk_version: "30",
     srcs: [
         ":module-utils-os-aidls",
         "BaseParceledListSlice.java",
@@ -28,65 +43,24 @@
         "ParceledListSlice.java",
         "StringParceledListSlice.java",
     ],
-    sdk_version: "module_current",
-    min_sdk_version: "30",
-    visibility: ["//visibility:public"],
-    apex_available: [
-        "//apex_available:anyapex",
-        "//apex_available:platform",
-    ],
 }
 
 java_library {
     name: "modules-utils-handlerexecutor",
-
-    sdk_version: "module_current",
-    min_sdk_version: "29",
-
+    defaults: ["modules-utils-defaults"],
     srcs: ["HandlerExecutor.java"],
     static_libs: ["modules-utils-preconditions"],
-
-    libs: ["framework-annotations-lib"],
-
-    visibility: ["//visibility:public"],
-    apex_available: [
-        "//apex_available:anyapex",
-        // TODO once BT is an apex, remove platform available
-        "//apex_available:platform",
-    ],
 }
 
 java_library {
     name: "modules-utils-backgroundthread",
-
-    sdk_version: "module_current",
-    min_sdk_version: "29",
-
+    defaults: ["modules-utils-defaults"],
     srcs: ["BackgroundThread.java"],
     static_libs: ["modules-utils-handlerexecutor"],
-
-    libs: ["framework-annotations-lib"],
-
-    visibility: ["//visibility:public"],
-    apex_available: [
-        "//apex_available:anyapex",
-        "//apex_available:platform",
-    ],
 }
 
 java_library {
     name: "modules-utils-bytesmatcher",
-
-    sdk_version: "module_current",
-    min_sdk_version: "29",
-
+    defaults: ["modules-utils-defaults"],
     srcs: ["BytesMatcher.java"],
-
-    libs: ["framework-annotations-lib"],
-
-    visibility: ["//visibility:public"],
-    apex_available: [
-        "//apex_available:anyapex",
-        "//apex_available:platform",
-    ],
 }
diff --git a/java/com/android/modules/utils/build/Android.bp b/java/com/android/modules/utils/build/Android.bp
index 6a2aec6..5e29579 100644
--- a/java/com/android/modules/utils/build/Android.bp
+++ b/java/com/android/modules/utils/build/Android.bp
@@ -19,27 +19,16 @@
 
 java_library {
     name: "modules-utils-build",
+    defaults: ["modules-utils-defaults"],
     srcs: ["SdkLevel.java"],
     libs: ["androidx.annotation_annotation"],
-    sdk_version: "module_current",
-    min_sdk_version: "29",
-    visibility: ["//visibility:public"],
-    apex_available: [
-        "//apex_available:anyapex",
-        "//apex_available:platform",
-    ],
 }
 
 // For modules which use system sdk
 java_library {
     name: "modules-utils-build_system",
+    defaults: ["modules-utils-defaults"],
     srcs: ["SdkLevel.java"],
     libs: ["androidx.annotation_annotation"],
     sdk_version: "system_current",
-    min_sdk_version: "29",
-    visibility: ["//visibility:public"],
-    apex_available: [
-        "//apex_available:anyapex",
-        "//apex_available:platform",
-    ],
 }