raspberry-vanilla / android_local_manifest

138 stars 54 forks source link

switching build to automotive #123

Closed rania-taabouri closed 1 month ago

rania-taabouri commented 1 month ago

i am trying to switch build to automotive by creating a new lunch choice rpi4_car i tried to combine between rpi4.mk and car.mk to create a rpi4_car.mk withing the arpi/rpi4 folder i created a device.mk file : `

$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit_only.mk)

PRODUCT_NAME := rpi4 PRODUCT_DEVICE := rpi4 PRODUCT_BRAND := arpi PRODUCT_MANUFACTURER := ARPi PRODUCT_MODEL := Raspberry Pi 4

include frameworks/native/build/tablet-10in-xhdpi-2048-dalvik-heap.mk

PRODUCT_PROPERTY_OVERRIDES += \ debug.drm.mode.force=800x480 \ gralloc.drm.kms=/dev/dri/card0 \ ro.opengles.version=196609 \ ro.hardware.vulkan=broadcom \ debug.stagefright.c2-poolmask=0x350000 \ ro.vendor.v4l2_codec2.decode_concurrent_instances=4 \ wifi.interface=wlan0 \ ro.rfkilldisabled=1

PRODUCT_SOONG_NAMESPACES += external/v4l2_codec2

PRODUCT_PACKAGES += \ RpFrameworkOverlay

PRODUCT_PACKAGES += \ gralloc.rpi4 \ vulkan.broadcom \ memtrack.rpi4 \ audio.primary.rpi4 \ audio.usb.default \ audio.r_submix.default \ libc2plugin_store \ wificond \ wifilogd \ wpa_supplicant \ wpa_supplicant.conf \ hostapd \ libbt-vendor

PRODUCT_PACKAGES += \ libEGL_mesa \ libGLESv1_CM_mesa \ libGLESv2_mesa \ libgallium_dri \ libglapi

PRODUCT_PACKAGES += \ android.hardware.graphics.allocator@2.0-service.rpi4 \ android.hardware.graphics.mapper@2.0-impl.rpi4 \ android.hardware.graphics.composer@2.1-service.rpi4 \ android.hardware.camera.provider@2.5-external-service \ android.hardware.audio@4.0-impl \ android.hardware.audio.effect@4.0-impl \ android.hardware.audio.service \ android.hardware.keymaster@3.0-impl \ android.hardware.keymaster@3.0-service \ android.hardware.gatekeeper@1.0-service.software \ android.hardware.memtrack@1.0-impl \ android.hardware.memtrack@1.0-service \ android.hardware.health@2.1-service \ android.hardware.health@2.1-impl \ android.hardware.health.storage@1.0-service \ android.hardware.wifi@1.0-service \ android.hardware.bluetooth@1.0-service \ android.hardware.bluetooth@1.0-impl \ android.hardware.configstore@1.1-service \ android.hardware.media.c2@1.0-service-v4l2 \ vndservicemanager

system configurations

PRODUCT_COPY_FILES := \ hardware/broadcom/wlan/bcmdhd/config/wpa_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf \ frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \ frameworks/native/data/etc/android.hardware.vulkan.version-1_0_3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \ frameworks/native/data/etc/android.hardware.ethernet.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.ethernet.xml \ frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \ frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \ frameworks/native/data/etc/android.hardware.bluetooth.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth.xml \ frameworks/native/data/etc/android.hardware.bluetooth_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth_le.xml \ frameworks/native/data/etc/android.hardware.camera.external.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.external.xml \ $(LOCAL_PATH)/etc/external_camera_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/external_camera_config.xml \ $(LOCAL_PATH)/init.usb.rc:root/init.usb.rc \ $(LOCAL_PATH)/init.rpi4.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.rpi4.rc \ $(LOCAL_PATH)/init.rpi4.usb.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.rpi4.usb.rc \ $(LOCAL_PATH)/ueventd.rc:$(TARGET_COPY_OUT_VENDOR)/etc/ueventd.rc \ $(LOCAL_PATH)/fstab.rpi4:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.rpi4 \ $(LOCAL_PATH)/fstab.rpi4:$(TARGET_COPY_OUT_RAMDISK)/fstab.rpi4 \ $(LOCAL_PATH)/Generic.kl:$(TARGET_COPY_OUT_VENDOR)/usr/keylayout/Generic.kl \ $(LOCAL_PATH)/firmware/brcm/brcmfmac43455-sdio.bin:root/lib/firmware/brcm/brcmfmac43455-sdio.bin \ $(LOCAL_PATH)/firmware/brcm/brcmfmac43455-sdio.bin:$(TARGET_COPY_OUT_RAMDISK)/lib/firmware/brcm/brcmfmac43455-sdio.bin \ $(LOCAL_PATH)/firmware/brcm/brcmfmac43455-sdio.clm_blob:root/lib/firmware/brcm/brcmfmac43455-sdio.clm_blob \ $(LOCAL_PATH)/firmware/brcm/brcmfmac43455-sdio.clm_blob:$(TARGET_COPY_OUT_RAMDISK)/lib/firmware/brcm/brcmfmac43455-sdio.clm_blob \ $(LOCAL_PATH)/firmware/brcm/brcmfmac43455-sdio.txt:root/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt \ $(LOCAL_PATH)/firmware/brcm/brcmfmac43455-sdio.txt:$(TARGET_COPY_OUT_RAMDISK)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt \ $(LOCAL_PATH)/firmware/brcm/brcmfmac43456-sdio.bin:root/lib/firmware/brcm/brcmfmac43456-sdio.bin \ $(LOCAL_PATH)/firmware/brcm/brcmfmac43456-sdio.bin:$(TARGET_COPY_OUT_RAMDISK)/lib/firmware/brcm/brcmfmac43456-sdio.bin \ $(LOCAL_PATH)/firmware/brcm/brcmfmac43456-sdio.clm_blob:root/lib/firmware/brcm/brcmfmac43456-sdio.clm_blob \ $(LOCAL_PATH)/firmware/brcm/brcmfmac43456-sdio.clm_blob:$(TARGET_COPY_OUT_RAMDISK)/lib/firmware/brcm/brcmfmac43456-sdio.clm_blob \ $(LOCAL_PATH)/firmware/brcm/brcmfmac43456-sdio.txt:root/lib/firmware/brcm/brcmfmac43456-sdio.raspberrypi,400.txt \ $(LOCAL_PATH)/firmware/brcm/brcmfmac43456-sdio.txt:$(TARGET_COPY_OUT_RAMDISK)/lib/firmware/brcm/brcmfmac43456-sdio.raspberrypi,400.txt \ $(LOCAL_PATH)/firmware/brcm/BCM4345C0.hcd:root/lib/firmware/brcm/BCM4345C0.hcd \ $(LOCAL_PATH)/firmware/brcm/BCM4345C5.hcd:root/lib/firmware/brcm/BCM4345C5.hcd \ $(LOCAL_PATH)/bluetooth/bt_vendor.conf:system/etc/bluetooth/bt_vendor.conf \ $(PRODUCT_COPY_FILES)

media configurations

PRODUCT_COPY_FILES += \ device/generic/goldfish/camera/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles.xml \ $(LOCAL_PATH)/etc/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \ frameworks/av/media/libeffects/data/audio_effects.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.conf \ frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \ frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml

PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/drm/droid_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/droid_config.xml

PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/ko/videobuf2-v4l2.ko:$(TARGET_COPY_OUT_VENDOR)/lib/modules/videobuf2-v4l2.ko \ $(LOCAL_PATH)/ko/videobuf2-common.ko:$(TARGET_COPY_OUT_VENDOR)/lib/modules/videobuf2-common.ko \ $(LOCAL_PATH)/ko/videobuf2-vmalloc.ko:$(TARGET_COPY_OUT_VENDOR)/lib/modules/videobuf2-vmalloc.ko \ $(LOCAL_PATH)/ko/videobuf2-memops.ko:$(TARGET_COPY_OUT_VENDOR)/lib/modules/videobuf2-memops.ko

bootanimation

PRODUCT_COPY_FILES += \ device/arpi/rpi4/bootanimation/bootanimation.zip:system/media/bootanimation.zip`

