마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ndk library를 관리하고 싶습니다.

0 추천
ndk로 lib파일 .a를 만들었습니다.

그런데 lib파일이 여러개라서 새로 하나의 lib파일을 만들고 싶은데요..

A.a + B.a => C.a

이렇게 해서 A.a와 B.a가 없이 C.a파일만 사용할 수 있었으면 합니다.

Android.mk를 어떻게 만들어야 할까요?
깊은별빛 (120 포인트) 님이 2014년 5월 22일 질문

1개의 답변

0 추천
대략 아래와 같이 하시면 될 겁니다.

include $(CLEAR_VARS)
LOCAL_MODULE := A
LOCAL_SRC_FILES := A.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := B
LOCAL_SRC_FILES := B.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_STATIC_LIBRARIES := A B
LOCAL_MODULE := C

include $(BUILD_STATIC_LIBRARY)
사악미소 (65,330 포인트) 님이 2014년 5월 23일 답변
답변 감사합니다. 그런데 좀 더 살펴봐 주시면 안될까요?
현재 A.a의 크기가 100KB, B.a의 크기가 200KB정도입니다.
그럼 C.a는 300KB가 되어야 할 것 같은데 알려주신 내용으로는 1KB가 생깁니다. 뭐가 잘못된 걸까요?
ndk library를 합치는 방법에 관해 문의드립니다.
글세요.. 혹시나 해서 검색 해 봤는데.
http://stackoverflow.com/questions/7672415/android-ndk-using-prebuilt-static-libraries-that-links-with-each-other 글이 있는게
Make 파일 형식은 맞는 듯 합니다만.
 라이브러리의 사이즈의 경우 공통 코드를 제거해야하니 . 300kb는 안되더라도 200kb는 되어야 할 듯 한데.. 이상하네요..
상호 의존성이 있다면,  링크 해드린 것처럼 A, B 순서를 바꿔서 해결 될 듯 하고, 심볼을 strip 시키는 부분이 있다면 링크 해드린 것처럼 C 빌드시 main.cpp 같은 파일이 있듯이. A,B 심볼 중 사용하는 함수를 부르는 파일도 같이 컴파일 해보세요.

혹은 http://stackoverflow.com/questions/18983037/include-prebuilt-static-library 방식도 가능한 듯 합니다.
...