1// Copyright (C) 2019 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// 15// 16 17// Build the Car service. 18 19package { 20 default_team: "trendy_team_aaos_framework", 21 default_applicable_licenses: ["Android-Apache-2.0"], 22} 23 24genrule { 25 name: "statslog-Car-java-gen", 26 tools: ["stats-log-api-gen"], 27 cmd: "$(location stats-log-api-gen) --java $(out) --module car --javaPackage com.android.car" + 28 " --javaClass CarStatsLog", 29 out: ["com/android/car/CarStatsLog.java"], 30} 31 32gensrcs { 33 name: "gen-car-service-dump-javastream-protos", 34 35 tools: [ 36 "aprotoc", 37 "protoc-gen-javastream", 38 "soong_zip", 39 ], 40 41 tool_files: [ 42 ":libprotobuf-internal-protos", 43 ], 44 45 cmd: "mkdir -p $(genDir)/$(in) " + 46 "&& $(location aprotoc) " + 47 " --plugin=$(location protoc-gen-javastream) " + 48 " --javastream_out=$(genDir)/$(in) " + 49 " -Iexternal/protobuf/src " + 50 " -I . " + 51 " $(in) " + 52 "&& $(location soong_zip) -jar -o $(out) -C $(genDir)/$(in) -D $(genDir)/$(in)", 53 54 srcs: [ 55 ":car-service-dump-proto-srcs", 56 ], 57 58 output_extension: "srcjar", 59} 60 61genrule { 62 name: "gen-native-dump-cppstream-proto-headers", 63 tools: [ 64 "aprotoc", 65 "protoc-gen-cppstream", 66 ], 67 cmd: "mkdir -p $(genDir) " + 68 "&& $(location aprotoc) " + 69 " --plugin=$(location protoc-gen-cppstream) " + 70 " --cppstream_out=$(genDir) " + 71 " --cppstream_opt=experimental_allow_proto3_optional " + 72 " -Iexternal/protobuf/src " + 73 " -Ipackages/services/Car/service/proto/android/car/watchdog " + 74 " $(in) ", 75 srcs: [ 76 ":native-dump-proto-srcs", 77 ], 78 79 out: [ 80 "carwatchdog_daemon_dump.proto.h", 81 "performance_stats.proto.h", 82 "health_check_client_info.proto.h", 83 ], 84} 85 86genrule { 87 name: "gen-native-dump-proto-headers", 88 tools: [ 89 "aprotoc", 90 ], 91 cmd: "mkdir -p $(genDir) " + 92 "&& $(location aprotoc) " + 93 " --cpp_out=$(genDir) " + 94 " --proto_path=external/protobuf/src/google/protobuf " + 95 " --proto_path=packages/services/Car/service/proto/android/car/watchdog " + 96 " $(in) ", 97 srcs: [ 98 ":native-dump-proto-srcs", 99 ], 100 out: [ 101 "carwatchdog_daemon_dump.pb.h", 102 "performance_stats.pb.h", 103 "health_check_client_info.pb.h", 104 ], 105} 106 107genrule { 108 name: "gen-native-dump-proto-srcs", 109 tools: [ 110 "aprotoc", 111 ], 112 cmd: "mkdir -p $(genDir) " + 113 "&& $(location aprotoc) " + 114 " --cpp_out=$(genDir) " + 115 " --proto_path=external/protobuf/src/google/protobuf " + 116 " --proto_path=packages/services/Car/service/proto/android/car/watchdog " + 117 " $(in) ", 118 srcs: [ 119 ":native-dump-proto-srcs", 120 ], 121 out: [ 122 "carwatchdog_daemon_dump.pb.cc", 123 "performance_stats.pb.cc", 124 "health_check_client_info.pb.cc", 125 ], 126} 127 128filegroup { 129 name: "car-service-dump-proto-srcs", 130 srcs: [ 131 "proto/android/car/**/*_dump.proto", 132 ], 133 exclude_srcs: [ 134 ":native-dump-proto-srcs", 135 ], 136} 137 138filegroup { 139 name: "native-dump-proto-srcs", 140 srcs: [ 141 "proto/android/car/watchdog/*_daemon_dump.proto", 142 "proto/android/car/watchdog/performance_stats.proto", 143 "proto/android/car/watchdog/health_check_client_info.proto", 144 ], 145} 146 147filegroup { 148 name: "car-service-non-dump-proto-srcs", 149 srcs: [ 150 "proto/android/car/telemetry/*.proto", 151 "proto/android/car/watchdog/atoms.proto", 152 ], 153} 154 155java_defaults { 156 name: "carservice-updatable-min-java-defaults", 157 158 defaults: [ 159 "car-framework-aconfig-libraries", 160 "latest_android_hardware_automotive_audiocontrol_java_static", 161 ], 162 163 srcs: [ 164 // add full source for all codes under p/s/Car to reduce unnecessary library allow listing. 165 ":IVehicleGeneratedJavaFiles-V3", 166 ":android.car.cluster.navigation-src", 167 ":android.car.watchdoglib-src", 168 ":cartelemetry-cardata-proto-srcs", 169 ":cartelemetryservice-proto-srcs", 170 ":car-service-non-dump-proto-srcs", 171 ":com.android.car.procfsinspector-client-src", 172 ":gen-car-service-dump-javastream-protos", 173 ":iscriptexecutor_aidl", 174 ":statslog-Car-java-gen", 175 ":VhalTestVendorProperties", 176 "src/**/*.java", 177 ], 178 179 aidl: { 180 include_dirs: [ 181 "packages/services/Car/libs/procfs-inspector/client/src", 182 ], 183 }, 184 185 resource_dirs: ["res"], 186 187 // Resource is still com.android.car.R 188 aaptflags: [ 189 "--custom-package com.android.car", 190 ], 191 192 libs: [ 193 "android.car-module.impl", 194 "android.car.builtin", 195 "framework-annotations-lib", 196 "framework-bluetooth", 197 "framework-connectivity", 198 "framework-connectivity-t.stubs.module_lib", 199 "framework-location", 200 "framework-statsd", 201 "framework-tethering", 202 "framework-wifi", 203 "modules-utils-os", 204 "modules-utils-preconditions", 205 "modules-utils-shell-command-handler", 206 ], 207 208 static_libs: [ 209 "android.automotive.powerpolicy.delegate-V1-java", 210 "android.automotive.telemetry.internal-V2-java", // ICarTelemetryInternal 211 "android.automotive.watchdog.internal-V3-java", 212 "android.frameworks.automotive.powerpolicy.internal-V1-java", 213 "android.frameworks.automotive.powerpolicy-V3-java", 214 "android.hidl.base-V1.0-java", 215 "android.hardware.automotive.audiocontrol-V1.0-java", 216 "android.hardware.automotive.audiocontrol-V2.0-java", 217 "android.hardware.automotive.remoteaccess-V2-java", 218 "android.hardware.automotive.vehicle-V3-java", 219 "android.hardware.automotive.vehicle.property-V3-java", 220 "android.hardware.automotive.vehicle-V2.0-java", 221 "android.hardware.health-V1.0-java", 222 "android.hardware.health-V2.0-java", 223 "android.hardware.automotive.occupant_awareness-V1-java", 224 "android.media.audiopolicy-aconfig-java", 225 "libprotobuf-java-lite", 226 "modules-utils-expresslog", 227 ], 228 229 proto: { 230 type: "lite", 231 }, 232 233 optimize: { 234 proguard_flags_files: ["proguard.flags"], 235 enabled: false, 236 }, 237 238 sdk_version: "module_current", 239 240 java_resources: [ 241 ":CarSvcProps_JSON", 242 ":VehicleHalDefaultProperties_JSON", 243 ], 244} 245 246java_defaults { 247 name: "carservice-updatable-java-defaults", 248 249 visibility: [ 250 "//packages/services/Car:__subpackages__", 251 ], 252 253 defaults: ["carservice-updatable-min-java-defaults"], 254 255 // TODO(b/288271411): enable it when car mainline module is supported 256 // min_sdk_version: "33", 257} 258 259// Non-module build 260android_app { 261 name: "CarServiceUpdatableNonModule", 262 263 defaults: ["carservice-updatable-java-defaults"], 264 privileged: true, 265 266 required: ["allowed_privapp_com.android.car"], 267} 268 269// Added to car.framework module 270android_app { 271 name: "CarServiceUpdatable", 272 273 defaults: ["carservice-updatable-java-defaults"], 274 privileged: true, 275 276 apex_available: ["com.android.car.framework"], 277} 278 279java_library { 280 281 name: "car-service-common-util-static-lib", 282 283 srcs: [ 284 "src/com/android/car/CarServiceBase.java", 285 "src/com/android/car/CarServiceUtils.java", 286 "src/com/android/car/CarLog.java", 287 "src/com/android/car/CarSystemService.java", 288 "src/com/android/car/util/TransitionLog.java", 289 ], 290 291 libs: [ 292 "android.car.builtin", 293 "android.car", 294 ], 295 296 static_libs: [ 297 "android.hardware.automotive.vehicle-V3-java", 298 "android.hardware.automotive.vehicle-V2.0-java", 299 ], 300} 301 302// Minimum code shared with carservice builtin. 303// Be careful with what is added here as it takes double space. 304// Also static instance sharing will not work. 305java_library { 306 name: "car-service-lib-for-builtin", 307 308 srcs: [ 309 "src/com/android/car/CarLog.java", 310 ], 311 312 libs: [ 313 "android.car", 314 ], 315} 316 317//#################################################################################### 318// Build a static library to help mocking various car services in testing. This is meant to be used 319// for internal unit tests around the car service. 320//#################################################################################### 321android_library { 322 name: "car-service-test-static-lib", 323 324 defaults: ["carservice-updatable-min-java-defaults"], 325 326 manifest: "EmptyAndroidManifest.xml", 327 328 // Avoid using the java_sdk_library version for android.car.builtin since it cannot be found 329 // during runtime on host. Use a java_library version instead. 330 exclude_uses_libs: ["android.car.builtin"], 331 332 static_libs: [ 333 "android.car.builtin.testonly", 334 ], 335} 336 337filegroup { 338 name: "iscriptexecutor_aidl", 339 srcs: [ 340 "src/com/android/car/telemetry/scriptexecutorinterface/BundleList.aidl", 341 "src/com/android/car/telemetry/scriptexecutorinterface/IScriptExecutor.aidl", 342 "src/com/android/car/telemetry/scriptexecutorinterface/IScriptExecutorListener.aidl", 343 ], 344 path: "src", 345} 346