Aujourd'hui, j'ai mis à jour mon Android Studio NDK avec la version la plus récente, 18.0.5002713
. Après le processus d’installation, j’ai tenté de réexécuter mon application, mais j’ai été incapable de le faire. L'erreur qui continue à apparaître est la suivante: org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.
Dans le passé, j'avais déjà des problèmes avec mon application après les mises à jour de NDK, mais je pouvais les résoudre en ajoutant arguments '-DANDROID_STL=gnustl_static'
à la configuration externalNativeBuild
du fichier app.gradle.
Question originale: ( OpenCV - référence non définie à 'cv :: CascadeClassifier :: detectMultiScale () après la mise à jour de NDK )
En ajoutant cette ligne de code, j'ai réussi à éviter tout problème avec le NDK dans le reste de toutes les versions de NDK r17c.
Malheureusement, avec la révision r18, la prise en charge de GNUSTL a été supprimée parallèlement à gabi ++ et stlport.
Voir l'historique de révision du NDK: https://developer.Android.com/ndk/downloads/revision_history
La suppression de la ligne de code maintenant obsolète génère l'erreur qui était à l'origine du motif de la question susmentionnée. La question qui se pose maintenant est de savoir quel est l'équivalent à jour de arguments '-DANDROID_STL=gnustl_static'
?
edit: utiliser '-DANDROID_STL=c++_static'
conduit à l'ancienne erreur
Merci d'avance.
Comme @Michael l'a déjà suggéré, vous pouvez reconstruire OpenCV avec libc ++.
Pour le faire:
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...
NOTE: Testé avec "opencv-3.4.1" + ndk18
Edité par @shizhen
Vérifié sur macOS, doit ajouter ..
après la commande cmake
pour que l’erreur ci-dessous disparaisse.
Erreur CMake: le répertoire source "/opencv-3.4.1/build" ne semble pas contenir
CMakeLists.txt
.
Mis à jour comme ci-dessous:
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...
La mise à jour d'OpenCV peut prendre un certain temps. En attendant, je recommanderais de revenir en arrière à NDK r16, utilisé pour créer les fichiers binaires OpenCV Android.
première réponse au commentaire de @Aqeel iqbal dans le premier commentaire, la raison pour laquelle vous ne trouvez pas de cmakelist est peut-être parce que vous n'utilisez pas de sources ouvertes, opencv fournit le paquet independet pour Android sdk. Le fichier suivant est la source originale des sources opencv opencv release , choisissez sources à télécharger, pas le pack Android.
Après avoir téléchargé les sources, cd dans le répertoire racine du fichier source, par exemple. opencv-2.4.13.6 puis exécutez la commande fournie par @ y30, et notez que $ Android_DIR n'est peut-être pas le chemin de fichier correct de votre ndk Android. Pour moi, je les utilise:
... -DCMAKE_TOOLCHAIN_FILE =/Utilisateurs/ihandysoft/Bibliothèque/Android/sdk/ndk-bundle/build/cmake/Android.toolchain.cmake ...
voici armv8a j'avais généré https://github.com/2666fff/opencv-for-Android