web-dev-qa-db-fra.com

Impossible de trouver la méthode externalNativeBuild () pour les arguments

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 =)

11
MinionDeveloper

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'
}
14
Dennis Shtatnov

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'
    }
  }
}
2
clemens
Android {
    defaultConfig {
        externalNativeBuild {
            cmake {
                arguments '-DANDROID_TOOLCHAIN=clang'
            }
        }
    }
1
KunMing Xie