Erreur: aucune chaîne d'outils trouvée dans le dossier des chaînes d'outils NDK pour ABI avec le préfixe: llvm

208

Je veux compiler un projet Android open source (Netguard) en utilisant gradel ( gradlew clean build) Mais j'ai rencontré cette erreur:

A problem occurred configuring project ':app'.
> Exception thrown while executing model rule: NdkComponentModelPlugin.Rules#cre
ateToolchains
   > No toolchains found in the NDK toolchains folder for ABI with prefix: llvm

J'ai recherché mais je n'ai pas trouvé que quelque chose aidait. Voici le principal build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle-experimental:0.6.0-alpha1'
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

Et voici build.gradlele appprojet:

apply plugin: 'com.android.model.application'

model {
    android {
        compileSdkVersion = 23
        buildToolsVersion = "23.0.2"

        defaultConfig.with {
            applicationId = "eu.faircode.netguard"
            minSdkVersion.apiLevel = 21
            targetSdkVersion.apiLevel = 23
            versionCode = 2016011801
            versionName = "0.76"
            archivesBaseName = "NetGuard-v$versionName-$versionCode"
        }
    }
    android.ndk {
        moduleName = "netguard"
        toolchain = "clang"
        ldLibs.add("log")
    }
    android.sources {
        main {
            jni {
                source {
                    srcDir "src/main/jni/netguard"
                }
                exportedHeaders {
                }
            }
        }
    }
    android.buildTypes {
        release {
            minifyEnabled = true
            proguardFiles.add(file('proguard-rules.pro'))
            ndk.with {
                debuggable = true
            }
        }
    }
    android.buildTypes {
        debug {
            ndk.with {
                debuggable = true
            }
        }
    }
    android.productFlavors {
        create("all") {
        }
    }
}

dependencies {


compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.1.+'
    compile 'com.android.support:recyclerview-v7:23.1.+'
    compile 'com.squareup.picasso:picasso:2.5.+'
}

Et j'utilise gradle-2.9-allet android-ndk-r10e. Je ne sais pas si je dois mentionner autre chose, alors commentez si vous avez besoin d'informations.

Saeed
la source
Essayez de mettre à jour les outils Gradle. classpath 'com.android.tools.build:gradle:3.2.0-beta05'
Photon Point
utilisez developer.android.com/ndk/downloads/older_releases et la version Android NDK, révision 16b (décembre 2017) pour télécharger les dossiers requis et résoudre le problème.
Panache

Réponses:

376

Deux ans se sont écoulés, maintenant si vous rencontrez ici, vous pouvez éventuellement rencontrer un message d'erreur comme celui-ci:

Aucune chaîne d'outils trouvée dans le dossier des chaînes d'outils NDK pour ABI avec le préfixe mips64el-linux-android

ou

Aucune chaîne d'outils trouvée dans le dossier des chaînes d'outils NDK pour ABI avec le préfixe mipsel-linux-android

Le dernier NDK a supprimé le support pour mipsabi, et la version Earler du plugin Android Gradle vérifie toujours l'existence de la chaîne d'outils Mips. voir ici pour plus d'informations .

Solution : mettez à niveau le plugin Android Gradle vers 3.1 ou plus récent.

Par exemple, ajouter les éléments suivants dans le niveau de projet [28-sept-2018]

 classpath "com.android.tools.build:gradle:3.2.0"

Solution : créez une mipsel-linux-androidstructure de dossiers pour tromper l'outil. Le moyen le plus simple serait de faire un lien symbolique vers aarch64-linux-android-4.9.

# on Mac
cd  ~/Library/Android/sdk/ndk-bundle/toolchains
ln -s aarch64-linux-android-4.9 mips64el-linux-android
ln -s arm-linux-androideabi-4.9 mipsel-linux-android

Vérifiez ce fil de trois options pour résoudre ce type de problème

