首页 > 解决方案 > 我想在 android 中将音频服务器(/frameworks/av/media/audioserver)构建为 64 位,但无法启动

问题描述

我想将audioserver(/frameworks/av/media/audioserver) 构建为64位,并参考Android.mk (/frameworks/av/media/audioserver/Android.mk) 中的说明,在其中添加AUDIOSERVER_MULTILIB :=64 device.mk,但是无法启动,查看日志,发现如下错误。01-20 09:44:31.637 2581 2581 F 链接器:无法链接可执行文件“/system/bin/audioserver”:“/system/lib64/libaudioflinger.so”中不支持 ELF TLS DT 条目

console:/system/bin # file audioserver audioserver: ELF shared object, 64-bit LSB arm64, dynamic (/system/bin/linker64), for Android 28, BuildID=01599, stripped

控制台:/system/lib64 # 文件 libaudioflinger.so libaudioflinger.so:ELF 共享对象,64 位 LSB arm64,适用于 Android 28,BuildID=fd41f,已剥离

/frameworks/av/media/audioserver/Android.mk

# If AUDIOSERVER_MULTILIB in device.mk is non-empty then it is used to control
# the LOCAL_MULTILIB for all audioserver exclusive libraries.
# This is relevant for 64 bit architectures where either or both
# 32 and 64 bit libraries may be built.
#
# AUDIOSERVER_MULTILIB may be set as follows:
#   32      to build 32 bit audioserver libraries and 32 bit audioserver.
#   64      to build 64 bit audioserver libraries and 64 bit audioserver.
#   both    to build both 32 bit and 64 bit libraries,
#           and use primary target architecture (32 or 64) for audioserver.
#   first   to build libraries and audioserver for the primary target architecture only.
#   <empty> to build both 32 and 64 bit libraries and 32 bit audioserver.

音频服务器应该可以正常工作

标签: androidc++candroid.mk

解决方案


这个问题在谷歌邮件列表“android-porting”上得到了回答。我只是引用答案。 https://groups.google.com/forum/#!topic/android-porting/lK7dDeJT0k4

“截至目前,Android 的 AOSP 版本尚未正式支持 64 位音频服务器。我们正在考虑在未来版本中为音频服务器添加 64 位选项,但我无法告诉您何时会发生这种情况。即使那样,它也可能仅限于能够支持它的平台(例如,由于对各种库的依赖等)。” (格伦·卡斯滕,2019 年 1 月 25 日)


推荐阅读