2016-05-24 4 views
0

У меня есть несколько файлов .a и хотелось бы генерировать .so используя ndk-build.Как сгенерировать .a к .so

Android.mk

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := nonfree 
LOCAL_MODULE += opencv_java3 

LOCAL_SRC_FILES :=    \ 
    libopencv_aruco.a   \ 
    libopencv_bgsegm.a     \ 
    libopencv_bioinspired.a  \ 
    libopencv_calib3d.a  \ 
    libopencv_ccalib.a  \ 
    libopencv_core.a  \ 
    libopencv_datasets.a  \ 
    libopencv_dnn.a  \ 
    libopencv_dpm.a  \ 
    libopencv_face.a  \ 
    libopencv_features2d.a  \ 
    libopencv_flann.a  \ 
    libopencv_fuzzy.a  \ 
    libopencv_highgui.a \ 
    libopencv_imgcodecs.a \ 
    libopencv_imgproc.a \ 
    libopencv_line_descriptor.a \ 
    libopencv_ml.a \ 
    libopencv_objdetect.a \ 
    libopencv_optflow.a \ 
    libopencv_photo.a \ 
    libopencv_plot.a \ 
    libopencv_reg.a \ 
    libopencv_rgbd.a \ 
    libopencv_saliency.a \ 
    libopencv_shape.a \ 
    libopencv_stereo.a \ 
    libopencv_stitching.a \ 
    libopencv_structured_light.a \ 
    libopencv_superres.a \ 
    libopencv_surface_matching.a \ 
    libopencv_text.a \ 
    libopencv_tracking.a \ 
    libopencv_ts.a \ 
    libopencv_video.a \ 
    libopencv_videoio.a \ 
    libopencv_videostab.a \ 
    libopencv_xfeatures2d.a \ 
    libopencv_ximgproc.a \ 
    libopencv_xobjdetect.a \ 
    libopencv_xphoto.a 

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include 

include $(PREBUILT_STATIC_LIBRARY) 

Для использования NDK-сборки использовали эти steps.

При попытке произвести .so это возвращение мне эту ошибку:

C:\Android\sdk\ndk-bundle\build\ndk-build.cmd clean Android NDK: LOCAL_MODULE definition in jni/Android.mk must not contain space
C:/Android/sdk/ndk-bundle/build//../build/core/build-shared-library.mk:23: *** Android NDK: Please correct error. Aborting . Stop.

Process finished with exit code 2

+0

Почему вы используете 'PREBUILT_STATIC_LIBRARY', если вы пытаетесь создать общую библиотеку? – Michael

+0

К сожалению, моя ошибка ... Я перешел на SHARED, но все еще есть вопросы о том, как сгенерировать lib opencv 3.1, чтобы внести свой вклад в использование SURF. Я последовал шаг за шагом, когда github с командами cmak просто генерировал этот огромный список «.a» и хотел бы присоединиться к одному «.so». Я не знаю, было ли проще и правильнее генерировать эту библиотеку с помощью contrib SURF. – VTR2015

ответ

1

LOCAL_MODULE определяет имя конечного файла .so построен. NDK-сборка дает ошибку, так как в space is introduced in the name when you concatenate the two stringsnonfree и opencv_java3:

LOCAL_MODULE := nonfree 
LOCAL_MODULE += opencv_java3 

Если вы хотите каскадное имя, которое я предложил бы делать это вручную:

LOCAL_MODULE := nonfree_opencv_java3 

Затем вам нужно будет указать это имя при загрузке файла .so через JNI.

+0

Спасибо за ответ ... Я получил эту ошибку: C: \ Android \ sdk \ ndk-bundle \ build \ ndk-build.cmd clean C:/Android/sdk/ndk-bundle/build //../ build /core/prebuilt-library.mk:28: *** отсутствует разделитель. Стоп. Android NDK: ОШИБКА: jni/Android.mk: nonfree_opencv_java3: LOCAL_SRC_FILES для предварительно созданной библиотеки должен содержать только один элемент Процесс завершен с кодом выхода 2 – VTR2015

Смежные вопросы