У меня большие трудности с этапом компиляции CyanogenMod 11 (Android 4.4) для неподдерживаемого устройства на платформе MSM7x27A / Snapdragon S1. Когда я пытаюсь собрать libstagefright, я сталкиваюсь с неопределенной ошибкой ссылки на функции в android :: LPAPlayer :: *, включая конструктор. Я получаю ошибку:
Copying: /home/dyngar-f/android/android/out/target/common/obj/JAVA_LIBRARIES/mms-common_intermediates/noproguard.classes.jar
frameworks/av/media/libstagefright/AwesomePlayer.cpp:1282: error: undefined reference to 'android::LPAPlayer::LPAPlayer(android::sp<android::MediaPlayerBase::AudioSink> const&, bool&, android::AwesomePlayer*)'
frameworks/av/media/libstagefright/AwesomePlayer.cpp:1306: error: undefined reference to 'android::LPAPlayer::mObjectsAlive'
frameworks/av/media/libstagefright/AwesomePlayer.cpp:1882: error: undefined reference to 'android::LPAPlayer::mObjectsAlive'
collect2: error: ld returned 1 exit statusbuild/core/shared_library.mk:81: recipe for target '/home/dyngar-f/android/android/out/target/product/schS738c/obj/SHARED_LIBRARIES/libstagefright_intermediates/LINKED/libstagefright.so' failed
make: *** [/home/dyngar-f/android/android/out/target/product/schS738c/obj/SHARED_LIBRARIES/libstagefright_intermediates/LINKED/libstagefright.so] Error 1make: *** Waiting for unfinished jobs....
Я искал все выше и ниже, и я не нашел упоминания об этой ошибке, которая приводит меня к решению этой проблемы, и я сам не нашел решения. Вот ссылки на эту проблему, которую я нашел от других:
Суть от CMartinBaughman
Упоминается в теме XDA на этой странице также есть ответ, который, кажется, не работает.
Кто-нибудь может подсказать мне решение этой проблемы?
Ошибка исходит от компоновщика, который не может найти ссылку на LPAPlayer
который на самом деле является настройкой в CyanogenMod
источники. Из последнего дерева, Android.mk
за libstagefright
является не включая LPAPlayer.cpp
для всех платформ.
Чтобы решить проблему, попробуйте добавить следующие файлы в Android.mk
между строками 114-117
#New lines included
ifeq ($(call is-chipset-in-board-platform,msm7x27),true)
LOCAL_SRC_FILES += LPAPlayer.cpp
LOCAL_CFLAGS += -DLEGACY_LPA -DUSE_LPA_MODE
endif
ifeq ($(call is-chipset-in-board-platform,msm7x30),true)
LOCAL_SRC_FILES += LPAPlayer.cpp
LOCAL_CFLAGS += -DLEGACY_LPA -DUSE_LPA_MODE
endif
Возможно, необходимо изменить имя платформы, чтобы оно соответствовало фактическому названию (см. BoardConfig.mk
).