2015-01-27 5 views
0

MSM7x27A/Snapdragon S1 플랫폼 기반의 지원되지 않는 장치에 대해 CyanogenMod 11 (Android 4.4)을 컴파일하는 단계에 큰 어려움을 겪고 있습니다. libstagefright를 빌드하려고하면 생성자를 포함하여 안드로이드 :: LPAPlayer :: *의 함수에 정의되지 않은 참조 오류가 발생합니다. 내가 오류는 다음과 같습니다정의되지 않은 참조 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.... 

나는 높고 낮은 검색하고 나는이 문제에 대한 해결책 날 리드이 오류에 대한 언급을 발견하고, 나는 해결책에 자신을 도착하지 않았습니다.

Gist from CMartinBaughman
Mentioned in XDA Thread이 페이지에 작동하지 않는 대답도있다 : 여기에 내가 다른 사람에서 발견 한이 문제에 대한 참조입니다.

누구든지 나를이 문제에 대한 해결책으로 안내 할 수 있습니까?

+0

'Android'의 버전을 지정해주십시오. 컴파일 하시겠습니까? – Ganesh

+0

Android 4.4/KitKat에 해당하는 CyanogenMod 11을 컴파일하려고합니다. 버전을 지정하기 위해 수정 된 질문입니다. – cmotc

답변

0

실제로는 CyanogenMod 소스의 사용자 정의 인 LPAPlayer에 대한 참조를 찾을 수없는 링커에서 오류가 발생했습니다. 최신 트리에서 Android.mk for libstagefright은 모든 플랫폼에 대해LPAPlayer.cpp을 제외한 입니다.

이 문제를 해결하려면, 라인 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를 참조하십시오) 실제 이름에 맞게 수정해야 할 수도 있습니다 사이에 Android.mk에 다음 파일을 추가하여 보시기 바랍니다.

+0

지금까지 안내 해 주셔서 대단히 감사합니다. 나는 이것을 위해 당신을 업 그레 이드하기 위해이 계정에 15 평판이 없지만 지금까지 보아 왔던 가장 좋은 대답은 멀리 떨어져 있습니다. 나는 후속 질문이 있지만, 나는 CM 코드를 수정하여 원본을 포킹하고, 편집 한 다음 편집 내용을 패치로 표현하고이를 장치 트리의 "patches"폴더에 넣습니다. 건축 전에 적용되어야한다. 이 경우 패치 폴더에 추가 할 것이므로 이러한 수정 유형을 패키지화하는 더 좋고/더 널리 인정되는 방법이 있습니까? – cmotc

+0

나는 CM에서 더 많은 AOSP 녀석을 다루지 않았다. 전형적으로 패치를 git에 gerrit를 통해 병합합니다. 패치가 업스트림되도록 요구되면 해당 프로세스를 통해 패치를 제출합니다. 나는이 설정을 일찍 진행하지 않았기 때문에'patches' 폴더를 통해 빌드하는 것에 대해 아무런 생각을하지 못해 죄송합니다. – Ganesh

+1

업데이트 : 귀하의 도움으로 오늘 일하게되었습니다. 이제 CM11이 식료품 가게에서 가장 저렴한 전화로 작동하게되었습니다. 패치의 경우, 비슷한 장치 저장소에서 가져 왔습니다. 기본적으로 'repo sync'와 'make bacon'사이에는 CM11 코드에 미리 작성된 일부 패치가 적용되어 플랫폼 용으로 컴파일됩니다. 아마 최선의 방법은 아니지만 CM이 Snapdragon S1에 대한 지원을 유지하는 데 관심이 있다고 생각하지 않습니다. 내가 업스트림 할 수 있다면 그렇게 할거야. 장치 트리에 관심이 있다면 github 이름도 cmotc이고 장치는 schS738c입니다. 다시 한번 감사드립니다. – cmotc