配置共享库

本文最后更新于 2024年5月6日 晚上

创建音频政策配置后,您必须将 HAL 实现打包到共享库中,并将其复制到相应位置:

  1. 创建一个 device/<company>/<device>/audio 目录以包含您的库的源文件。

  2. 创建一个Android.mk文件以构建共享库。确保 Makefile 包含以下行:

    1
    LOCAL_MODULE := audio.primary.<device>

    您的库必须命名为 audio.primary.<device>.so,以便 Android 可以正确加载库。此文件名的 primary 部分表示此共享库用于设备上的主要音频硬件。模块名称 audio.a2dp.<device>audio.usb.<device> 也可用于蓝牙和 USB 音频接口。以下是 Galaxy Nexus 音频硬件的 Android.mk 示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE := audio.primary.tuna
    LOCAL_MODULE_RELATIVE_PATH := hw
    LOCAL_SRC_FILES := audio_hw.c ril_interface.c
    LOCAL_C_INCLUDES += \
    external/tinyalsa/include \
    $(call include-path-for, audio-utils) \
    $(call include-path-for, audio-effects)
    LOCAL_SHARED_LIBRARIES := liblog libcutils libtinyalsa libaudioutils libdl
    LOCAL_MODULE_TAGS := optional

    include $(BUILD_SHARED_LIBRARY)
  3. 如果您的产品支持 Android CDD 指定的低延迟音频,请将相应的 XML 功能文件复制到您的产品中。例如,在您产品的device/<company>/<device>/device.mkMakefile 中:

    1
    2
    3
    4
    PRODUCT_COPY_FILES := ...

    PRODUCT_COPY_FILES += \
    frameworks/native/data/etc/android.hardware.audio.low_latency.xml:system/etc/permissions/android.hardware.audio.low_latency.xml \
  4. 将您之前创建的音频政策配置文件复制到您产品的device/<company>/<device>/device.mkMakefile 的system/etc/目录下。例如:

    1
    2
    PRODUCT_COPY_FILES += \
    device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
  5. 在您产品的device/<company>/<device>/device.mkMakefile 中声明您的产品所需的音频 HAL 的共享模块。例如,Galaxy Nexus 需要主要音频 HAL 模块和蓝牙音频 HAL 模块:

    1
    2
    3
    PRODUCT_PACKAGES += \
    audio.primary.tuna \
    audio.a2dp.default

配置共享库
https://www.shangyexin.com/2024/09/02/audio-implement-shared-library/
作者
Yasin
发布于
2024年9月2日
许可协议