1# 2# Copyright (C) 2017 The Android Open Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15# 16 17# Include all languages 18$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk) 19 20# Enable updating of APEXes 21$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk) 22 23# Enable userspace reboot 24$(call inherit-product, $(SRC_TARGET_DIR)/product/userspace_reboot.mk) 25 26# Enforce generic ramdisk allow list 27$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_ramdisk.mk) 28 29# Set Vendor SPL to match platform 30VENDOR_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH) 31 32# Set boot SPL 33BOOT_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH) 34 35PRODUCT_VENDOR_PROPERTIES += \ 36 ro.vendor.boot_security_patch=$(BOOT_SECURITY_PATCH) 37 38PRODUCT_SOONG_NAMESPACES += device/generic/goldfish # for audio and wifi 39 40PRODUCT_SHIPPING_API_LEVEL := 34 41PRODUCT_USE_DYNAMIC_PARTITIONS := true 42DISABLE_RILD_OEM_HOOK := true 43 44# TODO(b/205788876) remove this condition when openwrt has an image for arm. 45ifndef PRODUCT_ENFORCE_MAC80211_HWSIM 46PRODUCT_ENFORCE_MAC80211_HWSIM := true 47endif 48 49PRODUCT_SET_DEBUGFS_RESTRICTIONS := true 50 51PRODUCT_FS_COMPRESSION := 1 52TARGET_RO_FILE_SYSTEM_TYPE ?= erofs 53TARGET_USERDATAIMAGE_FILE_SYSTEM_TYPE ?= f2fs 54TARGET_USERDATAIMAGE_PARTITION_SIZE ?= 6442450944 55 56TARGET_VULKAN_SUPPORT ?= true 57 58# Enable Virtual A/B 59$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota/android_t_baseline.mk) 60PRODUCT_VIRTUAL_AB_COMPRESSION_METHOD := gz 61 62PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.compression.threads=true 63PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.batch_writes=true 64 65# Enable Scoped Storage related 66$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk) 67 68# Properties that are not vendor-specific. These will go in the product 69# partition, instead of the vendor partition, and do not need vendor 70# sepolicy 71PRODUCT_PRODUCT_PROPERTIES += \ 72 remote_provisioning.enable_rkpd=true \ 73 remote_provisioning.hostname=staging-remoteprovisioning.sandbox.googleapis.com \ 74 persist.adb.tcp.port=5555 \ 75 ro.com.google.locationfeatures=1 \ 76 persist.sys.fuse.passthrough.enable=true \ 77 remote_provisioning.tee.rkp_only=1 78 79# Until we support adb keys on user builds, and fix logcat over serial, 80# spawn adbd by default without authorization for "adb logcat" 81ifeq ($(TARGET_BUILD_VARIANT),user) 82PRODUCT_PRODUCT_PROPERTIES += \ 83 ro.adb.secure=0 \ 84 ro.debuggable=1 85endif 86 87# Explanation of specific properties: 88# ro.hardware.keystore_desede=true needed for CtsKeystoreTestCases 89PRODUCT_VENDOR_PROPERTIES += \ 90 tombstoned.max_tombstone_count=500 \ 91 vendor.bt.rootcanal_test_console=off \ 92 ro.carrier=unknown \ 93 ro.com.android.dataroaming?=false \ 94 ro.hardware.virtual_device=1 \ 95 ro.logd.size=1M \ 96 wifi.interface=wlan0 \ 97 wifi.direct.interface=p2p-dev-wlan0 \ 98 persist.sys.zram_enabled=1 \ 99 ro.hardware.keystore_desede=true \ 100 ro.rebootescrow.device=/dev/block/pmem0 \ 101 ro.incremental.enable=1 \ 102 debug.c2.use_dmabufheaps=1 103 104LOCAL_BT_PROPERTIES ?= \ 105 vendor.ser.bt-uart?=/dev/hvc5 \ 106 107PRODUCT_VENDOR_PROPERTIES += \ 108 ${LOCAL_BT_PROPERTIES} \ 109 110# Below is a list of properties we probably should get rid of. 111PRODUCT_VENDOR_PROPERTIES += \ 112 wlan.driver.status=ok 113 114PRODUCT_VENDOR_PROPERTIES += \ 115 debug.stagefright.c2inputsurface=-1 116 117# Enforce privapp permissions control. 118PRODUCT_VENDOR_PROPERTIES += ro.control_privapp_permissions?=enforce 119 120# Copy preopted files from system_b on first boot 121PRODUCT_VENDOR_PROPERTIES += ro.cp_system_other_odex=1 122 123AB_OTA_POSTINSTALL_CONFIG += \ 124 RUN_POSTINSTALL_system=true \ 125 POSTINSTALL_PATH_system=system/bin/otapreopt_script \ 126 FILESYSTEM_TYPE_system=erofs \ 127 POSTINSTALL_OPTIONAL_system=true 128 129AB_OTA_POSTINSTALL_CONFIG += \ 130 RUN_POSTINSTALL_vendor=true \ 131 POSTINSTALL_PATH_vendor=bin/checkpoint_gc \ 132 FILESYSTEM_TYPE_vendor=erofs \ 133 POSTINSTALL_OPTIONAL_vendor=true 134 135# Userdata Checkpointing OTA GC 136PRODUCT_PACKAGES += \ 137 checkpoint_gc 138 139# DRM service opt-in 140PRODUCT_VENDOR_PROPERTIES += drm.service.enabled=true 141 142# Call deleteAllKeys if vold detects a factory reset 143PRODUCT_VENDOR_PROPERTIES += ro.crypto.metadata_init_delete_all_keys.enabled=true 144 145# 146# Packages for various GCE-specific utilities 147# 148PRODUCT_PACKAGES += \ 149 CuttlefishService \ 150 cuttlefish_sensor_injection \ 151 socket_vsock_proxy \ 152 tombstone_transmit \ 153 tombstone_producer \ 154 suspend_blocker \ 155 vsoc_input_service \ 156 metrics_helper \ 157 158$(call soong_config_append,cvd,launch_configs,cvd_config_auto.json cvd_config_auto_portrait.json cvd_config_auto_md.json cvd_config_foldable.json cvd_config_go.json cvd_config_phone.json cvd_config_slim.json cvd_config_tablet.json cvd_config_tv.json cvd_config_wear.json) 159$(call soong_config_append,cvd,grub_config,grub.cfg) 160 161# 162# Packages for AOSP-available stuff we use from the framework 163# 164PRODUCT_PACKAGES += \ 165 e2fsck \ 166 ip \ 167 sleep \ 168 tcpdump \ 169 wificond \ 170 171# 172# Package for AOSP QNS 173# 174PRODUCT_PACKAGES += \ 175 QualifiedNetworksService 176 177# 178# Package for AOSP GBA 179# 180PRODUCT_PACKAGES += \ 181 GbaService 182 183# 184# Packages for testing 185# 186PRODUCT_PACKAGES += \ 187 aidl_lazy_test_server \ 188 aidl_lazy_cb_test_server \ 189 hidl_lazy_test_server \ 190 hidl_lazy_cb_test_server 191 192# Runtime Resource Overlays 193ifneq ($(LOCAL_PREFER_VENDOR_APEX),true) 194PRODUCT_PACKAGES += \ 195 cuttlefish_overlay_connectivity \ 196 cuttlefish_overlay_frameworks_base_core \ 197 cuttlefish_overlay_settings_provider 198 199endif 200 201# 202# Satellite vendor service for CF 203# 204PRODUCT_PACKAGES += CFSatelliteService 205 206# PRODUCT_AAPT_CONFIG and PRODUCT_AAPT_PREF_CONFIG are intentionally not set to 207# pick up every density resources. 208 209# 210# Common manifest for all targets 211# 212LOCAL_DEVICE_FCM_MANIFEST_FILE ?= device/google/cuttlefish/shared/config/manifest.xml 213DEVICE_MANIFEST_FILE += $(LOCAL_DEVICE_FCM_MANIFEST_FILE) 214 215# 216# General files 217# 218 219 220ifneq ($(LOCAL_SENSOR_FILE_OVERRIDES),true) 221ifneq ($(LOCAL_PREFER_VENDOR_APEX),true) 222 PRODUCT_COPY_FILES += \ 223 frameworks/native/data/etc/android.hardware.sensor.ambient_temperature.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.ambient_temperature.xml \ 224 frameworks/native/data/etc/android.hardware.sensor.barometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.barometer.xml \ 225 frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.gyroscope.xml \ 226 frameworks/native/data/etc/android.hardware.sensor.hinge_angle.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.hinge_angle.xml \ 227 frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml \ 228 frameworks/native/data/etc/android.hardware.sensor.proximity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.proximity.xml \ 229 frameworks/native/data/etc/android.hardware.sensor.relative_humidity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.relative_humidity.xml 230endif 231endif 232 233ifneq ($(LOCAL_PREFER_VENDOR_APEX),true) 234PRODUCT_COPY_FILES += \ 235 device/google/cuttlefish/shared/permissions/cuttlefish_excluded_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/cuttlefish_excluded_hardware.xml \ 236 frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml \ 237 frameworks/native/data/etc/android.hardware.ethernet.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.ethernet.xml \ 238 frameworks/native/data/etc/android.hardware.location.gps.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.location.gps.xml \ 239 frameworks/native/data/etc/android.hardware.reboot_escrow.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.reboot_escrow.xml \ 240 frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml \ 241 frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \ 242 frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \ 243 frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml \ 244 frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml \ 245 frameworks/native/data/etc/android.software.ipsec_tunnels.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.ipsec_tunnels.xml \ 246 frameworks/native/data/etc/android.software.sip.voip.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.sip.voip.xml \ 247 frameworks/native/data/etc/android.software.verified_boot.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.verified_boot.xml 248 249endif 250PRODUCT_COPY_FILES += \ 251 frameworks/native/data/etc/android.hardware.consumerir.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.consumerir.xml \ 252 device/google/cuttlefish/shared/config/init.vendor.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.cutf_cvm.rc \ 253 device/google/cuttlefish/shared/config/init.product.rc:$(TARGET_COPY_OUT_PRODUCT)/etc/init/init.rc \ 254 device/google/cuttlefish/shared/config/ueventd.rc:$(TARGET_COPY_OUT_VENDOR)/etc/ueventd.rc \ 255 device/google/cuttlefish/shared/config/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \ 256 device/google/cuttlefish/shared/config/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml \ 257 device/google/cuttlefish/shared/config/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml \ 258 device/google/cuttlefish/shared/config/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml \ 259 device/google/cuttlefish/shared/permissions/privapp-permissions-cuttlefish.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/privapp-permissions-cuttlefish.xml \ 260 frameworks/av/media/libeffects/data/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \ 261 hardware/interfaces/audio/aidl/default/audio_effects_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects_config.xml \ 262 frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \ 263 frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \ 264 frameworks/av/services/audiopolicy/config/bluetooth_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_audio_policy_configuration_7_0.xml \ 265 frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml \ 266 frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \ 267 frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \ 268 frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \ 269 frameworks/av/services/audiopolicy/config/surround_sound_configuration_5_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/surround_sound_configuration_5_0.xml \ 270 device/google/cuttlefish/shared/config/task_profiles.json:$(TARGET_COPY_OUT_VENDOR)/etc/task_profiles.json \ 271 frameworks/native/data/etc/android.software.credentials.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.credentials.xml \ 272 273ifeq ($(LOCAL_PREFER_VENDOR_APEX),true) 274PRODUCT_PACKAGES += com.google.cf.input.config 275else 276PRODUCT_COPY_FILES += \ 277 device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_0.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_0.idc \ 278 device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_1.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_1.idc \ 279 device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_2.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_2.idc \ 280 device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_3.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_3.idc 281endif 282 283PRODUCT_PACKAGES += \ 284 fstab.cf.f2fs.hctr2 \ 285 fstab.cf.f2fs.hctr2.vendor_ramdisk \ 286 fstab.cf.f2fs.cts \ 287 fstab.cf.f2fs.cts.vendor_ramdisk \ 288 fstab.cf.ext4.hctr2 \ 289 fstab.cf.ext4.hctr2.vendor_ramdisk \ 290 fstab.cf.ext4.cts \ 291 fstab.cf.ext4.cts.vendor_ramdisk \ 292 293# Packages for HAL implementations 294 295# 296# Weaver aidl HAL 297# 298# TODO(b/262418065) Add a real weaver implementation 299 300# 301# IR aidl HAL 302# 303PRODUCT_PACKAGES += \ 304 android.hardware.ir-service.example \ 305 consumerir.default 306 307# 308# Authsecret AIDL HAL 309# 310PRODUCT_PACKAGES += \ 311 android.hardware.authsecret-service.example 312 313# 314# Bluetooth HAL and Compatibility Bluetooth library (for older revs). 315# 316ifneq ($(LOCAL_PREFER_VENDOR_APEX),true) 317PRODUCT_COPY_FILES +=\ 318 frameworks/native/data/etc/android.hardware.bluetooth.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth.xml \ 319 frameworks/native/data/etc/android.hardware.bluetooth_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth_le.xml 320 321PRODUCT_PACKAGES += \ 322 android.hardware.bluetooth-service.default \ 323 bt_vhci_forwarder 324 325# Bluetooth initialization configuration is copied to the init folder here instead of being added 326# as an init_rc attribute of the bt_vhci_forward binary. The bt_vhci_forward binary is used by 327# multiple targets with different initialization configurations. 328PRODUCT_COPY_FILES += \ 329 device/google/cuttlefish/guest/commands/bt_vhci_forwarder/bt_vhci_forwarder.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/bt_vhci_forwarder.rc 330 331else 332PRODUCT_PACKAGES += com.google.cf.bt 333endif 334 335# 336# Bluetooth Audio AIDL HAL 337# 338PRODUCT_PACKAGES += \ 339 android.hardware.bluetooth.audio-impl \ 340 341# 342# Audio HAL 343# Note: aidl services are loaded, however they are not fully functional yet, 344# and are not used by the framework, only by VTS tests. 345# 346ifndef LOCAL_AUDIO_PRODUCT_PACKAGE 347LOCAL_AUDIO_PRODUCT_PACKAGE := \ 348 android.hardware.audio.service \ 349 android.hardware.audio@7.1-impl.ranchu \ 350 android.hardware.audio.effect@7.0-impl \ 351 android.hardware.audio.service-aidl.example \ 352 android.hardware.audio.effect.service-aidl.example \ 353 libaecsw \ 354 libagc1sw \ 355 libagc2sw \ 356 libbassboostsw \ 357 libbundleaidl \ 358 libdownmixaidl \ 359 libdynamicsprocessingaidl \ 360 libenvreverbsw \ 361 libequalizersw \ 362 libextensioneffect \ 363 libhapticgeneratoraidl \ 364 libloudnessenhanceraidl \ 365 libnssw \ 366 libpreprocessingaidl \ 367 libpresetreverbsw \ 368 libreverbaidl \ 369 libtinyxml2 \ 370 libvirtualizersw \ 371 libvisualizeraidl \ 372 libvolumesw 373DEVICE_MANIFEST_FILE += \ 374 device/google/cuttlefish/guest/hals/audio/effects/manifest.xml 375endif 376 377ifndef LOCAL_AUDIO_PRODUCT_COPY_FILES 378LOCAL_AUDIO_PRODUCT_COPY_FILES := \ 379 device/generic/goldfish/audio/policy/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \ 380 device/generic/goldfish/audio/policy/primary_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/primary_audio_policy_configuration.xml \ 381 frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \ 382 frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \ 383 frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \ 384 frameworks/av/media/libeffects/data/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \ 385 hardware/interfaces/audio/aidl/default/audio_effects_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects_config.xml 386endif 387 388PRODUCT_PACKAGES += $(LOCAL_AUDIO_PRODUCT_PACKAGE) 389PRODUCT_COPY_FILES += $(LOCAL_AUDIO_PRODUCT_COPY_FILES) 390DEVICE_PACKAGE_OVERLAYS += $(LOCAL_AUDIO_DEVICE_PACKAGE_OVERLAYS) 391 392# 393# BiometricsFace HAL (AIDL) 394# 395PRODUCT_PACKAGES += \ 396 android.hardware.biometrics.face-service.example 397 398# 399# BiometricsFingerprint HAL (AIDL) 400# 401PRODUCT_PACKAGES += \ 402 android.hardware.biometrics.fingerprint-service.example 403 404# 405# Contexthub HAL 406# 407PRODUCT_PACKAGES += \ 408 android.hardware.contexthub-service.example 409 410# 411# Drm HAL 412# 413PRODUCT_PACKAGES += \ 414 android.hardware.drm@latest-service.clearkey 415 416-include vendor/widevine/libwvdrmengine/apex/device/device.mk 417 418# 419# Confirmation UI HAL 420# 421ifeq ($(LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE),) 422 LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE := android.hardware.confirmationui-service.cuttlefish 423endif 424PRODUCT_PACKAGES += $(LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE) 425 426# 427# Dumpstate HAL 428# 429ifeq ($(LOCAL_DUMPSTATE_PRODUCT_PACKAGE),) 430 LOCAL_DUMPSTATE_PRODUCT_PACKAGE += android.hardware.dumpstate-service.example 431endif 432PRODUCT_PACKAGES += $(LOCAL_DUMPSTATE_PRODUCT_PACKAGE) 433 434# 435# Gatekeeper 436# 437ifeq ($(LOCAL_GATEKEEPER_PRODUCT_PACKAGE),) 438 LOCAL_GATEKEEPER_PRODUCT_PACKAGE := android.hardware.gatekeeper-service.remote 439endif 440PRODUCT_PACKAGES += \ 441 $(LOCAL_GATEKEEPER_PRODUCT_PACKAGE) 442 443# 444# Oemlock 445# 446ifeq ($(LOCAL_OEMLOCK_PRODUCT_PACKAGE),) 447 LOCAL_OEMLOCK_PRODUCT_PACKAGE := android.hardware.oemlock-service.remote 448endif 449PRODUCT_PACKAGES += \ 450 $(LOCAL_OEMLOCK_PRODUCT_PACKAGE) 451 452PRODUCT_VENDOR_PROPERTIES += ro.oem_unlock_supported=1 453 454# 455# GPS 456# 457LOCAL_GNSS_PRODUCT_PACKAGE ?= \ 458 android.hardware.gnss-service.example 459 460PRODUCT_PACKAGES += $(LOCAL_GNSS_PRODUCT_PACKAGE) 461 462# Health 463ifeq ($(LOCAL_HEALTH_PRODUCT_PACKAGE),) 464 LOCAL_HEALTH_PRODUCT_PACKAGE := \ 465 android.hardware.health-service.cuttlefish \ 466 android.hardware.health-service.cuttlefish_recovery \ 467 468endif 469PRODUCT_PACKAGES += $(LOCAL_HEALTH_PRODUCT_PACKAGE) 470 471# Health Storage 472PRODUCT_PACKAGES += \ 473 android.hardware.health.storage-service.cuttlefish 474 475# Identity Credential 476PRODUCT_PACKAGES += \ 477 android.hardware.identity-service.remote 478 479PRODUCT_PACKAGES += \ 480 android.hardware.input.processor-service.example 481 482# Netlink Interceptor HAL 483PRODUCT_PACKAGES += \ 484 android.hardware.net.nlinterceptor-service.default 485 486# 487# Sensors 488# 489ifeq ($(LOCAL_SENSOR_PRODUCT_PACKAGE),) 490ifeq ($(LOCAL_PREFER_VENDOR_APEX),true) 491 LOCAL_SENSOR_PRODUCT_PACKAGE := com.android.hardware.sensors 492else 493 LOCAL_SENSOR_PRODUCT_PACKAGE := android.hardware.sensors-service.example 494endif 495endif 496PRODUCT_PACKAGES += \ 497 $(LOCAL_SENSOR_PRODUCT_PACKAGE) 498 499# 500# Lights 501# 502PRODUCT_PACKAGES += \ 503 android.hardware.lights-service.example \ 504 505# 506# KeyMint HAL 507# 508ifeq ($(LOCAL_KEYMINT_PRODUCT_PACKAGE),) 509 LOCAL_KEYMINT_PRODUCT_PACKAGE := android.hardware.security.keymint-service.rust 510endif 511 512PRODUCT_PACKAGES += \ 513 $(LOCAL_KEYMINT_PRODUCT_PACKAGE) \ 514 515# Indicate that KeyMint includes support for the ATTEST_KEY key purpose. 516PRODUCT_COPY_FILES += \ 517 frameworks/native/data/etc/android.hardware.keystore.app_attest_key.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.keystore.app_attest_key.xml 518 519# 520# Power and PowerStats HALs 521# 522ifeq ($(LOCAL_PREFER_VENDOR_APEX),true) 523PRODUCT_PACKAGES += com.android.hardware.power 524else 525PRODUCT_PACKAGES += \ 526 android.hardware.power-service.example \ 527 android.hardware.power.stats-service.example \ 528 529endif 530 531# 532# Tetheroffload HAL 533# 534PRODUCT_PACKAGES += \ 535 android.hardware.tetheroffload-service.example 536 537# 538# Thermal HAL 539# 540LOCAL_THERMAL_HAL_PRODUCT_PACKAGE ?= android.hardware.thermal-service.example 541PRODUCT_PACKAGES += $(LOCAL_THERMAL_HAL_PRODUCT_PACKAGE) 542 543# 544# NeuralNetworks HAL 545# 546PRODUCT_PACKAGES += \ 547 android.hardware.neuralnetworks-service-sample-all \ 548 android.hardware.neuralnetworks-service-sample-limited \ 549 android.hardware.neuralnetworks-shim-service-sample 550 551# USB 552PRODUCT_PACKAGES += \ 553 com.android.hardware.usb 554 555# Vibrator HAL 556ifeq ($(LOCAL_PREFER_VENDOR_APEX),true) 557PRODUCT_PACKAGES += com.android.hardware.vibrator 558else 559PRODUCT_PACKAGES += \ 560 android.hardware.vibrator-service.example 561endif 562 563# BootControl HAL 564PRODUCT_PACKAGES += \ 565 android.hardware.boot-service.default \ 566 android.hardware.boot-service.default_recovery 567 568 569# RebootEscrow HAL 570PRODUCT_PACKAGES += \ 571 android.hardware.rebootescrow-service.default 572 573# Memtrack HAL 574PRODUCT_PACKAGES += \ 575 android.hardware.memtrack-service.example 576 577# Fastboot HAL & fastbootd 578PRODUCT_PACKAGES += \ 579 android.hardware.fastboot@1.1-impl-mock \ 580 fastbootd 581 582# Recovery mode 583ifneq ($(TARGET_NO_RECOVERY),true) 584 585PRODUCT_COPY_FILES += \ 586 device/google/cuttlefish/shared/config/init.recovery.rc:$(TARGET_COPY_OUT_RECOVERY)/root/init.recovery.cutf_cvm.rc \ 587 device/google/cuttlefish/shared/config/cgroups.json:$(TARGET_COPY_OUT_RECOVERY)/root/vendor/etc/cgroups.json \ 588 device/google/cuttlefish/shared/config/ueventd.rc:$(TARGET_COPY_OUT_RECOVERY)/root/ueventd.cutf_cvm.rc \ 589 590PRODUCT_PACKAGES += \ 591 update_engine_sideload 592 593endif 594 595ifdef TARGET_DEDICATED_RECOVERY 596PRODUCT_BUILD_RECOVERY_IMAGE := true 597PRODUCT_PACKAGES += linker.vendor_ramdisk shell_and_utilities_vendor_ramdisk 598else 599PRODUCT_PACKAGES += linker.recovery shell_and_utilities_recovery 600endif 601 602# wifi 603ifeq ($(LOCAL_PREFER_VENDOR_APEX),true) 604# Add com.android.hardware.wifi for android.hardware.wifi-service 605PRODUCT_PACKAGES += com.android.hardware.wifi 606# Add com.google.cf.wifi for hostapd, wpa_supplicant, etc. 607PRODUCT_PACKAGES += com.google.cf.wifi 608$(call add_soong_config_namespace, wpa_supplicant) 609$(call add_soong_config_var_value, wpa_supplicant, platform_version, $(PLATFORM_VERSION)) 610$(call add_soong_config_var_value, wpa_supplicant, nl80211_driver, CONFIG_DRIVER_NL80211_QCA) 611 612else 613PRODUCT_PACKAGES += \ 614 rename_netiface \ 615 wpa_supplicant \ 616 setup_wifi \ 617 mac80211_create_radios \ 618 hostapd \ 619 android.hardware.wifi-service \ 620 init.wifi 621PRODUCT_COPY_FILES += \ 622 device/google/cuttlefish/shared/config/wpa_supplicant.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/wpa_supplicant.rc 623 624# VirtWifi interface configuration 625ifeq ($(DEVICE_VIRTWIFI_PORT),) 626 DEVICE_VIRTWIFI_PORT := eth2 627endif 628PRODUCT_VENDOR_PROPERTIES += ro.vendor.virtwifi.port=${DEVICE_VIRTWIFI_PORT} 629 630# WLAN driver configuration files 631ifndef LOCAL_WPA_SUPPLICANT_OVERLAY 632LOCAL_WPA_SUPPLICANT_OVERLAY := $(LOCAL_PATH)/config/wpa_supplicant_overlay.conf 633endif 634 635ifndef LOCAL_P2P_SUPPLICANT 636LOCAL_P2P_SUPPLICANT := $(LOCAL_PATH)/config/p2p_supplicant.conf 637endif 638 639PRODUCT_COPY_FILES += \ 640 external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant_template.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant.conf \ 641 $(LOCAL_WPA_SUPPLICANT_OVERLAY):$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf \ 642 $(LOCAL_P2P_SUPPLICANT):$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant.conf 643endif 644 645# Wifi Runtime Resource Overlay 646PRODUCT_PACKAGES += \ 647 CuttlefishTetheringOverlay \ 648 CuttlefishWifiOverlay 649 650ifeq ($(PRODUCT_ENFORCE_MAC80211_HWSIM),true) 651PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=mac8011_hwsim_virtio 652$(call soong_config_append,cvdhost,enforce_mac80211_hwsim,true) 653else 654PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=virt_wifi 655endif 656 657# UWB HAL 658PRODUCT_PACKAGES += \ 659 android.hardware.uwb-service 660PRODUCT_COPY_FILES += \ 661 device/google/cuttlefish/guest/hals/uwb/uwb-service.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/uwb-service.rc 662 663 664# Host packages to install 665PRODUCT_HOST_PACKAGES += socket_vsock_proxy 666 667#for Confirmation UI 668PRODUCT_SOONG_NAMESPACES += vendor/google_devices/common/proprietary/confirmatioui_hal 669 670# Need this so that the application's loop on reading input can be synchronized 671# with HW VSYNC 672PRODUCT_VENDOR_PROPERTIES += \ 673 ro.surface_flinger.running_without_sync_framework=true 674 675# Enable GPU-intensive background blur support on Cuttlefish when requested by apps 676PRODUCT_VENDOR_PROPERTIES += \ 677 ro.surface_flinger.supports_background_blur=1 678 679# Disable GPU-intensive background blur for widget picker 680PRODUCT_SYSTEM_PROPERTIES += \ 681 ro.launcher.depth.widget=0 682 683# Start fingerprint virtual HAL process 684PRODUCT_VENDOR_PROPERTIES += ro.vendor.fingerprint_virtual_hal_start=true 685 686# Vendor Dlkm Locader 687PRODUCT_PACKAGES += \ 688 dlkm_loader 689 690# NFC AIDL HAL 691PRODUCT_PACKAGES += \ 692 android.hardware.nfc-service.cuttlefish 693 694# CAS AIDL HAL 695PRODUCT_PACKAGES += \ 696 android.hardware.cas-service.example 697 698PRODUCT_COPY_FILES += \ 699 device/google/cuttlefish/shared/config/pci.ids:$(TARGET_COPY_OUT_VENDOR)/pci.ids 700