OpenCV на Android дубликат файла для APK - PullRequest
0 голосов
/ 27 февраля 2012

Я пытаюсь создать приложение, использующее порт Android OpenCV. У меня есть функция C ++ OpenCV, написанная и упакованная правильно, и проект собирается без каких-либо ошибок. Однако, когда я собираюсь создать подписанный 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 

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

1 Ответ

0 голосов
/ 30 апреля 2012

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

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

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

Полагаю,вы создаете библиотеку следующим образом в eclipse: бинарный пакет Android, использующий с NDK

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

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

  • 2.3:

    • настройки проекта-> Android -> добавить ссылку -> PathToOpenCV-2.3 * настройки проекта * - 1023 *
    • -> Java Build Path -> Проекты: Добавить проект "OpenCV-2.3"
    • настройки проекта -> Java Build Path -> Порядок и экспорт: «OpenCV-2.3» вверху, флажок установлен
  • 2,4

    • настройки проекта -> Android -> добавить ссылку -> PathToOpenCV-2.4beta другие 2 настройки не нужны

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...