i also created an rpi4_car.mk:

`

PRODUCT_AAPT_PREF_CONFIG := hdpi
PRODUCT_CHARACTERISTICS := automotive

$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)
$(call inherit-product, packages/services/Car/car_product/build/car.mk)

TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-a
TARGET_SUPPORTS_64_BIT_APPS := true

PRODUCT_NAME := rpi4_car
PRODUCT_DEVICE := rpi4
PRODUCT_BRAND := arpi
PRODUCT_MANUFACTURER := ARPi
PRODUCT_MODEL := Raspberry Pi 4 Automotive

PRODUCT_PACKAGES += \
    DeskClock \
    RpLauncher

PRODUCT_VENDOR_PROPERTIES += \
    bluetooth.device.class_of_device=38,4,8 \
    bluetooth.profile.a2dp.source.enabled=false \
    bluetooth.profile.asha.central.enabled=false \
    bluetooth.profile.bap.broadcast.assist.enabled=false \
    bluetooth.profile.bap.unicast.client.enabled=false \
    bluetooth.profile.bas.client.enabled=false \
    bluetooth.profile.ccp.server.enabled=false \
    bluetooth.profile.csip.set_coordinator.enabled=false \
    bluetooth.profile.hap.client.enabled=false \
    bluetooth.profile.hfp.ag.enabled=false \
    bluetooth.profile.hid.device.enabled=false \
    bluetooth.profile.hid.host.enabled=false \
    bluetooth.profile.map.client.enabled=false \
    bluetooth.profile.map.server.enabled=false \
    bluetooth.profile.mcp.server.enabled=false \
    bluetooth.profile.opp.enabled=false \
    bluetooth.profile.pbap.server.enabled=false \
    bluetooth.profile.sap.server.enabled=false \
    bluetooth.profile.vcp.controller.enabled=false

PRODUCT_PACKAGES += \
    android.hardware.broadcastradio-service.default

PRODUCT_COPY_FILES += \
    frameworks/native/data/etc/android.hardware.broadcastradio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.broadcastradio.xml

ENABLE_CAMERA_SERVICE := true

ENABLE_CAREVSSERVICE_SAMPLE := true
ENABLE_EVS_SAMPLE := true
ENABLE_EVS_SERVICE := true
ENABLE_REAR_VIEW_CAMERA_SAMPLE := true

PRODUCT_COPY_FILES += \
    frameworks/native/data/etc/android.software.activities_on_secondary_displays.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.activities_on_secondary_displays.xml \
    frameworks/native/data/etc/car_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/car_core_hardware.xml

# Vehicle HAL configuration
PRODUCT_PACKAGES += \
    android.hardware.automotive.vehicle@2.0-default-service

   `

and made the necessary changes in AndroidProduct.mk file

the rpi4_car-eng lunch choice was successfully added but i am facing a lot of build issues

KonstaT commented 1 month ago

Raspberry Vanilla project already supports Android Automotive build target. There's no need to add anything. Please see the build instructions (though https://github.com/raspberry-vanilla/android_local_manifest/issues/83 is something to consider).

rania-taabouri commented 1 month ago

i know sir i just want to learn how to create a new one myself it's my first time with aosp i didn't know about vanilla project so i worked with another repo that doesn't have an automotive build only tv one that's why i am tying to do it myself and it's a chance to learn i really appreciate your help