pas de panique
la source
6
Essayé avec Gradle 4.1, n'a pas fonctionné, mais la solution de contournement (création du dossier mipsel-linux-android-dummy) a fonctionné. Merci @lazybug.
2
@Girish upgrade Android Gradle Plugin in top level build.gradlefile, something like com.android.tools.build:gradle:3.2.0-rc02, not Gradle version
Don't panic
4
La solution de contournement mentionnée ici est la bonne: # on Mac cd ~/Library/Android/sdk/ndk-bundle/toolchains ln -s aarch64-linux-android-4.9 mips64el-linux-android ln -s arm-linux-androideabi-4.9 mipsel-linux-android
Avijeet Dutta
16
Sous Windows: mklink /d mips64el-linux-android aarch64-linux-android-4.9et a mklink /d mipsel-linux-android arm-linux-androideabi-4.9fonctionné pour moi aussi.
Mitch
La solution de contournement "sur Mac" fonctionne très bien (adapter ~ / partie bibliothèque). Mais la prochaine mise à jour de NDK (14 octobre 2018) a trouvé tout un tas de fichiers inattendus dans les arbres mips *. Pas étonnant. J'ai donc supprimé à nouveau les liens symboliques.
Quigi
66

Pour Android studio 3.2.1+

Mettez à niveau votre plugin Gradle

classpath 'com.android.tools.build:gradle:3.2.1'

Si vous obtenez maintenant cette erreur:

Could not find com.android.tools.build:gradle:3.2.1.

ajoutez simplement google () à vos référentiels, comme ceci:

repositories {
    google()
    jcenter()
}

Codage heureux - :)

Nikunj Paradva
la source
1
Ceci est la vraie solution
Martin
55

J'ai corrigé cette erreur en désinstallant le NDK dans les SDK-Tools. Donc, si vous n'avez pas besoin du NDK, désinstallez-le.

Herzi
la source
7
Et si j'ai besoin de NDK?
IgorGanapolsky
même ici si nous voulons NDK alors quelle est la solution?
Brijesh Joshi
Il est résolu si vous désinstallez le NDK mais si vous devez utiliser le NDK, veuillez vérifier ce stackoverflow.com/a/51589406/6533853
Ninja le
Pour désinstaller suivez ce stackoverflow.com/a/52207450/2768515
Chetan
35

J'ai rencontré le même problème lors de la mise à jour d'Android Studio de 2.0 à 2.1 sur ma machine Windows 8.

J'ai trouvé une solution pour cela.Veuillez utiliser les étapes suivantes.

  1. Téléchargez le NDK Android pour Windows à partir de https://developer.android.com/ndk/downloads/index.html .
  2. Extraire le même et copier le dossier "toolchain" du bundle.
  3. Collez le dossier sous le dossier NDK installé sous C: \ android-sdk-win \ ndk-bundle. [Le chemin installé peut varier en fonction de votre installation]
  4. Redémarrez le studio Android.

Cela se produit car le studio Android n'obtiendra pas de mise à jour NDK complète dans le canal stable. Si vous n'utilisez pas NDK pour le développement de votre projet, vous pouvez simplement supprimer le dossier NDK de votre répertoire SDK.

Nithinjith
la source
1
Fonctionne avec Android Studio 3.2!
maxwellnewage
1
Cela a également fonctionné pour moi pour corriger l'erreur " Error : Android MIPS ToolChain directory "" does not exist" dans Game Maker Studio 2 sur un Mac. Mais j'avais besoin d'obtenir la version 17c du NDK à partir d'ici: developer.android.com/ndk/downloads/older_releases (selon: reddit.com/r/gamemaker/comments/9m958a/… ) Merci @nithinjith! ... toujours pas en construction cependant, besoin de résoudre:Android NDK: Please fix the APP_ABI definition in /Users/../Library/Android/sdk/ndk-bundle/build/core/default-application.mk
kris
33

Message d'erreur: «Aucune chaîne d'outils trouvée dans le dossier des chaînes d'outils NDK pour ABI avec le préfixe: llvm».

Après une nouvelle installation Web d'Android Studio avec NDK, j'ai importé un exemple de code Android qui utilisait NDK depuis GitHub et j'ai essayé de le compiler.

