2012-02-27 2 views
0

Я пытаюсь создать приложение, использующее порт Android OpenCV. У меня есть функция C++ OpenCV, написанная и завернутая правильно, и проект строится без ошибок. Когда я иду построить подписанную APK, однако, я получаю следующее сообщение об ошибке:OpenCV на Android Duplicate File for APK

[2012-02-26 21:06:50 - PortalSentry] Found duplicate file for APK: lib/armeabi-v7a/libnative_camera_r2.2.2.so 
Origin 1: C:\workspace\android_body\PortalSentry\libs\armeabi-v7a\libnative_camera_r2.2.2.so 
Origin 2: C:\workspace\android_body\OpenCV-2.3.1\libs\armeabi-v7a\libnative_camera_r2.2.2.so 

решение, которое я видел упоминается в нескольких местах, чтобы добавить

OPENCV_CAMERA_MODULES:=off 

перед включением Makefile OpenCV. Я попробовал это и по-прежнему получаю ту же ошибку дубликата файла. Есть ли способ явно указать Eclipse не включать один из этих файлов библиотеки? Я считаю, что причина этого заключается в том, что я связываюсь с OpenCV как с Java, так и с C++, но в этой ситуации предполагается, что строка OPENCV_CAMERA_MODULES останавливает двойное включение.

ответ

0

Как решить строительство OpenCV Образцы с родным OpenCv от http://opencv.itseez.com?

Я сам столкнулся с этой проблемой. Я использовал бета OpenCV 2.4 и возникла проблема при создании учебника по примерам, в котором используется собственный код OpenCV.

Я исправил его, и я хочу попытаться объяснить, как я спустился.

Я предполагаю, что вы построить библиотеку, как это затмение: Android binary package using with NDK

Оба проекта, проект OpenCV и проект образца находятся в одной рабочей области. проект OpenCV отмечен как библиотека.

настройки проекта различия между openCV2.3 и 2.4beta:

  • 2.3: Настройки

    • проекта -> Android -> Add Reference -> PathToOpenCV-2.3
    • настройки проекта - > Путь сборки Java -> Проекты: Добавить проект «OpenCV-2.3»
    • Настройки проекта -> Путь сборки Java -> Заказ и экспорт: установлен флажок «OpenCV-2.3», флажок
  • 2,4

    • настройки проекта -> Android -> Add Reference -> PathToOpenCV-2.4beta 2 другие параметры не нужны

Когда вы сделаете это, Проекты Java работают. Однако, когда вы включаете эти проекты lib, а затем пытаетесь создать собственные образцы, файлы <libname>.so копируются и попадают в папку примеров проектов под /obj/local/armeabi-v7a/ с некоторыми другими *.a файлами из предварительно созданного проекта OpenCV. Оттуда NDK создает файлы в папке /lib, которые позже включены в файл apk (я думаю). Затем запускается Java-часть Eclipse. Это обнаруживает дубликат файлов .so, которые находят их в библиотеке OpenCV и теперь в вашем образце lib, поэтому он отказывает в создании нового файла apk. (Возможно, это было обходным путем, чтобы сделать это с повторяющимися записями, я не соблюдал это. Посмотрите Duplicate file when deploying apk).

Чтобы избежать дубликатов, я удалил параметр в свойствах проекта «Настройки проекта -> Android -> добавить ссылку -> PathToOpenCV-2.4beta», затем NDK импортирует библиотеки и создает их (по мере создания путей в цепочке сборки Eclipse из второй ссылки выше), образец знает некоторые OpenCV из двоичных файлов, хотя он не включает весь проект OpenCV.

Я не знаю, работает ли это, когда вам нужна поддержка Java для OpenCV.