1// Copyright (C) 2022 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package { 16 default_applicable_licenses: ["Android-Apache-2.0"], 17} 18 19genrule { 20 name: "statslog-adservices-java-gen", 21 tools: ["stats-log-api-gen"], 22 cmd: "$(location stats-log-api-gen) --java $(out) --module adservices" + 23 " --javaPackage com.android.adservices.service.stats --javaClass AdServicesStatsLog", 24 out: ["com/android/adservices/service/stats/AdServicesStatsLog.java"], 25} 26 27// Converts the text proto Cobalt registry into a binary proto. 28genrule { 29 name: "cobalt-registry-binarypb-gen", 30 srcs: [ 31 "resources/cobalt_registry.textpb", 32 ":adservices-cobalt-proto", 33 ], 34 out: ["cobalt_registry.binarypb"], 35 tools: ["aprotoc"], 36 cmd: "$(location aprotoc) --encode=cobalt.CobaltRegistry " + 37 "--proto_path=packages/modules/AdServices/adservices/libraries/cobalt/proto " + 38 "packages/modules/AdServices/adservices/libraries/cobalt/proto/cobalt_registry.proto " + 39 "< $(location resources/cobalt_registry.textpb) > $(out)", 40} 41 42// Outputs a class confirming the Cobalt registry asset is validated, conditioned on 43// the asset binary proto and text proto being the same. 44genrule { 45 name: "cobalt-registry-validated-java", 46 srcs: [ 47 ":checked_in_cobalt_registry_binarypb", 48 ":cobalt-registry-binarypb-gen", 49 "resources/CobaltRegistryValidated.java", 50 ], 51 // Compare the generated binary proto to the asset binary proto and fail if they 52 // are different. Additionally, print a message with instructions on how to update 53 // the asset binary proto. 54 cmd: "cp $(location resources/CobaltRegistryValidated.java) $(out) && " + 55 "cmp -s $(location :cobalt-registry-binarypb-gen) $(location :checked_in_cobalt_registry_binarypb) " + 56 "|| (echo -e '\\n\\n################################################################\\n#\\n" + 57 "# ERROR: Binary registry is out of date. To update it, run:\\n#\\n" + 58 "# cp $(location :cobalt-registry-binarypb-gen) " + 59 "packages/modules/AdServices/adservices/apk/assets/cobalt/cobalt_registry.binarypb\\n#\\n" + 60 "################################################################\\n\\n' >&2 && false)", 61 out: ["com/android/adservices/cobalt/CobaltRegistryValidated.java"], 62} 63 64filegroup { 65 name: "adservices-service-core-sources", 66 srcs: [ 67 "java/**/*.java", 68 ], 69 path: "java", 70 visibility: [ 71 "//packages/modules/AdServices/adservices/tests:__subpackages__", 72 "//package/modules/ExtServices/extservices:__subpackages__", 73 ], 74} 75 76filegroup { 77 name: "adservices-service-core-jni-sources", 78 srcs: [ 79 "jni/java/**/*.java", 80 ], 81 path: "jni", 82 visibility: [ 83 "//packages/modules/AdServices/adservices:__subpackages__", 84 ], 85} 86 87filegroup { 88 name: "adservices-service-core-flags-constants-sources", 89 srcs: [ 90 "java/com/android/adservices/cobalt/CobaltConstants.java", 91 "java/com/android/adservices/service/CommonFlagsConstants.java", 92 "java/com/android/adservices/service/CommonDebugFlagsConstants.java", 93 "java/com/android/adservices/service/DebugFlagsConstants.java", 94 "java/com/android/adservices/service/FlagsConstants.java", 95 ], 96 path: "java", 97 visibility: [ 98 "//packages/modules/AdServices/adservices/tests/test-util", 99 ], 100} 101 102// TODO(b/306522832): move to Shared/ and change packages (to something like 103// c.a.ads.flags), although we'd need to be consider whether to make sure it's 104// used only by adservices itself, not ODP (or SdkSandbox) 105filegroup { 106 name: "adservices-service-common-flags-sources", 107 srcs: [ 108 "java/com/android/adservices/service/CommonDebugFlags.java", 109 "java/com/android/adservices/service/CommonDebugFlagsConstants.java", 110 "java/com/android/adservices/service/CommonFlagsConstants.java", 111 "java/com/android/adservices/service/DeviceConfigFlagsHelper.java", 112 ], 113 path: "java", 114 visibility: [ 115 "//packages/modules/AdServices/adservices/service", 116 ], 117} 118 119filegroup { 120 name: "adservices-service-core-phflags-sources", 121 srcs: [ 122 ":adservices-service-core-flags-constants-sources", 123 ":adservices-service-common-flags-sources", 124 "java/com/android/adservices/service/Flags.java", 125 "java/com/android/adservices/service/FlagsFactory.java", 126 "java/com/android/adservices/service/PhFlags.java", 127 "java/com/android/adservices/service/DebugFlags.java", 128 ], 129 path: "java", 130 visibility: [ 131 "//packages/modules/AdServices/adservices/tests/test-util", 132 ], 133} 134 135android_library { 136 name: "adservices-service-core", 137 sdk_version: "module_current", 138 min_sdk_version: "30", 139 srcs: [ 140 ":adservices-service-core-sources", 141 ":adservices-service-core-jni-sources", 142 ":cobalt-registry-validated-java", 143 ":statslog-adservices-java-gen", 144 ], 145 manifest: "AndroidManifest.xml", 146 plugins: [ 147 "androidx.appsearch_appsearch-compiler-plugin", 148 "androidx.room_room-compiler-plugin", 149 "auto_oneof_plugin", 150 "auto_value_plugin", 151 "auto_annotation_plugin", 152 ], 153 javacflags: [ 154 "-Aroom.schemaLocation=packages/modules/AdServices/adservices/service-core/schemas", 155 ], 156 libs: [ 157 "androidx.room_room-runtime", 158 "framework-annotations-lib", // For @SystemApi, etc 159 "framework-adservices.impl", 160 "framework-configinfrastructure.stubs.module_lib", 161 "framework-sdksandbox.impl", 162 "framework-ondevicepersonalization.stubs.module_lib", 163 "framework-statsd.stubs.module_lib", // For WW logging 164 "jsr305", 165 "auto_value_annotations", 166 ], 167 static_libs: [ 168 "androidx.concurrent_concurrent-futures", 169 "androidx.annotation_annotation", 170 "androidx.appsearch_appsearch", 171 "androidx.appsearch_appsearch-platform-storage", 172 "cbor-java", 173 "mobile_data_downloader_lib", 174 "modules-utils-preconditions", 175 "tflite_support_classifiers_java", 176 "mobile_data_downloader_lib", 177 "androidx.webkit_webkit", 178 "androidx.javascriptengine_javascriptengine", 179 "adservices-cobalt", 180 "adservices-proto-lite", 181 "adservices-grpclib-lite", 182 "adservices-shared-common", 183 "adservices-shared-datastore", 184 "adservices-shared-error-logging", 185 "adservices-shared-spe", 186 "adservices-shared-storage", 187 "adservices-shared-util", 188 "modules-utils-build", 189 ], 190 jarjar_rules: "jarjar-rules.txt", 191 apex_available: [ 192 "com.android.adservices", 193 "com.android.extservices", 194 ], 195 lint: { 196 extra_check_modules: ["AdServicesProdLintChecker"], 197 baseline_filename: "lint-baseline.xml", 198 }, 199} 200 201cc_library_shared { 202 name: "libhpke_jni", 203 min_sdk_version: "30", 204 sdk_version: "current", 205 stl: "libc++_static", 206 cflags: [ 207 "-Werror", 208 "-Wno-unused-parameter", 209 "-Wno-unused-but-set-variable", 210 ], 211 srcs: [ 212 "jni/cpp/hpke_jni.cpp", 213 "jni/cpp/ohttp_jni.cpp", 214 "jni/cpp/act_jni.cpp", 215 ], 216 include_dirs: ["packages/modules/AdServices/adservices/service-core/jni/include"], 217 header_libs: ["jni_headers"], 218 shared_libs: [ 219 "liblog", 220 ], 221 static_libs: [ 222 "libact", 223 "libcrypto_static", 224 ], 225 version_script: "jni/version-script.lds", 226 apex_available: [ 227 "//apex_available:platform", 228 "com.android.adservices", 229 "com.android.extservices", 230 ], 231 visibility: [ 232 "//packages/modules/AdServices:__subpackages__", 233 "//packages/modules/ExtServices:__subpackages__", 234 ], 235} 236 237// Schemas needs to be bundled via this android_library since service-core unit tests for schema 238// migration will need this. 239android_library { 240 name: "adservices-service-core-schema", 241 sdk_version: "module_current", 242 min_sdk_version: "30", 243 asset_dirs: [ 244 "schemas", 245 ], 246 // Must use EmptyManifest.xml since this will be used by the service-core tests. If we use the 247 // normal "AndroidManifest.xml", we may introduce potential error like redeclare permissions. 248 // See b/228270294 for the error about duplicated permissions. 249 manifest: "EmptyManifest.xml", 250 lint: { 251 baseline_filename: "lint-baseline2.xml", 252 }, 253} 254