En conséquence, une erreur s'est produite:

Aucune chaîne d'outils trouvée dans le dossier des chaînes d'outils NDK pour ABI avec le préfixe: llvm

Solution: pour certaines raisons, le processus d'installation standard sur macOS n'a pas réussi à installer un ensemble complet:

~/Library/Android/sdk/ndk-bundleavait manqué le dossier toolchainsavec tous les outils,

(il devrait être comme ceci: ~/Library/Android/sdk/ndk-bundle/toolchains)

La solution consistait à télécharger NDK séparément, à l'ouvrir, à copier le dossier toolchainet à le coller dans le dossier:

~/Library/Android/sdk/ndk-bundle

Après cela, cela a bien fonctionné pour moi.

James T Snell
la source
dans mon cas, il est là mais pas de fichier avec le préfixe aarch64-linux-android . Toute suggestion !!
CoDe
le dossier 'mips64el-linux-android-4.9' et 'mipsel-linux-android-4.9' ne sont pas disponibles après le bundle ndk 16, donc je dois télécharger et ajouter ces deux dossiers dans le bundle sdk android dans le dossier toolchains donc le problème est résolu, toujours ne comprenait pas pourquoi cette erreur?
Fazal
22

Pas à pas:

1) Ouvrez la page avec les anciennes versions de NDK :

https://developer.android.com/ndk/downloads/older_releases

entrez la description de l'image ici

2) Acceptez les conditions:

entrez la description de l'image ici

3) Téléchargez l'ancienne version de NDK(par exemple 16b):

entrez la description de l'image ici

4) Ouvrez votretoolchains répertoire.

5) Transférez les fichiers dont vous avez besoin du toolchainsdossier du fichier zip téléchargé vers votre toolchainsdossier:

entrez la description de l'image ici

6) Reconstruisez le projet:

entrez la description de l'image ici


UPD 30 sept. 2018:
J'ai utilisé Android NDK Revision r16b pour corriger cette erreur dans mon propre cas. Je présente donc l'exemple avec cette version.
Mais il vaut mieux utiliser l'Android NDK, Revision r17c (juin 2018). C'est le dernier, supportant les mips (recommandation raisonnable du commentaire du week-end).

V.March
la source
Au lieu de cela (for example 16b), il est préférable de préciser quelle version de NDK est la dernière prise en charge des mips. via la note de publication d'Android NDK Revision r17c (juin 2018) : la prise en charge d'ARMv5 (armeabi), MIPS et MIPS64 a été supprimée. Toute tentative de création de l'un de ces ABI entraînera une erreur. C'est 16bexactement.
week
@Weekend Merci pour votre recommandation. Je l'ai ajouté à ma réponse.
mars 2018
1
@vmarch Désolé mais c'est 16bexactement. r17c est la première version qui a supprimé le support pour MIPS :)
Week
1
@Oh, j'ai lu votre commentaire précédent très rapidement. C'est pourquoi j'ai raté le point. Mes excuses! Mais ces fichiers sont toujours présents dans le NDK Android, Révision r17c (juin 2018). Et dans la version 18, ils ont finalement été supprimés. Regardez dans les archives. developer.android.com/ndk/downloads/…
V.March
@vmarch Bravo! Je n'ai pas vérifié l'archive r17c, j'ai simplement déduit la conclusion précédente des notes de version.
week
17

Sans rien télécharger, copier ou créer un lien symbolique, j'ai pu "corriger" l'erreur en créant simplement un répertoire vide où l'ancienne version du plugin Android Gradle attend la chaîne d'outils mips supprimée:

mkdir -p $ANDROID_HOME/ndk-bundle/toolchains/mips64el-linux-android/prebuilt/linux-x86_64

Évidemment, $ANDROID_HOMEpointe ici la racine de l'installation du SDK Android. Si vous utilisez MacOS , remplacez-le linux-x86_64par darwin-x86_64dans la commande ci-dessus. Sous Windows windows-x86_64.

