j'essaie d'intégrer la fonctionnalité ndkBuild dans un projet de studio Android Android, en utilisant le nouveau Android studio 2.2, afin d'activer le débogage c ++, etc. i ont essayé l'un des exemples de projets ndk proposés par Android studio 2.2, qui fonctionne parfaitement. Cependant, lorsque j'essaie d'exécuter les commandes gradle dans mon propre projet, je reçois ce message d'erreur:
Erreur: (73, 0) Impossible de trouver la méthode externalNativeBuild () pour les arguments [build_c6heui1f67l8o1c3ifgpntw6 $ _run_closure2 $ _closure9 @ 4329c1c9] sur le projet ': core' de type org.gradle.api.Project.
En suivant cette description http://tools.Android.com/tech-docs/external-c-builds je me suis retrouvé avec un script gradle qui comprend les commandes suivantes:
externalNativeBuild{
ndkBuild{
path "$projectDir/jni/Android.mk"
}
}
externalNativeBuild {
ndkBuild {
arguments "NDK_APPLICATION_MK:=$projectDir/jni/Application.mk"
abiFilters "armeabi-v7a", "armeabi","arm64-v8a","x86"
cppFlags "-frtti -fexceptions"
}
}
Ai-je peut-être raté quelque chose ici avec la configuration du projet? J'ai correctement défini l'emplacement NDK Android sous
Fichier -> Structure du projet ... -> Emplacement du SDK -> Android Emplacement NDK
dans mon Android studio.
Autre chose que j'aurais pu oublier?
Quelqu'un a-t-il déjà rencontré un problème similaire?
Des conseils seraient très appréciés =)
Je viens d'avoir cette erreur moi-même. Dans votre racine build.gradle
, assurez-vous que gradle est défini sur au moins la version 2.2.0:
Vous devriez donc avoir les éléments suivants dans buildscript {...}
dependencies {
classpath 'com.Android.tools.build:gradle:2.2.0'
}
Suggéré par Kun Ming Xies réponse, j'ai séparé ma cmake
partie en deux pour me débarrasser de l'erreur gênante:
Impossible de trouver les arguments de méthode () pour les arguments [-DREVISION = 1.3.1] sur l'objet de type com.Android.build.gradle.internal.dsl.CmakeOptions.
La première partie de defaultConfig
contient la configuration (arguments de ligne de commande pour les indicateurs CMake et C++), et la seconde contient le chemin d'accès à CMakeLists.txt
:
def revision = "1.3.1"
Android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
versionCode = ...
versionName "${revision}"
externalNativeBuild {
cmake {
arguments "-DREVISION=${revision}"
cppFlags '-fexceptions', '-frtti', '-std=c++11'
}
}
}
buildTypes { }
lintOptions { }
externalNativeBuild {
cmake {
path 'CMakeLists.txt'
}
}
}
Android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DANDROID_TOOLCHAIN=clang'
}
}
}