NDKBuild Échec
Je vais avoir du mal à obtenir mon NDK pour compiler correctement dans Android Studio. Chaque fois que j'essaie de courir pour la compilation, j'obtiens l'erreur suivante.
D'erreur:échec de l'Exécution de la tâche:app:ndkBuild'.
Un problème est survenu de départ du processus de commande " ndk-build.cmd"
J'ai la configuration suivante
Et mon build.gradle fichier est le suivant.
import org.apache.tools.ant.taskdefs.condition.Os
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "edu.uky.cs.www.diagramaphone"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
sourceSets.main{
jniLibs.srcDir 'src/main/libs'
jni.srcDirs = [] //disable automatic ndk-build call
}
project.ext.versionCodes = ['armeabi':1, 'armeabi-v7a':2, 'arm64-v8a':3, 'mips':5, 'mips64':6, 'x86':8, 'x86_64':9] //versionCode digit for each supported ABI, with 64bit>32bit and x86>armeabi-*
android.applicationVariants.all { variant ->
//assign different version code for each output
variant.outputs.each { output ->
output.versionCodeOverride =
project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI), 0) * 1000000 + defaultConfig.versionCode
}
}
//call regular ndk-build(.cmd) script from app directory
task ndkBuild(type: Exec) {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
commandLine 'ndk-build.cmd', '-C', file('src/main').absolutePath
} else {
commandLine 'ndk-build', '-C', file('src/main').absolutePath
}
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
//ndk {
// moduleName "shape-detect"
//cFlags "-DANDROID_NDK -D_DEBUG DNULL=0" //Define some macros
//ldLibs "EGL", "GLESv3", "dl", "log" //Link with these libraries!
//stl "stlport_shared" //Use shared stlport library
//}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:21.0.3'
compile project(':libraries:tess-two')
compile project(':libraries:opencv')
}
À ce point, je suis perdu quant à ce qui peut être mauvais. J'ai suivi plusieurs tutoriels pour essayer de régler le NDK pour fonctionner correctement, mais je reçois l'erreur que j'ai montré ci-dessus. Peut-on ici de fournir quelques commentaires sur ce que je dois faire afin d'obtenir le NDK pour compiler?
EDIT: Voici l'intégralité du message qui se produit.
Information:Gradle tasks [:app:assembleDebug]
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:libraries:opencv:compileLint
:libraries:opencv:copyReleaseLint UP-TO-DATE
:libraries:opencv:mergeReleaseProguardFiles UP-TO-DATE
:libraries:opencv:preBuild UP-TO-DATE
:libraries:opencv:preReleaseBuild UP-TO-DATE
:libraries:opencv:checkReleaseManifest
:libraries:opencv:prepareReleaseDependencies
:libraries:opencv:compileReleaseAidl UP-TO-DATE
:libraries:opencv:compileReleaseRenderscript UP-TO-DATE
:libraries:opencv:generateReleaseBuildConfig UP-TO-DATE
:libraries:opencv:generateReleaseAssets UP-TO-DATE
:libraries:opencv:mergeReleaseAssets UP-TO-DATE
:libraries:opencv:generateReleaseResValues UP-TO-DATE
:libraries:opencv:generateReleaseResources UP-TO-DATE
:libraries:opencv:packageReleaseResources UP-TO-DATE
:libraries:opencv:processReleaseManifest UP-TO-DATE
:libraries:opencv:processReleaseResources UP-TO-DATE
:libraries:opencv:generateReleaseSources UP-TO-DATE
:libraries:opencv:compileReleaseJava UP-TO-DATE
:libraries:opencv:processReleaseJavaRes UP-TO-DATE
:libraries:opencv:packageReleaseJar UP-TO-DATE
:libraries:opencv:compileReleaseNdk UP-TO-DATE
:libraries:opencv:packageReleaseJniLibs UP-TO-DATE
:libraries:opencv:packageReleaseLocalJar UP-TO-DATE
:libraries:opencv:packageReleaseRenderscript UP-TO-DATE
:libraries:opencv:bundleRelease UP-TO-DATE
:libraries:tess-two:compileLint
:libraries:tess-two:copyReleaseLint UP-TO-DATE
:libraries:tess-two:mergeReleaseProguardFiles UP-TO-DATE
:libraries:tess-two:preBuild UP-TO-DATE
:libraries:tess-two:preReleaseBuild UP-TO-DATE
:libraries:tess-two:checkReleaseManifest
:libraries:tess-two:prepareReleaseDependencies
:libraries:tess-two:compileReleaseAidl UP-TO-DATE
:libraries:tess-two:compileReleaseRenderscript UP-TO-DATE
:libraries:tess-two:generateReleaseBuildConfig UP-TO-DATE
:libraries:tess-two:generateReleaseAssets UP-TO-DATE
:libraries:tess-two:mergeReleaseAssets UP-TO-DATE
:libraries:tess-two:generateReleaseResValues UP-TO-DATE
:libraries:tess-two:generateReleaseResources UP-TO-DATE
:libraries:tess-two:packageReleaseResources UP-TO-DATE
:libraries:tess-two:processReleaseManifest UP-TO-DATE
:libraries:tess-two:processReleaseResources UP-TO-DATE
:libraries:tess-two:generateReleaseSources UP-TO-DATE
:libraries:tess-two:compileReleaseJava UP-TO-DATE
:libraries:tess-two:processReleaseJavaRes UP-TO-DATE
:libraries:tess-two:packageReleaseJar UP-TO-DATE
:libraries:tess-two:compileReleaseNdk UP-TO-DATE
:libraries:tess-two:packageReleaseJniLibs UP-TO-DATE
:libraries:tess-two:packageReleaseLocalJar UP-TO-DATE
:libraries:tess-two:packageReleaseRenderscript UP-TO-DATE
:libraries:tess-two:bundleRelease UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72103Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42103Library UP-TO-DATE
:app:prepareDiagramaphoneLibrariesOpencvUnspecifiedLibrary UP-TO-DATE
:app:prepareDiagramaphoneLibrariesTessTwoUnspecifiedLibrary UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:ndkBuild FAILED
Error:Execution failed for task ':app:ndkBuild'.
> A problem occurred starting process 'command 'ndk-build.cmd''
Information:BUILD FAILED
Information:Total time: 2.226 secs
Information:1 error
Information:0 warnings
Information:See complete output in console
- Désolé pour une réponse erronée et trompeuse.
-C
est la forme correcte du paramètre pourndk-build.cmd
. Essayez d'ajouter le NDK répertoire racine de votrePATH
. - Comment puis-je confirmer que mon ndk est correctement configuré? Je vais modifier mon post à nouveau pour montrer ce que j'ai actuellement, idéalement, l'erreur est quelque chose de petit que Im manquant
- NDK d'installation est uniquement pour décompresser l'archive et peut-être ajouter ce dossier en CHEMIN. Une bonne façon serait d'ouvrir l'invite de commande et essayez d'exécuter
ndk-build.cmd
dans cette fenêtre. En fait, il y a un non-trivial règle: ne pas utiliser des chemins d'accès avec des espaces, commeC:\Program Files
- Salut, j'obtiens le même problème dans Android studio Ubuntu, j'utilise ubuntu et dans la construction.gradle OSFamily windows.Comment résoudre le problème ?.S'il vous plaît aidez-moi au plus vite.Merci à l'Avance.
Vous devez vous connecter pour publier un commentaire.
J'ai rencontré ce genre de problème. Tout d'abord, Vous devez donner à vos NDK chemin dans
local.properties
de votre application.par exemple
ndk.dir=/home/user/bin/android_ndk/android-ndk-r10e
Ensuite dans mon
build.gradle
fichier que j'avais quelque chose comme cela pour l'appel de ndk commande de construction.Je v le changer pour
J'ai donné le chemin d'accès complet de NDK construire. Espérons que ça va vous aider.
local.properties
au lieu de codé en dur chemin:def ndkDir = plugins.getPlugin('com.android.library').sdkHandler.ndkFolder
. Et puis la ligne de commande comme ceci:commandLine '$ndkDir/ndk-build', '-C', file('src/main/jni').absolutePath
ndk.dir
défini danslocal.properties
, pourquoi avez-vous de donner le chemin complet ?'/home/user/bin/android_ndk/android-ndk-r10e/ndk-build'
à'/home/user/bin/android_ndk/android-ndk-r10e/ndk-build.cmd'
Dans android studio, Fichier->Structure de Projet -> Emplacement du SDK,
Jeu le Android NDK emplacement pour votre ordinateur.
Merci!
essayer cette
replace (E:\\Android\\ndk\\) avec votre ndk chemin.
facile pour android studio 2.3.3. il suffit de suivre Fichier->Structure de Projet -> android NDK Emplacement-> Cliquez sur le bouton de téléchargement. après l'installation ndk résoudre mon problème.
Juste au cas où si ça aide quelqu'un d'autre:
Donnant NDK chemin(dossier parent où ndkBuild.cmd réside) dans les Variables d'Environnement résout également le problème.
Alternativement, on peut suivre @Hayk 's réponse si vous êtes sous Linux ou @Nooh 's réponse pour Windows.
Mon observation:
Que, si je le mets direct NDK chemin résolu mon problème dans Android Studio, parfois, mais encore une fois il n'a pas de construire et jeta erreur et puis j'ai mis chemin dans les Variables d'Environnement et le projet de construire avec succès.
Dans ce cas pour Windows on doit la mettre *
*
et pour environnement Linux uniquement *
*
Ajouter le ndk (chemin C:\android-ndk-r10e) pour la variable de chemin d'accès de la valeur dans la variable d'environnement(variable Système) qui, à gauche, ma variable "path" comme ce
Paramètres --> Système - > Advenced Paramètres Système --> Variables Système
Ensuite, ouvrez la fenêtre de commande (cmd). Entrez l'emplacement du dossier de votre projet avec lecteur cd et commandes d'écrire "ndk-build", puis appuyez sur entrée.
Tout d'abord, vous devez vérifier local.les propriétés de fichier dans votre projet. En local.propriétés de la case à ndk chemin. Il ressemble à ceci
ndk.dir=D:\\sdk\\ndk-bundle.
Maintenant, allez à la construction.gradle(Module bibliothèque) et de trouver getNdkPath().
Il sera de retour ndk emplacement du chemin d'accès qui concatnate la ndk-build
Changement ndk-build --> ndk-build.cmd. Il ressemble à ceci:
Espère que ça va vous aider!
Accepté la réponse est OK, mais il ne fonctionne pas depuis android outils de plugin gradle 2.3: Pas de sdkHandler champ dans LibraryPlugin après la mise à jour d'outils de construction de 2.3.0, si vous avez besoin d'utiliser
project.android.ndkDirectory.absolutePath
variable, c'est à dire:Vous pouvez également lire ndk.dir directement à partir de locaux.propriétés: https://stackoverflow.com/a/32649204/1028256