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, wifi and sensors 39 40PRODUCT_USE_DYNAMIC_PARTITIONS := true 41DISABLE_RILD_OEM_HOOK := true 42# For customize cflags for libril share library building by soong. 43$(call soong_config_set,ril,disable_rild_oem_hook,true) 44 45# TODO(b/294888357) Remove this condition when OpenWRT is supported for RISC-V. 46ifndef PRODUCT_ENFORCE_MAC80211_HWSIM 47PRODUCT_ENFORCE_MAC80211_HWSIM := true 48endif 49 50PRODUCT_SET_DEBUGFS_RESTRICTIONS := true 51 52PRODUCT_FS_COMPRESSION := 1 53TARGET_RO_FILE_SYSTEM_TYPE ?= erofs 54BOARD_EROFS_COMPRESS_HINTS := device/google/cuttlefish/shared/erofs_compress_hints.txt 55TARGET_USERDATAIMAGE_FILE_SYSTEM_TYPE ?= f2fs 56TARGET_USERDATAIMAGE_PARTITION_SIZE ?= 8589934592 57 58TARGET_VULKAN_SUPPORT ?= true 59 60# Enable Virtual A/B 61$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota/vabc_features.mk) 62PRODUCT_VIRTUAL_AB_COMPRESSION_METHOD := lz4 63PRODUCT_VIRTUAL_AB_COW_VERSION := 3 64PRODUCT_VIRTUAL_AB_COMPRESSION_FACTOR := 65536 65 66PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.compression.threads=true 67PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.batch_writes=true 68 69# Enable Scoped Storage related 70$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk) 71 72# Properties that are not vendor-specific. These will go in the product 73# partition, instead of the vendor partition, and do not need vendor 74# sepolicy 75PRODUCT_PRODUCT_PROPERTIES += \ 76 remote_provisioning.hostname=staging-remoteprovisioning.sandbox.googleapis.com \ 77 persist.adb.tcp.port=5555 \ 78 ro.com.google.locationfeatures=1 \ 79 persist.sys.fuse.passthrough.enable=true \ 80 remote_provisioning.tee.rkp_only=1 81 82# Until we support adb keys on user builds, and fix logcat over serial, 83# spawn adbd by default without authorization for "adb logcat" 84ifeq ($(TARGET_BUILD_VARIANT),user) 85PRODUCT_PRODUCT_PROPERTIES += \ 86 ro.adb.secure=0 \ 87 ro.debuggable=1 88 89PRODUCT_PACKAGES += \ 90 logpersist.start 91 92PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST += \ 93 $(TARGET_COPY_OUT_SYSTEM)/bin/logcatd \ 94 $(TARGET_COPY_OUT_SYSTEM)/bin/logpersist.cat \ 95 $(TARGET_COPY_OUT_SYSTEM)/bin/logpersist.start \ 96 $(TARGET_COPY_OUT_SYSTEM)/bin/logpersist.stop \ 97 $(TARGET_COPY_OUT_SYSTEM)/etc/init/logcatd.rc 98endif 99 100# Use AIDL for media.c2 HAL 101PRODUCT_VENDOR_PROPERTIES += media.c2.hal.selection=aidl 102 103# Explanation of specific properties: 104# ro.hardware.keystore_desede=true needed for CtsKeystoreTestCases 105PRODUCT_VENDOR_PROPERTIES += \ 106 tombstoned.max_tombstone_count=100 \ 107 ro.carrier=unknown \ 108 ro.com.android.dataroaming?=false \ 109 ro.hardware.virtual_device=1 \ 110 ro.logd.size=1M \ 111 wifi.interface=wlan0 \ 112 wifi.direct.interface=p2p-dev-wlan0 \ 113 persist.sys.zram_enabled=1 \ 114 ro.hardware.keystore_desede=true \ 115 ro.incremental.enable=1 \ 116 debug.c2.use_dmabufheaps=1 117 118# Below is a list of properties we probably should get rid of. 119PRODUCT_VENDOR_PROPERTIES += \ 120 wlan.driver.status=ok 121 122PRODUCT_VENDOR_PROPERTIES += \ 123 debug.stagefright.c2inputsurface=-1 124 125# Enforce privapp permissions control. 126PRODUCT_VENDOR_PROPERTIES += ro.control_privapp_permissions?=enforce 127 128# Copy preopted files from system_b on first boot 129PRODUCT_VENDOR_PROPERTIES += ro.cp_system_other_odex=1 130 131AB_OTA_POSTINSTALL_CONFIG += \ 132 RUN_POSTINSTALL_system=true \ 133 POSTINSTALL_PATH_system=system/bin/otapreopt_script \ 134 FILESYSTEM_TYPE_system=erofs \ 135 POSTINSTALL_OPTIONAL_system=true 136 137AB_OTA_POSTINSTALL_CONFIG += \ 138 RUN_POSTINSTALL_vendor=true \ 139 POSTINSTALL_PATH_vendor=bin/checkpoint_gc \ 140 FILESYSTEM_TYPE_vendor=erofs \ 141 POSTINSTALL_OPTIONAL_vendor=true 142 143# Userdata Checkpointing OTA GC 144PRODUCT_PACKAGES += \ 145 checkpoint_gc 146 147# DRM service opt-in 148PRODUCT_VENDOR_PROPERTIES += drm.service.enabled=true 149 150# Call deleteAllKeys if vold detects a factory reset 151PRODUCT_VENDOR_PROPERTIES += ro.crypto.metadata_init_delete_all_keys.enabled=true 152 153# 154# Packages for various GCE-specific utilities 155# 156PRODUCT_PACKAGES += \ 157 CuttlefishService \ 158 socket_vsock_proxy \ 159 tombstone_transmit \ 160 tombstone_producer \ 161 suspend_blocker \ 162 metrics_helper \ 163 snapshot_hook_post_resume \ 164 snapshot_hook_pre_suspend 165 166$(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) 167$(call soong_config_append,cvd,grub_config,grub.cfg) 168 169# 170# Packages for AOSP-available stuff we use from the framework 171# 172PRODUCT_PACKAGES += \ 173 e2fsck \ 174 ip \ 175 sleep \ 176 tcpdump \ 177 wificond \ 178 179# 180# Package for AOSP QNS 181# 182PRODUCT_PACKAGES += \ 183 QualifiedNetworksService 184 185# 186# Package for AOSP GBA 187# 188PRODUCT_PACKAGES += \ 189 GbaService 190 191# 192# Packages for testing 193# 194PRODUCT_PACKAGES += \ 195 aidl_lazy_test_server \ 196 aidl_lazy_cb_test_server \ 197 198# Runtime Resource Overlays 199PRODUCT_PACKAGES += \ 200 cuttlefish_overlay_connectivity \ 201 cuttlefish_overlay_frameworks_base_core \ 202 cuttlefish_overlay_nfc \ 203 cuttlefish_overlay_settings_provider \ 204 cuttlefish_overlay_uwb \ 205 206# 207# Satellite vendor service for CF 208# 209PRODUCT_PACKAGES += CFSatelliteService 210 211# PRODUCT_AAPT_CONFIG and PRODUCT_AAPT_PREF_CONFIG are intentionally not set to 212# pick up every density resources. 213 214# 215# Common manifest for all targets 216# 217 218ifeq ($(RELEASE_AIDL_USE_UNFROZEN),true) 219PRODUCT_SHIPPING_API_LEVEL := 36 220LOCAL_DEVICE_FCM_MANIFEST_FILE ?= device/google/cuttlefish/shared/config/manifest.xml 221else 222PRODUCT_SHIPPING_API_LEVEL := 35 223LOCAL_DEVICE_FCM_MANIFEST_FILE ?= device/google/cuttlefish/shared/config/previous_manifest.xml 224endif 225DEVICE_MANIFEST_FILE += $(LOCAL_DEVICE_FCM_MANIFEST_FILE) 226 227PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true 228 229# 230# General files 231# 232 233PRODUCT_COPY_FILES += \ 234 device/google/cuttlefish/shared/config/init.product.rc:$(TARGET_COPY_OUT_PRODUCT)/etc/init/init.rc \ 235 device/google/cuttlefish/shared/config/init.vendor.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.cutf_cvm.rc \ 236 device/google/cuttlefish/shared/config/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml \ 237 device/google/cuttlefish/shared/config/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml \ 238 device/google/cuttlefish/shared/config/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \ 239 device/google/cuttlefish/shared/config/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml \ 240 device/google/cuttlefish/shared/config/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_vendor.xml \ 241 device/google/cuttlefish/shared/config/seriallogging.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/seriallogging.rc \ 242 device/google/cuttlefish/shared/config/ueventd.rc:$(TARGET_COPY_OUT_VENDOR)/etc/ueventd.rc \ 243 device/google/cuttlefish/shared/permissions/privapp-permissions-cuttlefish.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/privapp-permissions-cuttlefish.xml \ 244 frameworks/av/media/libeffects/data/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \ 245 frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \ 246 frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \ 247 frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \ 248 frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \ 249 frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \ 250 frameworks/av/services/audiopolicy/config/surround_sound_configuration_5_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/surround_sound_configuration_5_0.xml \ 251 frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml \ 252 frameworks/native/data/etc/android.hardware.ethernet.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.ethernet.xml \ 253 frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml \ 254 frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \ 255 frameworks/native/data/etc/android.hardware.uwb.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.uwb.xml \ 256 frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml \ 257 frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml \ 258 frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \ 259 frameworks/native/data/etc/android.software.credentials.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.credentials.xml \ 260 frameworks/native/data/etc/android.software.ipsec_tunnels.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.ipsec_tunnels.xml \ 261 frameworks/native/data/etc/android.software.verified_boot.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.verified_boot.xml \ 262 263# 264# Device input config 265# Install .kcm/.kl/.idc files via input.config apex 266# 267PRODUCT_PACKAGES += com.google.cf.input.config 268 269PRODUCT_PACKAGES += \ 270 fstab.cf.f2fs.hctr2 \ 271 fstab.cf.f2fs.hctr2.vendor_ramdisk \ 272 fstab.cf.f2fs.cts \ 273 fstab.cf.f2fs.cts.vendor_ramdisk \ 274 fstab.cf.ext4.hctr2 \ 275 fstab.cf.ext4.hctr2.vendor_ramdisk \ 276 fstab.cf.ext4.cts \ 277 fstab.cf.ext4.cts.vendor_ramdisk \ 278 279# Packages for HAL implementations 280 281# TODO(b/218588089) remove this once cuttlefish can drop HIDL. 282# This adds hwservicemanager and the allocator service to the device. 283PRODUCT_PACKAGES += \ 284 hwservicemanager \ 285 android.hidl.allocator@1.0-service 286 287# 288# Weaver aidl HAL 289# 290# TODO(b/262418065) Add a real weaver implementation 291 292 293# 294# Authsecret AIDL HAL 295# 296PRODUCT_PACKAGES += \ 297 com.android.hardware.authsecret 298 299ifndef LOCAL_AUDIO_PRODUCT_PACKAGE 300# 301# Still use HIDL Audio HAL on 'next' 302# 303LOCAL_AUDIO_PRODUCT_PACKAGE += \ 304 android.hardware.audio.parameter_parser.example_service \ 305 com.android.hardware.audio 306PRODUCT_SYSTEM_EXT_PROPERTIES += \ 307 ro.audio.ihaladaptervendorextension_enabled=true 308endif 309 310ifndef LOCAL_AUDIO_PRODUCT_COPY_FILES 311LOCAL_AUDIO_PRODUCT_COPY_FILES := \ 312 device/google/cuttlefish/shared/config/audio/policy/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \ 313 device/google/cuttlefish/shared/config/audio/policy/primary_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/primary_audio_policy_configuration.xml \ 314 frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \ 315 frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \ 316 frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml 317LOCAL_AUDIO_PRODUCT_COPY_FILES += \ 318 hardware/interfaces/audio/aidl/default/audio_effects_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects_config.xml 319endif 320 321PRODUCT_PACKAGES += $(LOCAL_AUDIO_PRODUCT_PACKAGE) 322PRODUCT_COPY_FILES += $(LOCAL_AUDIO_PRODUCT_COPY_FILES) 323DEVICE_PACKAGE_OVERLAYS += $(LOCAL_AUDIO_DEVICE_PACKAGE_OVERLAYS) 324 325# 326# Contexthub HAL 327# 328LOCAL_CONTEXTHUB_PRODUCT_PACKAGE ?= \ 329 com.android.hardware.contexthub 330PRODUCT_PACKAGES += $(LOCAL_CONTEXTHUB_PRODUCT_PACKAGE) 331 332# 333# Drm HAL 334# 335ifeq ($(TARGET_USE_LAZY_CLEARKEY),true) 336PRODUCT_PACKAGES += \ 337 com.android.hardware.drm.clearkey.lazy 338else 339PRODUCT_PACKAGES += \ 340 android.hardware.drm@latest-service.clearkey 341endif 342 343LOCAL_ENABLE_WIDEVINE ?= true 344ifeq ($(LOCAL_ENABLE_WIDEVINE),true) 345-include vendor/widevine/libwvdrmengine/apex/device/device.mk 346endif 347 348# 349# Confirmation UI HAL 350# 351ifeq ($(LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE),) 352 LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE := com.google.cf.confirmationui 353endif 354PRODUCT_PACKAGES += $(LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE) 355 356# 357# Dumpstate HAL 358# 359ifeq ($(LOCAL_DUMPSTATE_PRODUCT_PACKAGE),) 360 LOCAL_DUMPSTATE_PRODUCT_PACKAGE += com.android.hardware.dumpstate 361endif 362PRODUCT_PACKAGES += $(LOCAL_DUMPSTATE_PRODUCT_PACKAGE) 363 364# 365# Gatekeeper 366# 367PRODUCT_PACKAGES += \ 368 com.android.hardware.gatekeeper.cf_remote \ 369 com.android.hardware.gatekeeper.nonsecure \ 370 371# 372# Oemlock 373# 374LOCAL_ENABLE_OEMLOCK ?= true 375ifeq ($(LOCAL_ENABLE_OEMLOCK),true) 376ifeq ($(LOCAL_OEMLOCK_PRODUCT_PACKAGE),) 377 LOCAL_OEMLOCK_PRODUCT_PACKAGE := com.google.cf.oemlock 378endif 379PRODUCT_PACKAGES += \ 380 $(LOCAL_OEMLOCK_PRODUCT_PACKAGE) 381 382PRODUCT_VENDOR_PROPERTIES += ro.oem_unlock_supported=1 383endif 384 385# Health 386ifeq ($(LOCAL_HEALTH_PRODUCT_PACKAGE),) 387 LOCAL_HEALTH_PRODUCT_PACKAGE := \ 388 com.google.cf.health \ 389 android.hardware.health-service.cuttlefish_recovery \ 390 391endif 392PRODUCT_PACKAGES += $(LOCAL_HEALTH_PRODUCT_PACKAGE) 393 394# Health Storage 395PRODUCT_PACKAGES += \ 396 com.google.cf.health.storage 397 398PRODUCT_PACKAGES += \ 399 com.android.hardware.input.processor 400 401# Netlink Interceptor HAL 402PRODUCT_PACKAGES += \ 403 com.android.hardware.net.nlinterceptor 404 405# 406# Lights 407# 408LOCAL_ENABLE_LIGHT ?= true 409ifeq ($(LOCAL_ENABLE_LIGHT),true) 410PRODUCT_PACKAGES += \ 411 com.google.cf.light \ 412 413endif 414 415# 416# Trusty VM for Keymint and Gatekeeper HAL 417# 418ifeq ($(RELEASE_AVF_ENABLE_EARLY_VM),true) 419 TRUSTY_KEYMINT_IMPL ?= rust 420 TRUSTY_SYSTEM_VM ?= nonsecure 421endif 422ifeq ($(TRUSTY_SYSTEM_VM),nonsecure) 423 $(call inherit-product, system/core/trusty/keymint/trusty-keymint.mk) 424 $(call inherit-product, system/core/trusty/trusty-storage-cf.mk) 425 PRODUCT_PACKAGES += \ 426 lk_trusty.elf \ 427 trusty_security_vm_launcher \ 428 early_vms.xml \ 429 cf-trusty_security_vm_launcher.rc \ 430 lk_trusty.elf \ 431 trusty-ut-ctrl.system \ 432 433endif 434 435# 436# KeyMint HAL 437# 438PRODUCT_PACKAGES += \ 439 com.android.hardware.keymint.rust_cf_remote \ 440 com.android.hardware.keymint.rust_nonsecure \ 441 com.android.hardware.keymint.rust_cf_guest_trusty_nonsecure \ 442 443# Indicate that KeyMint includes support for the ATTEST_KEY key purpose. 444PRODUCT_COPY_FILES += \ 445 frameworks/native/data/etc/android.hardware.keystore.app_attest_key.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.keystore.app_attest_key.xml 446# Indicate that KeyMint includes (emulated) support for device ID attestation. 447PRODUCT_COPY_FILES += \ 448 frameworks/native/data/etc/android.software.device_id_attestation.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.device_id_attestation.xml 449 450# 451# Non-secure implementation of AuthGraph HAL for compliance. 452# 453PRODUCT_PACKAGES += \ 454 com.android.hardware.security.authgraph 455 456# 457# Non-secure implementation of Secretkeeper HAL for compliance. 458# 459PRODUCT_PACKAGES += \ 460 com.android.hardware.security.secretkeeper 461 462# 463# Power and PowerStats HALs 464# 465PRODUCT_PACKAGES += com.android.hardware.power 466 467# 468# Tetheroffload HAL 469# 470PRODUCT_PACKAGES += \ 471 com.android.hardware.tetheroffload 472 473# 474# Thermal HAL 475# 476LOCAL_THERMAL_HAL_PRODUCT_PACKAGE ?= com.android.hardware.thermal 477PRODUCT_PACKAGES += $(LOCAL_THERMAL_HAL_PRODUCT_PACKAGE) 478 479# 480# NeuralNetworks HAL 481# 482PRODUCT_PACKAGES += \ 483 com.android.hardware.neuralnetworks 484 485# USB 486PRODUCT_PACKAGES += \ 487 com.android.hardware.usb 488 489# BootControl HAL 490PRODUCT_PACKAGES += \ 491 com.android.hardware.boot \ 492 android.hardware.boot-service.default_recovery 493 494 495# Memtrack HAL 496PRODUCT_PACKAGES += \ 497 com.android.hardware.memtrack 498 499# Fastboot HAL & fastbootd 500PRODUCT_PACKAGES += \ 501 android.hardware.fastboot@1.1-impl-mock \ 502 fastbootd 503 504# Recovery mode 505ifneq ($(TARGET_NO_RECOVERY),true) 506 507PRODUCT_COPY_FILES += \ 508 device/google/cuttlefish/shared/config/init.recovery.rc:$(TARGET_COPY_OUT_RECOVERY)/root/init.recovery.cutf_cvm.rc \ 509 device/google/cuttlefish/shared/config/cgroups.json:$(TARGET_COPY_OUT_RECOVERY)/root/vendor/etc/cgroups.json \ 510 device/google/cuttlefish/shared/config/ueventd.rc:$(TARGET_COPY_OUT_RECOVERY)/root/ueventd.cutf_cvm.rc \ 511 512PRODUCT_PACKAGES += \ 513 update_engine_sideload 514 515endif 516 517ifdef TARGET_DEDICATED_RECOVERY 518PRODUCT_BUILD_RECOVERY_IMAGE := true 519PRODUCT_PACKAGES += linker.vendor_ramdisk shell_and_utilities_vendor_ramdisk 520else 521PRODUCT_PACKAGES += linker.recovery shell_and_utilities_recovery 522endif 523 524# wifi 525# Add com.android.hardware.wifi for android.hardware.wifi-service 526PRODUCT_PACKAGES += com.android.hardware.wifi 527# Add com.google.cf.wifi and com.google.cf.wpa_supplicant for hostapd and wpa_supplicant 528PRODUCT_PACKAGES += com.google.cf.wifi 529PRODUCT_PACKAGES += com.google.cf.wpa_supplicant 530$(call add_soong_config_namespace, wpa_supplicant) 531$(call add_soong_config_var_value, wpa_supplicant, platform_version, $(PLATFORM_VERSION)) 532$(call add_soong_config_var_value, wpa_supplicant, nl80211_driver, CONFIG_DRIVER_NL80211_QCA) 533 534# VirtWifi interface configuration 535ifeq ($(DEVICE_VIRTWIFI_PORT),) 536 DEVICE_VIRTWIFI_PORT := eth2 537endif 538PRODUCT_VENDOR_PROPERTIES += ro.vendor.virtwifi.port=${DEVICE_VIRTWIFI_PORT} 539 540# Wifi Runtime Resource Overlay 541PRODUCT_PACKAGES += \ 542 CuttlefishTetheringOverlay \ 543 CuttlefishWifiOverlay 544 545ifeq ($(PRODUCT_ENFORCE_MAC80211_HWSIM),true) 546PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=mac80211_hwsim_virtio 547$(call soong_config_append,cvdhost,enforce_mac80211_hwsim,true) 548else 549PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=virt_wifi 550endif 551 552# UWB HAL 553PRODUCT_PACKAGES += com.android.hardware.uwb 554PRODUCT_VENDOR_PROPERTIES += ro.vendor.uwb.dev=/dev/hvc9 555 556# Host packages to install 557PRODUCT_HOST_PACKAGES += socket_vsock_proxy 558 559#for Confirmation UI 560PRODUCT_SOONG_NAMESPACES += vendor/google_devices/common/proprietary/confirmatioui_hal 561 562# Need this so that the application's loop on reading input can be synchronized 563# with HW VSYNC 564PRODUCT_VENDOR_PROPERTIES += \ 565 ro.surface_flinger.running_without_sync_framework=true 566 567# Enable GPU-intensive background blur support on Cuttlefish when requested by apps 568PRODUCT_VENDOR_PROPERTIES += \ 569 ro.surface_flinger.supports_background_blur=1 570 571# Set Game Default Frame Rate 572# See b/286084594 573PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \ 574 ro.surface_flinger.game_default_frame_rate_override=60 575 576# Disable GPU-intensive background blur for widget picker 577PRODUCT_SYSTEM_PROPERTIES += \ 578 ro.launcher.depth.widget=0 579 580# Start fingerprint virtual HAL process 581PRODUCT_VENDOR_PROPERTIES += ro.vendor.fingerprint_virtual_hal_start=true 582 583# Vendor Dlkm Locader 584PRODUCT_PACKAGES += \ 585 dlkm_loader 586 587# CAS AIDL HAL 588PRODUCT_PACKAGES += \ 589 com.android.hardware.cas 590 591PRODUCT_COPY_FILES += \ 592 device/google/cuttlefish/shared/config/pci.ids:$(TARGET_COPY_OUT_VENDOR)/pci.ids 593 594# Thread Network AIDL HAL and Demo App 595PRODUCT_PACKAGES += \ 596 com.android.hardware.threadnetwork \ 597 ThreadNetworkDemoApp 598 599PRODUCT_CHECK_VENDOR_SEAPP_VIOLATIONS := true 600 601PRODUCT_CHECK_DEV_TYPE_VIOLATIONS := true 602 603TARGET_BOARD_FASTBOOT_INFO_FILE = device/google/cuttlefish/shared/fastboot-info.txt 604