Я пытаюсь заставить свое 64-битное Android-устройство компилировать локальные 32-битные jniLibs, которые пока идут нормально, но я как бы столкнулся с загвоздкой.
Я исследовал, что именно пошло не так, в течение пары дней и возился здесь и там, но это текущая ошибка, которую я получаю:
java.lang.UnsatisfiedLinkError: dlopen failed: «/data/app/org.opencv.engine-1/lib/arm64/libopencv_java3.so» является 64-разрядным вместо 32-разрядного
Что на самом деле многообещающе, учитывая, что 64-битное устройство распознает, что оно должно компилировать 32-битную архитектуру, чего я достиг, опуская arm64, x86_64 и mips64, как согласно этому ответу: Android JNI: 32-разрядная совместимость с 64-разрядными устройствами?
Код инициализации, который я использую:
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
Итак, мои вопросы заключаются в следующем:
Есть ли способ отредактировать Abi, включенный в OpenCV 3.0, чтобы признать, что я хочу, чтобы 32-разрядная структура загружалась только после того, как устройство распознает, что оно должно искать только 32-разрядную структуру?
Будет ли потеря функции хуже, если вернуться к OpenCV 2.4.11 (я знаю, что собственная камера не работает должным образом на новой платформе)
Если ответ Abi правильный, будет ли он соответствовать сборке gradle на уровне приложения, уровне проекта или каком-либо другом (вероятно, opencvlib) уровне? Эта часть прошла мимо моей головы, читая другой ответ.
OpenCVLoader
с независимо установленным OpenCV Manager выбирать 32-битные библиотеки. - person Alex Cohn   schedule 22.12.2015