web-dev-qa-db-fra.com

La synchronisation de Gradle échoue avec cmake "cause: exécution d'une compilation native externe pour cmake"

J'essaie de créer le projet de mes collègues dans Android Studio, qui nécessite CMake SDK pour créer les fichiers c/cpp externes inclus dans le projet. Le problème que je rencontre est malgré le fait d'avoir installé les outils SDK LLDB, NDK et CMake via le gestionnaire de SDK, le gradle du module qui fait référence au chemin cmake ne parvient pas à se synchroniser. Mes collègues qui ont déjà ce projet installé et qui travaillent ne se sont pas heurtés à ce problème, donc je pense qu'il doit être quelque chose dans mon environnement.

Jusqu'à présent, j'ai essayé de désinstaller et de réinstaller le SDK CMake, d'actualiser les projets C++ liés et de supprimer la référence au chemin cmake du fichier gradle et d'ajouter la référence par un clic droit sur le module -> Lier le projet C++ avec Gradle, mais aucun de cela a fonctionné.

Lorsque je commente la référence à mon CMakeLists.txt dans le gradle, il se synchronise, indiquant que le problème concerne la référence au fichier CMake. J'ai également essayé de commenter les références de bibliothèque dans mon fichier CMakeLists.txt pour voir si l'erreur se produit en raison d'une référence dans le fichier, mais même lorsque je commente tout, le gradle ne parvient pas à se synchroniser.

Voici à quoi ressemble mon fichier gradle.

externalNativeBuild {
    cmake {
        path 'src/main/cpp/CMakeLists.txt'
    }
}

Lorsque j'appuie sur la synchronisation (réessayez) dans build.gradle, le message d'erreur affiche simplement

SIMPLE: Error configuring

Lorsque j'ignore le fait que la synchronisation gradle a échoué et que j'essaie simplement de construire, le message d'erreur s'affiche comme suit.

Cause: executing external native build for cmake <my_project_path>\src\main\cpp\CMakeLists.txt

Modifier: Ajout d'un lien vers la capture d'image de mon Android Studio NDK (C:\Users\nom d'utilisateur\AppData\Local\Android\Sdk\ndk-bundle pour Windows). Capture du chemin NDK

8
e.cho

pour définir le chemin NDK dans Android studio allez dans: fichier -> structure du projet -> emplacement sdk -> Android emplacement ndk -> définir le chemin par exemple mon l'emplacement du ndk sur mac est/Users/nom d'utilisateur/Library/Android/sdk/ndk-bundle

1
Ashok Kumar

J'ai eu le même message d'erreur, et il s'est avéré que j'avais une erreur de syntaxe dans mon CMakeLists.txt

0
shig

En bref - Peut-être que le problème est dans le fichier build.gradle importé avec le projet.

essayez de modifier la ligne 9 de "build.gradle": chemin de classe "com.Android.tools.build:gradle:3.1.1" remplacez le numéro de version de gradle (dans mon cas, j'ai remplacé "3.1.1" par "3.5.0").

Plus en détail - J'ai eu le même problème lors du clonage depuis: https://github.com/farzaa/DracoPortedToAndroid

J'ai essayé ce qui précède (définition du chemin ndk) mais ce n'était pas le problème, car le chemin vers la bibliothèque ndk était correct. La cause d'erreur la plus probable restait donc certains paramètres de projet importés avec le projet cloné.

Essayez de comparer les "Gradle Scripts" (dans l'explorateur de projet) du projet importé avec un nouveau projet construit dans votre environnement Android Studio. Le nouveau projet aura les paramètres locaux corrects.

Dans mon cas, j'ai remplacé:

classpath 'com.Android.tools.build:gradle:3.1.1'

avec:

classpath 'com.Android.tools.build:gradle:3.5.0'
0
yair baruch

Cela peut être dû au fait que vous avez une bibliothèque partagée dans le projet qui doit être liée à la version partagée de la STL. Essayez d'ajouter ce qui suit à votre build.gradle:

Android {
    defaultConfig {
        externalNativeBuild {
            cmake {
                arguments "-DANDROID_STL=c++_shared"
            }
        }
    }
}
0
donturner