2013-08-29 1 views
0

내 안드로이드 프로젝트에서 libjpeg.so를 사용하고 싶습니다.빌드 스크립트를 실행할 때 공유 라이브러리가 잘립니다.

공유 라이브러리가 사전 컴파일되었습니다. 내 프로젝트에서

빌드 스크립트 :

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := libjpeg 

LOCAL_SRC_FILES :=../lib1/libjpeg.so 

include $(PREBUILT_SHARED_LIBRARY) 

그러나 일을 내가 얻을.

소스 파일 LIB1/libjpeg.so - 1 290 798 바이트

하지만 파일 libs와/armeabi/libjpeg.so 구축 후 - 247 236 바이트

을 나는이 두 파일을 분석해야 - 두 번째는 단지

을 잘립니다 물론 난 "에서 java.lang.UnsatisfiedLinkError는"

왜 파일이 ​​잘립니다 있나요?

답변

1

문제는 NDK 빌드 시스템이 대상 폴더에 복사 할 때 모든 미리 만들어진 공유 라이브러리를 제거한다는 것입니다.

libjpeg를 공유 라이브러리로 사용해야하는 경우 게시 빌드 스크립트를 실행하여 원본 파일을 대상 폴더에 복사하여 제거한 파일을 덮어 쓰는 것이 좋습니다.

가장 좋은 해결책은 libjpeg.a 정적 라이브러리를 사전 빌드하는 것입니다 그리고 당신은 다음과 같이 제거 방지 할 수 있습니다 끄는 LOCAL_WHOLE_STATIC_LIBRARIES는 이러한 libs와에 대한 제거

include $(CLEAR_VARS) 
LOCAL_MODULE := libjpeg 
LOCAL_SRC_FILES :=../lib1/libjpeg.a 
include $(PREBUILT_STATIC_LIBRARY) 

... 

include $(CLEAR_VARS)  
LOCAL_MODULE := mylib 
LOCAL_SRC_FILES := mylib.cpp 
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../lib1/include/ 
LOCAL_WHOLE_STATIC_LIBRARIES := libjpeg 
... 
include $(BUILD_SHARED_LIBRARY) 

알 수 있습니다.