2013-08-04 17 views
0

내 응용 프로그램이 네이티브에서 OpenCV의 카메라 라이브러리를 호출하는 네이티브 부분이 LIBS합니다.안드로이드 NDK 빌드

내 유일한 문제는 NDK 빌드가 libs 폴더에 필요한 libnative_camera * * .so를 자동으로 복사하지 않는다는 것입니다.

내가 수동으로 그들에게 내가 잘하지만 성가신 (약 3 시간 매 분마다 될 일) JNI의 코드의 변경을 할 때마다 복사해야합니다.

그리고 이것은 단지 native_camera 라이브러리와 발생, opencv_java가 자동으로 복사됩니다.

여기 내 Android.mk입니다 :

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
OPENCV_INSTALL_MODULES:=on 
OPENCV_CAMERA_MODULES:=on 
OPENCV_LIB_TYPE:=SHARED 


OPENCV_PATH := /home/tran/signs/OpenCV-2.4.5-android-sdk/sdk/native 

include $(OPENCV_PATH)/jni/OpenCV.mk 
LOCAL_SRC_FILES := cameramodule.cpp 
LOCAL_C_INCLUDES += $(LOCAL_PATH) 
LOCAL_LDLIBS  += -lGLESv1_CM -ldl -llog 
LOCAL_MODULE  := cameramodule 
include $(BUILD_SHARED_LIBRARY) 

가 어떻게 복사를하고 나를 위해 붙여 넣을 수 NDK 빌드를 알려 변경할 수 있습니다 ?

는 UPDATE :

나는 이클립스를 사용하여 내 응용 프로그램을 컴파일합니다. 다음은 프로젝트의 구조입니다 :

PROJECT 
    | 
    | 
    |---src 
    |---gen 
    |---res 
    |---jni 
    |---libs 
    |---lib (Someone suggest this folder but I can see it has no use) 
    |... files and temporary folders 

** UPDATE **

ndk-build 로그 :

rm -f project/libs/armeabi/lib*.so project/libs/armeabi-v7a/lib*.so project/libs/mips/lib*.so project/libs/x86/lib*.so 
rm -f project/libs/armeabi/gdbserver project/libs/armeabi-v7a/gdbserver project/libs/mips/gdbserver project/libs/x86/gdbserver 
rm -f project/libs/armeabi/gdb.setup project/libs/armeabi-v7a/gdb.setup project/libs/mips/gdb.setup project/libs/x86/gdb.setup 

Install  : libcameramoduleged.so => libs/armeabi-v7a/libcameramodule.so 
install -p project/obj/local/armeabi-v7a/libcameramodule.so project/libs/armeabi-v7a/libcameramodule.so 
ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-strip --strip-unneeded project/libs/armeabi-v7a/libcameramodule.so 
Install  : libopencv_java.so => libs/armeabi-v7a/libopencv_java.so 
install -p project/obj/local/armeabi-v7a/libopencv_java.so project/libs/armeabi-v7a/libopencv_java.so 
ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-strip --strip-unneeded project/libs/armeabi-v7a/libopencv_java.so 
+0

당신은 JNI 부분을 포함하여 이클립스 내부의 응용 프로그램을 구축합니까? 프로젝트의 디렉토리 구조를 공개하십시오. –

+0

@AlexCohn 안녕하세요. 내 질문을 업데이트했습니다. –

+0

'ndk-build V = 1'의 로그를 게시 할 수 있습니까? –

답변

0

Android.mk의 상단에 빌드 공유 라이브러리를 이동 :

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
LOCAL_SRC_FILES := cameramodule.cpp 
LOCAL_C_INCLUDES += $(LOCAL_PATH) 
LOCAL_LDLIBS  += -lGLESv1_CM -ldl -llog 
LOCAL_MODULE  := cameramodule 
include $(BUILD_SHARED_LIBRARY) 

OPENCV_INSTALL_MODULES:=on 
OPENCV_CAMERA_MODULES:=on 
OPENCV_LIB_TYPE:=SHARED 

OPENCV_PATH := /home/tran/signs/OpenCV-2.4.5-android-sdk/sdk/native 
include $(OPENCV_PATH)/jni/OpenCV.mk 
+0

하지만'는 $ (OPENCV_PATH)/JNI를 포함해야합니다/OpenCV.mk'는'OpenCV.mk'에 정의 된 opencv의 라이브러리를 사용하기 때문에 모듈을 빌드하기 전에 선언되었습니다. –

+0

시도해 보셨습니까? –

+0

opencv.mk가 라이브러리를 사용하지 않아야하기 때문에 컴파일되지 않았습니다. –

0

봅니다 NDK_APP_OUT를 사용하고 어떤 디렉토리는 것에 지시합니다 도서관이 상주하는 것처럼.