friederbluemle
la source
A fonctionné comme un charme.
Akbar Sha Ebrahim
Cela dépend de ce à quoi votre projet fait référence. Cela n'a pas fonctionné pour moi, mais c'est une astuce agréable et simple pour certains. J'ai dû copier la vraie chaîne d'outils pour se débarrasser de l'erreur.
Martin Zaske
11

J'ai désinstallé le NDK car je n'en avais pas besoin. Accédez au gestionnaire SDK sur Android studio (Outils -> Android -> Gestionnaire SDK). Si NDK est installé. Décochez simplement la case et cliquez sur OK. Les composants installés seront supprimés.

diptia
la source
8

Dans mon cas, cette erreur s'est produite lors de la création d'un nouveau projet Java Android Studio (Android studio 3.2.1) avec

    classpath 'com.android.tools.build:gradle:2.0.0-beta6'

J'ai donc rétrogradé à

       dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
      }

Ce n'est pas la meilleure solution, restez dans une version plus ancienne, mais c'est peut-être juste un bogue temporaire dans la bêta car le chemin NDK dans local.properties est toujours le même, mais l'IDE ne se plaint plus

Marian Klühspies
la source
Je pense que c'est un bug de plugin gradle obsolète. Mettez à jour la dernière version. Cela m'a aidé (de 3.0 à 3.2.0-beta05 dans mon cas)
AnoDest
Je pense qu'il est mis à niveau et non rétrogradé ... P
Shylendra Madda
7

Android NDK 18.0 * semble avoir un problème de ne pas créer tous les fichiers dans les dossiers après l'extraction. En raison de cela, la compilation de votre application échouera, ce qui utilise des builds ndk.

Mieux vaut utiliser la version NDK 17.1 * ( https://developer.android.com/ndk/downloads/ ), etc. et vous pouvez extraire ou utiliser l'extraction de studio Android pour ndk-bundle par défaut, cela fonctionnera bien.

appapurapu
la source
5

[ https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android

Pour les personnes essayant cet exemple et rencontrant des problèmes avec le dernier NDK. Peut suivre cette solution. Dans build.gradle, changez cela

classpath 'com.android.tools.build:gradle:3.0.1'

À

classpath 'com.android.tools.build:gradle:3.1.2'

La raison en est que les mips sont déconseillés dans les dernières versions de ndk, Gradle version 3.1.2 n'aura pas de contrainte pour les mips. Il suppose la présence de ces dossiers manquants.

Sujith Royal
la source
4

Ouvrez Android Studio, allez dans Outils puis Android puis SDK, décochez NDK Si vous n'en avez pas besoin et redémarrez Android studio.

Muhammad Bilal
la source
3

Dans votre fichier Gradle au niveau du projet, augmentez la version de chemin de classe des dépendances de bas en haut comme

dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
    }

changer comme

dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
Karthikeyan DS
la source
3

Résolu en ajoutant une google()dépendance dans les deux référentiels dans build.gradle(Project: ProjectName). puis synchronisez votre projet

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}
Zain
la source
2

J'ai eu un problème similaire, mais je voulais utiliser la version r9d de NDK en raison des exigences du projet.

Dans local.propertiesle chemin d'accès a été défini sur ndk.dir=C\:\\Android\\ndk\\android-ndk-r9dmais cela a conduit au problème:

Aucune chaîne d'outils trouvée dans le dossier des chaînes d'outils NDK pour ABI avec le préfixe: [nom de la chaîne d'outils]

La solution était de:

  1. Installez le dernier NDK à l'aide du gestionnaire sdk
  2. Copiez la chaîne d'outils manquante [nom de la chaîne d'outils] du nouveau ndk vers l'ancien. Dans mon cas desdk\ndk-bundle\toolchains à\ndk\android-ndk-r9d\toolchains
  3. Répétez le processus jusqu'à ce que toutes les chaînes d'outils requises soient là

