NDK - проблемы после удаления GNUSTL из NDK (редакция r18) - PullRequest
0 голосов
/ 19 сентября 2018

Сегодня я обновил свой Android Studio NDK до самой последней версии 18.0.5002713.После успешного процесса установки я попытался перезапустить приложение, но не смог этого сделать.Появляется следующая ошибка: org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.

В прошлом у меня уже были проблемы с запуском приложения после обновлений NDK, но я мог их разрешить, добавив arguments '-DANDROID_STL=gnustl_static' в конфигурацию externalNativeBuildв файле app.gradle.

Исходный вопрос: ( OpenCV - неопределенная ссылка на 'cv :: CascadeClassifier :: detectMultiScale () после обновления NDK )

Добавив эту строку кода, мне удалосьизбегайте любых проблем с NDK во всех остальных выпусках NDK r17c.

К сожалению, в ревизии r18 поддержка GNUSTL была удалена вместе с gabi ++ и stlport.

См. Историю изменений NDK: https://developer.android.com/ndk/downloads/revision_history

Удаление устаревшей строки кода приводит к ошибке, которая изначально была причиной вышеупомянутого вопроса.Теперь вопрос в том, что является современным эквивалентом arguments '-DANDROID_STL=gnustl_static'?

редактирования: использование '-DANDROID_STL=c++_static' приводит к старой ошибке

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 21 сентября 2018

Как уже сказал @Michael, вы можете перестроить OpenCV с помощью libc ++.

Для этого:

cd $OPENCV_SRC
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_DIR/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a" -DANDROID_STL=c++_static  -DCMAKE_BUILD_TYPE=Release -DANDROID_NATIVE_API_LEVEL=android-24 ..
make install
cd install #the sdk will be here...

ПРИМЕЧАНИЕ: протестировано с помощью "opencv-3.4.1" + ndk18


Под редакцией @ shizhen

Проверено на macOS, следует добавить .. после команды cmake, чтобы ошибка, приведенная ниже, исчезла.

CMake Ошибка: исходный каталог "/opencv-3.4.1/build" не содержит CMakeLists.txt.

Обновлено следующим образом:

cd $OPENCV_SRC
mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=$ANDROID_DIR/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a" -DANDROID_STL=c++_static  -DCMAKE_BUILD_TYPE=Release -DANDROID_NATIVE_API_LEVEL=android-24 
make install
cd install #the sdk will be here...
0 голосов
/ 14 декабря 2018

первый ответ на комментарий @Aqeel iqbal в первом комментарии. Причина, по которой вы не можете найти cmakelist, может заключаться в том, что вы не используете исходные тексты opencv, opencv предоставляет пакет Independet для Android SDK.Следующая ссылка является исходным источником для opencv-источников opencv release , выберите sources для загрузки, а не для android pack.

После загрузки исходников, перейдите в корневой каталогисходного файла, например, opencv-2.4.13.6 , затем выполните команду, предоставленную @ y30, и заметили, что $ ANDROID_DIR может не быть вашим правильным путем к файлу вашего android ndk, для меняЯ использую это:

... -DCMAKE_TOOLCHAIN_FILE = / Пользователи / ihandysoft / Библиотека / Android / SDK / ndk-bundle / build / cmake / android.toolchain.cmake ...

вот armv8a, который я создал https://github.com/2666fff/opencv-for-android

0 голосов
/ 20 сентября 2018

Обновление OpenCV может занять некоторое время.А пока я бы порекомендовал вернуться к NDK r16, который использовался для сборки бинарных файлов OpenCV Android.

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