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-opengl # for vulkan 39PRODUCT_SOONG_NAMESPACES += device/generic/goldfish # for audio and wifi 40 41PRODUCT_SHIPPING_API_LEVEL := 33 42PRODUCT_USE_DYNAMIC_PARTITIONS := true 43DISABLE_RILD_OEM_HOOK := true 44 45# TODO(b/205788876) remove this condition when openwrt has an image for arm. 46ifndef PRODUCT_ENFORCE_MAC80211_HWSIM 47PRODUCT_ENFORCE_MAC80211_HWSIM := true 48endif 49 50PRODUCT_SET_DEBUGFS_RESTRICTIONS := true 51 52PRODUCT_SOONG_NAMESPACES += device/generic/goldfish-opengl # for vulkan 53 54PRODUCT_FS_COMPRESSION := 1 55TARGET_RO_FILE_SYSTEM_TYPE ?= ext4 56TARGET_USERDATAIMAGE_FILE_SYSTEM_TYPE ?= f2fs 57TARGET_USERDATAIMAGE_PARTITION_SIZE ?= 6442450944 58 59TARGET_VULKAN_SUPPORT ?= true 60TARGET_ENABLE_HOST_BLUETOOTH_EMULATION ?= true 61TARGET_USE_BTLINUX_HAL_IMPL ?= true 62 63# TODO(b/65201432): Swiftshader needs to create executable memory. 64PRODUCT_REQUIRES_INSECURE_EXECMEM_FOR_SWIFTSHADER := true 65 66AB_OTA_UPDATER := true 67AB_OTA_PARTITIONS += \ 68 boot \ 69 odm \ 70 odm_dlkm \ 71 product \ 72 system \ 73 system_dlkm \ 74 system_ext \ 75 vbmeta \ 76 vbmeta_system \ 77 vendor \ 78 vendor_boot \ 79 vendor_dlkm \ 80 81TARGET_USES_INITBOOT ?= true 82ifeq ($(TARGET_USES_INITBOOT),true) 83AB_OTA_PARTITIONS += init_boot 84endif 85 86# Enable Virtual A/B 87$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota/android_t_baseline.mk) 88PRODUCT_VIRTUAL_AB_COMPRESSION_METHOD := gz 89 90# Enable Scoped Storage related 91$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk) 92 93# Properties that are not vendor-specific. These will go in the product 94# partition, instead of the vendor partition, and do not need vendor 95# sepolicy 96PRODUCT_PRODUCT_PROPERTIES += \ 97 persist.adb.tcp.port=5555 \ 98 ro.com.google.locationfeatures=1 \ 99 persist.sys.fuse.passthrough.enable=true \ 100 persist.sys.fuse.bpf.enable=false \ 101 102# Until we support adb keys on user builds, and fix logcat over serial, 103# spawn adbd by default without authorization for "adb logcat" 104ifeq ($(TARGET_BUILD_VARIANT),user) 105PRODUCT_PRODUCT_PROPERTIES += \ 106 ro.adb.secure=0 \ 107 ro.debuggable=1 108endif 109 110# Explanation of specific properties: 111# ro.hardware.keystore_desede=true needed for CtsKeystoreTestCases 112PRODUCT_VENDOR_PROPERTIES += \ 113 tombstoned.max_tombstone_count=500 \ 114 vendor.bt.rootcanal_test_console=off \ 115 ro.carrier=unknown \ 116 ro.com.android.dataroaming?=false \ 117 ro.hardware.virtual_device=1 \ 118 ro.logd.size=1M \ 119 wifi.interface=wlan0 \ 120 wifi.direct.interface=p2p-dev-wlan0 \ 121 persist.sys.zram_enabled=1 \ 122 ro.hardware.keystore_desede=true \ 123 ro.rebootescrow.device=/dev/block/pmem0 \ 124 ro.vendor.hwcomposer.pmem=/dev/block/pmem1 \ 125 ro.incremental.enable=1 \ 126 debug.c2.use_dmabufheaps=1 \ 127 ro.camerax.extensions.enabled=true \ 128 129LOCAL_BT_PROPERTIES ?= \ 130 vendor.ser.bt-uart?=/dev/hvc5 \ 131 132PRODUCT_VENDOR_PROPERTIES += \ 133 ${LOCAL_BT_PROPERTIES} \ 134 135# Below is a list of properties we probably should get rid of. 136PRODUCT_VENDOR_PROPERTIES += \ 137 wlan.driver.status=ok 138 139ifneq ($(LOCAL_DISABLE_OMX),true) 140# Codec 1.0 requires the OMX services 141DEVICE_MANIFEST_FILE += \ 142 device/google/cuttlefish/shared/config/android.hardware.media.omx@1.0.xml 143endif 144 145PRODUCT_VENDOR_PROPERTIES += \ 146 debug.stagefright.c2inputsurface=-1 147 148# Enforce privapp permissions control. 149PRODUCT_VENDOR_PROPERTIES += ro.control_privapp_permissions?=enforce 150 151# aes-256-heh default is not supported in standard kernels. 152PRODUCT_VENDOR_PROPERTIES += ro.crypto.volume.filenames_mode=aes-256-cts 153 154# Copy preopted files from system_b on first boot 155PRODUCT_VENDOR_PROPERTIES += ro.cp_system_other_odex=1 156 157AB_OTA_POSTINSTALL_CONFIG += \ 158 RUN_POSTINSTALL_system=true \ 159 POSTINSTALL_PATH_system=system/bin/otapreopt_script \ 160 FILESYSTEM_TYPE_system=ext4 \ 161 POSTINSTALL_OPTIONAL_system=true 162 163AB_OTA_POSTINSTALL_CONFIG += \ 164 RUN_POSTINSTALL_vendor=true \ 165 POSTINSTALL_PATH_vendor=bin/checkpoint_gc \ 166 FILESYSTEM_TYPE_vendor=ext4 \ 167 POSTINSTALL_OPTIONAL_vendor=true 168 169# Userdata Checkpointing OTA GC 170PRODUCT_PACKAGES += \ 171 checkpoint_gc 172 173# Enable CameraX extension sample 174PRODUCT_PACKAGES += androidx.camera.extensions.impl sample_camera_extensions.xml 175 176# DRM service opt-in 177PRODUCT_VENDOR_PROPERTIES += drm.service.enabled=true 178 179# Call deleteAllKeys if vold detects a factory reset 180PRODUCT_VENDOR_PROPERTIES += ro.crypto.metadata_init_delete_all_keys.enabled=true 181 182PRODUCT_SOONG_NAMESPACES += hardware/google/camera 183PRODUCT_SOONG_NAMESPACES += hardware/google/camera/devices/EmulatedCamera 184 185# 186# Packages for various GCE-specific utilities 187# 188PRODUCT_PACKAGES += \ 189 CuttlefishService \ 190 cuttlefish_sensor_injection \ 191 socket_vsock_proxy \ 192 tombstone_transmit \ 193 tombstone_producer \ 194 suspend_blocker \ 195 vsoc_input_service \ 196 197$(call soong_config_append,cvd,launch_configs,cvd_config_auto.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) 198$(call soong_config_append,cvd,grub_config,grub.cfg) 199 200# 201# Packages for AOSP-available stuff we use from the framework 202# 203PRODUCT_PACKAGES += \ 204 e2fsck \ 205 ip \ 206 sleep \ 207 tcpdump \ 208 wificond \ 209 210# 211# Packages for the OpenGL implementation 212# 213 214# ANGLE provides an OpenGL implementation built on top of Vulkan. 215PRODUCT_PACKAGES += \ 216 libEGL_angle \ 217 libGLESv1_CM_angle \ 218 libGLESv2_angle 219 220# GL implementation for virgl 221PRODUCT_PACKAGES += \ 222 libGLES_mesa \ 223 224# 225# Packages for the Vulkan implementation 226# 227ifeq ($(TARGET_VULKAN_SUPPORT),true) 228PRODUCT_PACKAGES += \ 229 vulkan.ranchu \ 230 libvulkan_enc \ 231 vulkan.pastel 232endif 233 234# GL/Vk implementation for gfxstream 235PRODUCT_PACKAGES += \ 236 libandroidemu \ 237 libOpenglCodecCommon \ 238 libOpenglSystemCommon \ 239 libGLESv1_CM_emulation \ 240 lib_renderControl_enc \ 241 libEGL_emulation \ 242 libGLESv2_enc \ 243 libGLESv2_emulation \ 244 libGLESv1_enc \ 245 libGoldfishProfiler \ 246 247# 248# Packages for testing 249# 250PRODUCT_PACKAGES += \ 251 aidl_lazy_test_server \ 252 aidl_lazy_cb_test_server \ 253 hidl_lazy_test_server \ 254 hidl_lazy_cb_test_server 255 256# Runtime Resource Overlays 257ifneq ($(LOCAL_PREFER_VENDOR_APEX),true) 258PRODUCT_PACKAGES += \ 259 cuttlefish_overlay_connectivity \ 260 cuttlefish_overlay_frameworks_base_core \ 261 cuttlefish_overlay_settings_provider 262 263endif 264 265# PRODUCT_AAPT_CONFIG and PRODUCT_AAPT_PREF_CONFIG are intentionally not set to 266# pick up every density resources. 267 268# 269# Common manifest for all targets 270# 271DEVICE_MANIFEST_FILE += device/google/cuttlefish/shared/config/manifest.xml 272 273# 274# General files 275# 276 277 278ifneq ($(LOCAL_SENSOR_FILE_OVERRIDES),true) 279ifneq ($(LOCAL_PREFER_VENDOR_APEX),true) 280 PRODUCT_COPY_FILES += \ 281 frameworks/native/data/etc/android.hardware.sensor.ambient_temperature.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.ambient_temperature.xml \ 282 frameworks/native/data/etc/android.hardware.sensor.barometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.barometer.xml \ 283 frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.gyroscope.xml \ 284 frameworks/native/data/etc/android.hardware.sensor.hinge_angle.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.hinge_angle.xml \ 285 frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml \ 286 frameworks/native/data/etc/android.hardware.sensor.proximity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.proximity.xml \ 287 frameworks/native/data/etc/android.hardware.sensor.relative_humidity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.relative_humidity.xml 288endif 289endif 290 291ifneq ($(LOCAL_PREFER_VENDOR_APEX),true) 292PRODUCT_COPY_FILES += \ 293 device/google/cuttlefish/shared/permissions/cuttlefish_excluded_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/cuttlefish_excluded_hardware.xml \ 294 frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml \ 295 frameworks/native/data/etc/android.hardware.camera.concurrent.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.concurrent.xml \ 296 frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.flash-autofocus.xml \ 297 frameworks/native/data/etc/android.hardware.camera.front.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.front.xml \ 298 frameworks/native/data/etc/android.hardware.camera.full.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.full.xml \ 299 frameworks/native/data/etc/android.hardware.camera.raw.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.raw.xml \ 300 frameworks/native/data/etc/android.hardware.ethernet.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.ethernet.xml \ 301 frameworks/native/data/etc/android.hardware.location.gps.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.location.gps.xml \ 302 frameworks/native/data/etc/android.hardware.reboot_escrow.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.reboot_escrow.xml \ 303 frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml \ 304 frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \ 305 frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \ 306 frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml \ 307 frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml \ 308 frameworks/native/data/etc/android.software.ipsec_tunnels.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.ipsec_tunnels.xml \ 309 frameworks/native/data/etc/android.software.sip.voip.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.sip.voip.xml \ 310 frameworks/native/data/etc/android.software.verified_boot.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.verified_boot.xml \ 311 hardware/google/camera/devices/EmulatedCamera/hwl/configs/emu_camera_back.json:$(TARGET_COPY_OUT_VENDOR)/etc/config/emu_camera_back.json \ 312 hardware/google/camera/devices/EmulatedCamera/hwl/configs/emu_camera_front.json:$(TARGET_COPY_OUT_VENDOR)/etc/config/emu_camera_front.json \ 313 hardware/google/camera/devices/EmulatedCamera/hwl/configs/emu_camera_depth.json:$(TARGET_COPY_OUT_VENDOR)/etc/config/emu_camera_depth.json 314endif 315PRODUCT_COPY_FILES += \ 316 frameworks/native/data/etc/android.hardware.consumerir.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.consumerir.xml \ 317 device/google/cuttlefish/shared/config/init.vendor.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.cutf_cvm.rc \ 318 device/google/cuttlefish/shared/config/init.product.rc:$(TARGET_COPY_OUT_PRODUCT)/etc/init/init.rc \ 319 device/google/cuttlefish/shared/config/ueventd.rc:$(TARGET_COPY_OUT_VENDOR)/etc/ueventd.rc \ 320 device/google/cuttlefish/shared/config/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \ 321 device/google/cuttlefish/shared/config/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml \ 322 device/google/cuttlefish/shared/config/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml \ 323 device/google/cuttlefish/shared/config/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml \ 324 device/google/cuttlefish/shared/permissions/privapp-permissions-cuttlefish.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/privapp-permissions-cuttlefish.xml \ 325 frameworks/av/media/libeffects/data/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \ 326 frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \ 327 frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \ 328 frameworks/av/services/audiopolicy/config/a2dp_in_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_in_audio_policy_configuration_7_0.xml \ 329 frameworks/av/services/audiopolicy/config/bluetooth_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_audio_policy_configuration_7_0.xml \ 330 frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \ 331 frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \ 332 frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \ 333 frameworks/av/services/audiopolicy/config/surround_sound_configuration_5_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/surround_sound_configuration_5_0.xml \ 334 device/google/cuttlefish/shared/config/task_profiles.json:$(TARGET_COPY_OUT_VENDOR)/etc/task_profiles.json \ 335 336ifeq ($(LOCAL_PREFER_VENDOR_APEX),true) 337PRODUCT_PACKAGES += com.google.cf.input.config 338else 339PRODUCT_COPY_FILES += \ 340 device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_0.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_0.idc \ 341 device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_1.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_1.idc \ 342 device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_2.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_2.idc \ 343 device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_3.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_3.idc 344endif 345 346PRODUCT_COPY_FILES += \ 347 device/google/cuttlefish/shared/config/fstab.f2fs:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/first_stage_ramdisk/fstab.f2fs \ 348 device/google/cuttlefish/shared/config/fstab.f2fs:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.f2fs \ 349 device/google/cuttlefish/shared/config/fstab.f2fs:$(TARGET_COPY_OUT_RECOVERY)/root/first_stage_ramdisk/fstab.f2fs \ 350 device/google/cuttlefish/shared/config/fstab.ext4:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/first_stage_ramdisk/fstab.ext4 \ 351 device/google/cuttlefish/shared/config/fstab.ext4:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.ext4 \ 352 device/google/cuttlefish/shared/config/fstab.ext4:$(TARGET_COPY_OUT_RECOVERY)/root/first_stage_ramdisk/fstab.ext4 353 354ifeq ($(TARGET_VULKAN_SUPPORT),true) 355ifneq ($(LOCAL_PREFER_VENDOR_APEX),true) 356PRODUCT_COPY_FILES += \ 357 frameworks/native/data/etc/android.hardware.vulkan.level-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \ 358 frameworks/native/data/etc/android.hardware.vulkan.version-1_0_3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \ 359 frameworks/native/data/etc/android.software.vulkan.deqp.level-2022-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \ 360 frameworks/native/data/etc/android.software.opengles.deqp.level-2022-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml 361endif 362endif 363 364# Packages for HAL implementations 365 366# 367# Atrace HAL 368# 369PRODUCT_PACKAGES += \ 370 android.hardware.atrace@1.0-service 371 372# 373# Weaver aidl HAL 374# 375PRODUCT_PACKAGES += \ 376 android.hardware.weaver-service.example 377 378# 379# IR aidl HAL 380# 381PRODUCT_PACKAGES += \ 382 android.hardware.ir-service.example 383 384# 385# OemLock aidl HAL 386# 387PRODUCT_PACKAGES += \ 388 android.hardware.oemlock-service.example 389 390# 391# Authsecret HAL 392# 393PRODUCT_PACKAGES += \ 394 android.hardware.authsecret@1.0-service 395 396# 397# Authsecret AIDL HAL 398# 399PRODUCT_PACKAGES += \ 400 android.hardware.authsecret-service.example 401# 402# Hardware Composer HAL 403# 404# The device needs to avoid having both hwcomposer2.4 and hwcomposer3 405# services running at the same time so make the user manually enables 406# in order to run with --gpu_mode=drm. 407ifeq ($(TARGET_ENABLE_DRMHWCOMPOSER),true) 408DEVICE_MANIFEST_FILE += \ 409 device/google/cuttlefish/shared/config/manifest_android.hardware.graphics.composer@2.4-service.xml 410PRODUCT_PACKAGES += \ 411 android.hardware.graphics.composer@2.4-service \ 412 hwcomposer.drm 413else 414PRODUCT_PACKAGES += \ 415 android.hardware.graphics.composer3-service.ranchu 416endif 417 418# 419# Gralloc HAL 420# 421PRODUCT_PACKAGES += \ 422 android.hardware.graphics.allocator-V1-service.minigbm \ 423 android.hardware.graphics.mapper@4.0-impl.minigbm 424 425# 426# Bluetooth HAL and Compatibility Bluetooth library (for older revs). 427# 428ifneq ($(LOCAL_PREFER_VENDOR_APEX),true) 429ifeq ($(LOCAL_BLUETOOTH_PRODUCT_PACKAGE),) 430ifeq ($(TARGET_ENABLE_HOST_BLUETOOTH_EMULATION),true) 431ifeq ($(TARGET_USE_BTLINUX_HAL_IMPL),true) 432 LOCAL_BLUETOOTH_PRODUCT_PACKAGE := android.hardware.bluetooth@1.1-service.btlinux 433else 434 LOCAL_BLUETOOTH_PRODUCT_PACKAGE := android.hardware.bluetooth@1.1-service.remote 435endif 436else 437 LOCAL_BLUETOOTH_PRODUCT_PACKAGE := android.hardware.bluetooth@1.1-service.sim 438endif 439 DEVICE_MANIFEST_FILE += device/google/cuttlefish/shared/config/manifest_android.hardware.bluetooth@1.1-service.xml 440endif 441 442PRODUCT_COPY_FILES +=\ 443 frameworks/native/data/etc/android.hardware.bluetooth.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth.xml \ 444 frameworks/native/data/etc/android.hardware.bluetooth_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth_le.xml 445 446PRODUCT_PACKAGES += $(LOCAL_BLUETOOTH_PRODUCT_PACKAGE) 447 448PRODUCT_PACKAGES += android.hardware.bluetooth.audio@2.1-impl bt_vhci_forwarder 449 450# Bluetooth initialization configuration is copied to the init folder here instead of being added 451# as an init_rc attribute of the bt_vhci_forward binary. The bt_vhci_forward binary is used by 452# multiple targets with different initialization configurations. 453PRODUCT_COPY_FILES += \ 454 device/google/cuttlefish/guest/commands/bt_vhci_forwarder/bt_vhci_forwarder.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/bt_vhci_forwarder.rc 455 456else 457PRODUCT_PACKAGES += com.google.cf.bt android.hardware.bluetooth.audio@2.1-impl 458endif 459 460# 461# Bluetooth Audio AIDL HAL 462# 463PRODUCT_PACKAGES += \ 464 android.hardware.bluetooth.audio-impl \ 465 466# 467# Audio HAL 468# 469ifndef LOCAL_AUDIO_PRODUCT_PACKAGE 470LOCAL_AUDIO_PRODUCT_PACKAGE := \ 471 android.hardware.audio.service \ 472 android.hardware.audio@7.1-impl.ranchu \ 473 android.hardware.audio.effect@7.0-impl 474DEVICE_MANIFEST_FILE += \ 475 device/google/cuttlefish/guest/hals/audio/effects/manifest.xml 476endif 477 478ifndef LOCAL_AUDIO_PRODUCT_COPY_FILES 479LOCAL_AUDIO_PRODUCT_COPY_FILES := \ 480 device/generic/goldfish/audio/policy/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \ 481 device/generic/goldfish/audio/policy/primary_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/primary_audio_policy_configuration.xml \ 482 frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \ 483 frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \ 484 frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \ 485 frameworks/av/media/libeffects/data/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml 486endif 487 488PRODUCT_PACKAGES += $(LOCAL_AUDIO_PRODUCT_PACKAGE) 489PRODUCT_COPY_FILES += $(LOCAL_AUDIO_PRODUCT_COPY_FILES) 490DEVICE_PACKAGE_OVERLAYS += $(LOCAL_AUDIO_DEVICE_PACKAGE_OVERLAYS) 491 492# 493# BiometricsFace HAL (HIDL) 494# 495PRODUCT_PACKAGES += \ 496 android.hardware.biometrics.face@1.0-service.example 497 498# 499# BiometricsFingerprint HAL (HIDL) 500# 501PRODUCT_PACKAGES += \ 502 android.hardware.biometrics.fingerprint@2.2-service.example 503 504# 505# BiometricsFace HAL (AIDL) 506# 507PRODUCT_PACKAGES += \ 508 android.hardware.biometrics.face-service.example 509 510# 511# BiometricsFingerprint HAL (AIDL) 512# 513PRODUCT_PACKAGES += \ 514 android.hardware.biometrics.fingerprint-service.example 515 516# 517# Contexthub HAL 518# 519PRODUCT_PACKAGES += \ 520 android.hardware.contexthub-service.example 521 522# 523# Drm HAL 524# 525PRODUCT_PACKAGES += \ 526 android.hardware.drm@latest-service.clearkey \ 527 android.hardware.drm@latest-service.widevine 528 529# 530# Confirmation UI HAL 531# 532ifeq ($(LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE),) 533 LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE := android.hardware.confirmationui@1.0-service.cuttlefish 534endif 535PRODUCT_PACKAGES += $(LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE) 536 537# 538# Dumpstate HAL 539# 540ifeq ($(LOCAL_DUMPSTATE_PRODUCT_PACKAGE),) 541 LOCAL_DUMPSTATE_PRODUCT_PACKAGE += android.hardware.dumpstate-service.example 542endif 543PRODUCT_PACKAGES += $(LOCAL_DUMPSTATE_PRODUCT_PACKAGE) 544 545# 546# Camera 547# 548ifeq ($(TARGET_USE_VSOCK_CAMERA_HAL_IMPL),true) 549PRODUCT_PACKAGES += \ 550 android.hardware.camera.provider@2.7-external-vsock-service \ 551 android.hardware.camera.provider@2.7-impl-cuttlefish 552DEVICE_MANIFEST_FILE += \ 553 device/google/cuttlefish/guest/hals/camera/manifest.xml 554else 555ifeq ($(LOCAL_PREFER_VENDOR_APEX),true) 556PRODUCT_PACKAGES += com.google.emulated.camera.provider.hal 557PRODUCT_PACKAGES += com.google.emulated.camera.provider.hal.fastscenecycle 558endif 559PRODUCT_PACKAGES += \ 560 android.hardware.camera.provider@2.7-service-google \ 561 libgooglecamerahwl_impl \ 562 android.hardware.camera.provider@2.7-impl-google \ 563 564endif 565# 566# Gatekeeper 567# 568ifeq ($(LOCAL_GATEKEEPER_PRODUCT_PACKAGE),) 569 LOCAL_GATEKEEPER_PRODUCT_PACKAGE := android.hardware.gatekeeper@1.0-service.remote 570endif 571PRODUCT_PACKAGES += \ 572 $(LOCAL_GATEKEEPER_PRODUCT_PACKAGE) 573 574# 575# GPS 576# 577LOCAL_GNSS_PRODUCT_PACKAGE ?= \ 578 android.hardware.gnss-service.example 579 580PRODUCT_PACKAGES += $(LOCAL_GNSS_PRODUCT_PACKAGE) 581 582# Health 583ifeq ($(LOCAL_HEALTH_PRODUCT_PACKAGE),) 584 LOCAL_HEALTH_PRODUCT_PACKAGE := \ 585 android.hardware.health-service.cuttlefish \ 586 android.hardware.health-service.cuttlefish_recovery \ 587 588endif 589PRODUCT_PACKAGES += $(LOCAL_HEALTH_PRODUCT_PACKAGE) 590 591# Health Storage 592PRODUCT_PACKAGES += \ 593 android.hardware.health.storage-service.cuttlefish 594 595# Identity Credential 596PRODUCT_PACKAGES += \ 597 android.hardware.identity-service.remote 598 599PRODUCT_PACKAGES += \ 600 android.hardware.input.processor-service.example 601 602# Netlink Interceptor HAL 603PRODUCT_PACKAGES += \ 604 android.hardware.net.nlinterceptor-service.default 605 606# 607# Sensors 608# 609ifeq ($(LOCAL_SENSOR_PRODUCT_PACKAGE),) 610# TODO(b/210883464): Convert the sensors APEX to use the new AIDL impl. 611#ifeq ($(LOCAL_PREFER_VENDOR_APEX),true) 612# LOCAL_SENSOR_PRODUCT_PACKAGE := com.android.hardware.sensors 613#else 614 LOCAL_SENSOR_PRODUCT_PACKAGE := android.hardware.sensors-service.example 615#endif 616endif 617PRODUCT_PACKAGES += \ 618 $(LOCAL_SENSOR_PRODUCT_PACKAGE) 619# 620# Thermal (mock) 621# 622ifeq ($(LOCAL_PREFER_VENDOR_APEX),true) 623PRODUCT_PACKAGES += com.android.hardware.thermal.mock 624else 625PRODUCT_PACKAGES += android.hardware.thermal@2.0-service.mock 626endif 627 628# 629# Lights 630# 631PRODUCT_PACKAGES += \ 632 android.hardware.lights-service.example \ 633 634# 635# KeyMint HAL 636# 637ifeq ($(LOCAL_KEYMINT_PRODUCT_PACKAGE),) 638 LOCAL_KEYMINT_PRODUCT_PACKAGE := android.hardware.security.keymint-service.remote 639# Indicate that this KeyMint includes support for the ATTEST_KEY key purpose. 640PRODUCT_COPY_FILES += \ 641 frameworks/native/data/etc/android.hardware.keystore.app_attest_key.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.keystore.app_attest_key.xml 642endif 643 PRODUCT_PACKAGES += \ 644 $(LOCAL_KEYMINT_PRODUCT_PACKAGE) 645 646# Keymint configuration 647ifneq ($(LOCAL_PREFER_VENDOR_APEX),true) 648PRODUCT_COPY_FILES += \ 649 frameworks/native/data/etc/android.software.device_id_attestation.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.device_id_attestation.xml 650endif 651 652# 653# Dice HAL 654# 655PRODUCT_PACKAGES += \ 656 android.hardware.security.dice-service.non-secure-software 657 658# 659# Power and PowerStats HALs 660# 661ifeq ($(LOCAL_PREFER_VENDOR_APEX),true) 662PRODUCT_PACKAGES += com.android.hardware.power 663else 664PRODUCT_PACKAGES += \ 665 android.hardware.power-service.example \ 666 android.hardware.power.stats-service.example \ 667 668endif 669 670# 671# NeuralNetworks HAL 672# 673PRODUCT_PACKAGES += \ 674 android.hardware.neuralnetworks@1.3-service-sample-all \ 675 android.hardware.neuralnetworks@1.3-service-sample-limited \ 676 android.hardware.neuralnetworks-service-sample-all \ 677 android.hardware.neuralnetworks-service-sample-limited \ 678 android.hardware.neuralnetworks-shim-service-sample 679 680# 681# USB 682# TODO(b/227791019): Convert USB AIDL HAL to APEX 683# ifeq ($(LOCAL_PREFER_VENDOR_APEX),true) 684# PRODUCT_PACKAGES += \ 685# com.android.hardware.usb 686#else 687PRODUCT_PACKAGES += \ 688 android.hardware.usb-service.example 689#endif 690 691# Vibrator HAL 692ifeq ($(LOCAL_PREFER_VENDOR_APEX),true) 693PRODUCT_PACKAGES += com.android.hardware.vibrator 694else 695PRODUCT_PACKAGES += \ 696 android.hardware.vibrator-service.example 697endif 698 699# BootControl HAL 700PRODUCT_PACKAGES += \ 701 android.hardware.boot@1.2-impl \ 702 android.hardware.boot@1.2-impl.recovery \ 703 android.hardware.boot@1.2-service 704 705# RebootEscrow HAL 706PRODUCT_PACKAGES += \ 707 android.hardware.rebootescrow-service.default 708 709# Memtrack HAL 710PRODUCT_PACKAGES += \ 711 android.hardware.memtrack-service.example 712 713# Fastboot HAL & fastbootd 714PRODUCT_PACKAGES += \ 715 android.hardware.fastboot@1.1-impl-mock \ 716 fastbootd 717 718# Recovery mode 719ifneq ($(TARGET_NO_RECOVERY),true) 720 721PRODUCT_COPY_FILES += \ 722 device/google/cuttlefish/shared/config/init.recovery.rc:$(TARGET_COPY_OUT_RECOVERY)/root/init.recovery.cutf_cvm.rc \ 723 device/google/cuttlefish/shared/config/cgroups.json:$(TARGET_COPY_OUT_RECOVERY)/root/vendor/etc/cgroups.json \ 724 device/google/cuttlefish/shared/config/ueventd.rc:$(TARGET_COPY_OUT_RECOVERY)/root/ueventd.cutf_cvm.rc \ 725 726PRODUCT_PACKAGES += \ 727 update_engine_sideload 728 729endif 730 731ifdef TARGET_DEDICATED_RECOVERY 732PRODUCT_BUILD_RECOVERY_IMAGE := true 733PRODUCT_PACKAGES += linker.vendor_ramdisk shell_and_utilities_vendor_ramdisk 734else 735PRODUCT_PACKAGES += linker.recovery shell_and_utilities_recovery 736endif 737 738# wifi 739ifeq ($(LOCAL_PREFER_VENDOR_APEX),true) 740ifneq ($(PRODUCT_ENFORCE_MAC80211_HWSIM),true) 741PRODUCT_PACKAGES += com.google.cf.wifi 742# Demonstrate multi-installed vendor APEXes by installing another wifi HAL vendor APEX 743# which does not include the passpoint feature XML. 744# 745# The default is set in BoardConfig.mk using bootconfig. 746# This can be changed at CVD launch-time using 747# --extra_bootconfig_args "androidboot.vendor.apex.com.android.wifi.hal:=X" 748# or post-launch, at runtime using 749# setprop persist.vendor.apex.com.android.wifi.hal X && reboot 750# where X is the name of the APEX file to use. 751PRODUCT_PACKAGES += com.google.cf.wifi.no-passpoint 752 753$(call add_soong_config_namespace, wpa_supplicant) 754$(call add_soong_config_var_value, wpa_supplicant, platform_version, $(PLATFORM_VERSION)) 755$(call add_soong_config_var_value, wpa_supplicant, nl80211_driver, CONFIG_DRIVER_NL80211_QCA) 756PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=virt_wifi 757else 758PRODUCT_SOONG_NAMESPACES += device/google/cuttlefish/apex/com.google.cf.wifi_hwsim 759PRODUCT_PACKAGES += com.google.cf.wifi_hwsim 760$(call add_soong_config_namespace, wpa_supplicant) 761$(call add_soong_config_var_value, wpa_supplicant, platform_version, $(PLATFORM_VERSION)) 762$(call add_soong_config_var_value, wpa_supplicant, nl80211_driver, CONFIG_DRIVER_NL80211_QCA) 763PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=mac8011_hwsim_virtio 764 765$(call soong_config_append,cvdhost,enforce_mac80211_hwsim,true) 766endif 767else 768 769PRODUCT_PACKAGES += \ 770 rename_netiface \ 771 wpa_supplicant 772PRODUCT_COPY_FILES += \ 773 device/google/cuttlefish/shared/config/wpa_supplicant.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/wpa_supplicant.rc 774 775# VirtWifi interface configuration 776ifeq ($(DEVICE_VIRTWIFI_PORT),) 777 DEVICE_VIRTWIFI_PORT := eth2 778endif 779PRODUCT_VENDOR_PROPERTIES += ro.vendor.virtwifi.port=${DEVICE_VIRTWIFI_PORT} 780 781# WLAN driver configuration files 782ifndef LOCAL_WPA_SUPPLICANT_OVERLAY 783LOCAL_WPA_SUPPLICANT_OVERLAY := $(LOCAL_PATH)/config/wpa_supplicant_overlay.conf 784endif 785ifndef LOCAL_P2P_SUPPLICANT 786LOCAL_P2P_SUPPLICANT := $(LOCAL_PATH)/config/p2p_supplicant.conf 787endif 788PRODUCT_COPY_FILES += \ 789 external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant_template.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant.conf \ 790 $(LOCAL_WPA_SUPPLICANT_OVERLAY):$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf \ 791 $(LOCAL_P2P_SUPPLICANT):$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant.conf 792 793ifeq ($(PRODUCT_ENFORCE_MAC80211_HWSIM),true) 794PRODUCT_PACKAGES += \ 795 mac80211_create_radios \ 796 hostapd \ 797 android.hardware.wifi@1.0-service \ 798 init.wifi.sh 799 800PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=mac8011_hwsim_virtio 801 802$(call soong_config_append,cvdhost,enforce_mac80211_hwsim,true) 803 804else 805PRODUCT_PACKAGES += setup_wifi 806PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=virt_wifi 807endif 808 809endif 810 811# UWB HAL 812PRODUCT_PACKAGES += \ 813 android.hardware.uwb-service 814 815ifeq ($(PRODUCT_ENFORCE_MAC80211_HWSIM),true) 816# Wifi Runtime Resource Overlay 817PRODUCT_PACKAGES += \ 818 CuttlefishTetheringOverlay \ 819 CuttlefishWifiOverlay 820endif 821 822# Host packages to install 823PRODUCT_HOST_PACKAGES += socket_vsock_proxy 824 825PRODUCT_EXTRA_VNDK_VERSIONS := 28 29 30 31 826 827PRODUCT_SOONG_NAMESPACES += external/mesa3d 828 829#for Confirmation UI 830PRODUCT_SOONG_NAMESPACES += vendor/google_devices/common/proprietary/confirmatioui_hal 831 832# Need this so that the application's loop on reading input can be synchronized 833# with HW VSYNC 834PRODUCT_VENDOR_PROPERTIES += \ 835 ro.surface_flinger.running_without_sync_framework=true 836 837# Enable GPU-intensive background blur support on Cuttlefish when requested by apps 838PRODUCT_VENDOR_PROPERTIES += \ 839 ro.surface_flinger.supports_background_blur=1 840 841# Disable GPU-intensive background blur for widget picker 842PRODUCT_SYSTEM_PROPERTIES += \ 843 ro.launcher.depth.widget=0 844 845# Vendor Dlkm Locader 846PRODUCT_PACKAGES += \ 847 dlkm_loader 848 849# NFC AIDL HAL 850PRODUCT_PACKAGES += \ 851 android.hardware.nfc-service.cuttlefish 852 853PRODUCT_COPY_FILES += \ 854 device/google/cuttlefish/shared/config/pci.ids:$(TARGET_COPY_OUT_VENDOR)/pci.ids 855