Il me semble que les chaînes d'outils copiées ne sont pas utilisées, mais pour une raison quelconque, elles doivent être présentes.

Marcin Kunert
la source
2

J'ai résolu cette question par ndk non installé, parce que je n'en ai pas besoin

alpha
la source
2

Voici le correctif.

Lors de la compilation d'un projet dans un studio Android, je rencontre parfois:

Erreur: aucune chaîne d'outils trouvée dans le dossier des chaînes d'outils NDK pour ABI avec le préfixe: arm-linux-androideabi / llvm

Cela peut être dû à la mise à jour des composants associés. La solution est au studio Android (Outils -> Android -> SDK Manager). Sélectionnez l'élément ndk et supprimez-le. Si le programme en a besoin, vous pouvez le réinstaller. Cela garantira que l'emplacement du dossier est correct et il n'y aura pas un tel problème.

0xAliHn
la source
2

Pour le réparer comme je l'ai fait

Fichier Android Studio> structure du projet et accédez au projet

changer la version Gradle en 4.6 et la version du plugin Android en 3.2.1

vérifier la capture d'écran

puis nettoyez le projet si vous avez cette erreur "Impossible de trouver aapt2-proto.jar"

allez sur build.gradle (projet)

Essayez de déplacer la méthode google () (fichier .gradle) en haut de son bloc d'exécution dans l'ordre des référentiels dans lesquels elle recherche, ce qui provoque le problème.

par exemple, changez ceci:

repositories {
  maven { url 'https://maven.fabric.io/public' }
  google()      <===  from here
  mavenCentral()
}

Pour ça:

repositories {
  google()     <===  to here
  maven { url 'https://maven.fabric.io/public' }
  mavenCentral()
}

Apportez ces modifications dans "buildscript" et "allprojects"

vérifier la capture d'écran

Si vous n'avez pas trouvé google () ajoutez-le

Bachlil
la source
2

Pour Android Studio 3.2.1 Mettez à jour votre

Version Gradle 4.6

Plugin Android version 3.2.1

Masum
la source
2

Le problème survient principalement lorsque vous clonez un projet précédent spécialement à partir de github. Ce que vous pouvez faire c'est

  1. Changez le chemin de classe en

chemin de classe 'com.android.tools.build:gradle:3.2.1'

dans le niveau de votre projet.

  1. Ensuite, modifiez toutes les instances de compilation avec implémentation, sauf compileSdkVersion, conservez-la telle qu'elle est dans votre niveau de niveau d'application.

  2. Au lieu de synchroniser, cliquez maintenant sur créer un projet (Ctrl + F9)

  3. Ajoutez des référentiels google maven si nécessaire.

  4. Mettez à niveau l'emballage gradle si nécessaire.

(Android Studio IDE vous demandera / vous guidera de la même manière pour les étapes 4 et 5)

ça corrige !! Profitez du codage

Aakash Birari
la source
2

REMARQUE: Cette réponse semble être spécifique à:, No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-androidmais elle a été liée ici par:

* /programming/52193274/no-toolchains-found-in-the-ndk-toolchains-folder-for-abi-with-prefix-mips64el-l

De NDK r19b:

more ~/Android/Sdk/ndk-bundle/CHANGELOG.md
  • Cette version du NDK est incompatible avec le plug-in Android Gradle version 3.0 ou antérieure. Si vous voyez une erreur comme No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android, mettez à jour votre fichier de projet pour [utiliser la version 3.1 ou plus récente du plugin]. Vous devrez également effectuer une mise à niveau vers Android Studio 3.1 ou une version plus récente.
nikc
la source
1

Si vous n'utilisez pas le NDK, désactivez la variable d'environnement ANDROID_NDK_HOME.

Cristan
la source
1

Si vous utilisez Ionic 3 Remove ndk des outils Android Studio SDK.

Taimoor Tariq
la source
Idéal, comme solution temporaire pour le besoin spécifique de créer des projets Android ioniques, bien qu'il ne soit pas idéal.
MFAL
1

Trouvez votre propre android-SDK local, si vous téléchargez le SDK correspondant de ndk, il y aura un dossier appelé "ndk-bundle"

entrez la description de l'image ici

Il y a un dossier appelé "toolchains" à l'intérieur.

entrez la description de l'image ici

Nous avons remarqué qu'il n'y a aucun fichier associé à mips64el à l'intérieur.

entrez la description de l'image ici

La solution est la suivante:

Cliquez ici pour télécharger le package NDK séparément via le navigateur. Après avoir décompressé, ouvrez le dossier "toolchains", comparez-le avec le dossier android-sdk-> ndk-bundle-> toolchains, trouvez le dossier manquant, copiez le dernier 3. Recompilez, le problème est résolu. J'espère que ça t'aide à t'accoupler

Prince
la source
1

Face au même problème.

J'ai eu du succès de différentes manières.

Ouvrez votre fichier buldle.gradle et mettez à niveau les versions pour suivre les deux classpath

classpath 'com.android.tools.build:gradle:3.2.1' classpath 'com.google.gms: google-services: 4.2.0'

Ensuite, synchronisez et obtenez un dilaog pour la mise à jour de la version Gradle, puis cliquez sur ce lien et attendez le téléchargement de toutes les mises à jour requises (Internet Hope disponible). Après avoir pris longtemps, vous avez réussi.

subhash gaikwad
la source
1

Tout d'abord, essayez de mettre à jour la version ndk https://developer.android.com/ndk/downloads/

Si cela ne fonctionne pas, vous pouvez essayer ce qui suit:

  • Créer un dossier

    Accédez au dossier Sdk \ ndk-bundle \ toolchains (dans mon cas, son C: \ Users \ USER \ AppData \ Local \ Android \ Sdk \ ndk-bundle \ toolchains; vous pouvez trouver le vôtre sous Fichier-> structure du projet-> SDK dans votre studio Android) et créez un dossier avec le nom qui apparaît comme manquant dans l'erreur, par exemple: si l'erreur est

    Échec de la synchronisation de Gradle: aucune chaîne d'outils trouvée dans le dossier des chaînes d'outils NDK pour ABI avec le préfixe: mipsel-linux-android

    Ensuite, créez un dossier avec le nom mipsel-linux-android

  • Inclure le contenu Accédez à nouveau au dossier Sdk \ ndk-bundle \ toolchains et ouvrez tout dossier qui s'y trouve déjà. Par exemple: Sdk \ ndk-bundle \ toolchains \ aarch64-linux-android-4.9 (dans mycase C: \ Users \ USER \ AppData \ Local \ Android \ Sdk \ ndk-bundle \ toolchains \ aarch64-linux-android-4.9) copiez le dossier préconstruit dans le dossier que nous avons créé à la dernière étape

  • Exécutez à nouveau le projet et cela fonctionnera

J'espère que ça aide!!

Dismi Paul
la source
1

Dans mon expérience limitée avec cette question, j'essaie de résoudre le problème en utilisant la méthode suivante:

1. Restez sur la version des outils de construction Android de la même manière que la version Gradle. Par exemple: si vous utilisez la version des outils de construction est 3.3.0, votre version gradle doit être 4.10.1. Vous pouvez référencer par le lien https://developer.android.com/studio/releases/gradle-plugin et chagne votre construire des outils et une version gradle dans votre AS (Fichier-> Structure du projet-> Projet)

2.Si la méthode 1 ne fonctionne pas, vous pouvez personnaliser la version de vos chaînes d'outils ndk pour résoudre le problème: comme télécharger ndk18 ou ndk16, définir le chemin ndk est votre AS (Fichier-> Structure du projet-> Emplacement du SDK-> Emplacement Android NDK)

廖志伟
la source
1

Accédez à C:\Users\lalit\AppData\Local\Android\Sdk\ndk-bundle\toolchains.

Maintenant, trouvez le nom du dossier aarch64-linux-android-4.9et renommez-le enmips64el-linux-android .

Relancez l'application Android.

BlackHat Gaming
la source