Ошибка: в папке наборов инструментов NDK для ABI не найдено цепочек инструментов с префиксом: llvm

208

Я хочу скомпилировать проект Android с открытым исходным кодом (Netguard), используя gradel ( gradlew clean build), но я столкнулся с этой ошибкой:

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

Я разгорячился, но не нашел ничего полезного. Вот главное 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
}

А вот build.gradleв appпроекте:

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.+'
}

И я использую gradle-2.9-allи android-ndk-r10e. Я не знаю, стоит ли мне упоминать что-то еще, поэтому прокомментируйте, если вам нужна какая-либо информация.

Saeed
источник
Попробуйте обновить инструменты Gradle. classpath 'com.android.tools.build:gradle:3.2.0-beta05'
Фотон-Пойнт
используйте developer.android.com/ndk/downloads/older_releases и версию Android NDK, редакция 16b (декабрь 2017 г.), чтобы загрузить необходимые папки и устранить проблему.
Panache
Проверьте эту ветку с тремя вариантами решения этой проблемы
shizhen

Ответы:

376

Прошло два года, теперь, если вы столкнетесь здесь, вы можете встретить сообщение об ошибке, подобное этому:

В папке наборов инструментов NDK для ABI не найдено никаких цепочек инструментов с префиксом mips64el-linux-android

или

В папке наборов инструментов NDK для ABI не найдено никаких цепочек инструментов с префиксом mipsel-linux-android

В последнем NDK удалена поддержка mipsabi, а более ранняя версия плагина Android Gradle по-прежнему проверяет наличие набора инструментов mips. смотрите здесь для получения дополнительной информации .

Решение : Обновите плагин Android Gradle до версии 3.1 или новее.

например, добавить следующее в gradle уровня проекта [28-Sept-2018]

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

Обходной путь : Создайте mipsel-linux-androidструктуру папок, чтобы обмануть инструмент. Самым простым способом будет символическая ссылка на 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

Проверьте эту ветку из трех вариантов решения этой проблемы

не паникуйте
источник
6
Пробовал с Gradle 4.1, не работал, но обходной путь (создание папки mipsel-linux-android-dummy) работал. Спасибо @lazybug.
2
@Girish обновить Android Gradle Plugin в build.gradleфайле верхнего уровня , что-то вроде com.android.tools.build:gradle:3.2.0-rc02, а не версию Gradle
не паникуйте
4
Упомянутый здесь # 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
обходной путь
16
На Windows: mklink /d mips64el-linux-android aarch64-linux-android-4.9и mklink /d mipsel-linux-android arm-linux-androideabi-4.9у меня тоже работает.
Митч
Обходной путь «на Mac» работает нормально (адаптируйте ~ / часть библиотеки). Но следующее обновление NDK (2018, 14 октября) обнаружило целую кучу неожиданных файлов в деревьях mips *. Неудивительно. Поэтому я снова удалил символические ссылки.
Quigi
66

Для Android студии 3.2.1+

Обновите свой плагин Gradle

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

Если вы сейчас получаете эту ошибку:

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

просто добавьте google () в свои репозитории, например так:

repositories {
    google()
    jcenter()
}

Удачного кодирования - :)

Никунь Парадва
источник
1
Это реальное решение
Martin
1
Проверьте эту ветку с тремя вариантами решения этой проблемы
shizhen
55

Я исправил эту ошибку, удалив NDK в SDK-Tools. Итак, если вам не нужен NDK, удалите его.

Herzi
источник
7
Что если мне понадобится NDK?
Игорь Ганапольский
то же самое здесь, если мы хотим NDK, то каково решение для этого?
Брижеш Джоши
Это исправлено, если удалить NDK, но если вам нужно использовать NDK, пожалуйста, проверьте это stackoverflow.com/a/51589406/6533853
Ninja
Чтобы удалить, следуйте этому stackoverflow.com/a/52207450/2768515
Chetan
35

Я столкнулся с той же проблемой при обновлении Android Studio с 2.0 до 2.1 на моем компьютере с Windows 8.

Я нашел решение для этого. Пожалуйста, используйте следующие шаги.

  1. Загрузите Android NDK для Windows с https://developer.android.com/ndk/downloads/index.html .
  2. Извлеките то же самое и скопируйте папку «toolchain» из комплекта.
  3. Вставьте папку в установленную папку NDK в C: \ android-sdk-win \ ndk-bundle. [Установленный путь может отличаться в зависимости от вашей установки]
  4. Перезапустите андроид студию.

Это происходит потому, что студия Android не получит полное обновление NDK на стабильном канале. Если вы не используете NDK для разработки своего проекта, вы можете просто удалить папку NDK из своего каталога SDK.

Nithinjith
источник
1
Работает с Android Studio 3.2!
maxwellnewage
1
Это также помогло мне исправить ошибку " Error : Android MIPS ToolChain directory "" does not exist" в Game Maker Studio 2 на Mac. Но мне нужно было получить версию 17c NDK отсюда: developer.android.com/ndk/downloads/older_releases (согласно: reddit.com/r/gamemaker/comments/9m958a/… ) Спасибо @nithinjith! ... все еще не строит, однако, необходимо решить:Android NDK: Please fix the APP_ABI definition in /Users/../Library/Android/sdk/ndk-bundle/build/core/default-application.mk
Крис
33

Сообщение об ошибке: «В папке наборов инструментов NDK для ABI не найдены цепочки инструментов с префиксом: llvm».

После новой веб-установки Android Studio с NDK я импортировал пример кода Android, который использовал NDK из GitHub, и попытался скомпилировать его.

В результате возникла ошибка:

В папке наборов инструментов NDK для ABI не найдено никаких цепочек инструментов с префиксом: llvm

Решение: по некоторым причинам в процессе стандартной установки на macOS не удалось установить полный набор:

~/Library/Android/sdk/ndk-bundleпропустил папку toolchainsсо всеми инструментами,

(это должно быть так: ~/Library/Android/sdk/ndk-bundle/toolchains)

Решением было скачать NDK отдельно, открыть его, скопировать папку toolchainи вставить ее в папку:

~/Library/Android/sdk/ndk-bundle

После этого у меня все получилось.

Джеймс Т Снелл
источник
в моем случае он есть, но там нет файла с префиксом aarch64-linux-android . Любое предложение !!
Код
папка 'mips64el-linux-android-4.9' & 'mipsel-linux-android-4.9' недоступна после пакета ndk 16, поэтому мне нужно скачать и добавить эти две папки в пакет android sdk внутри папки toolchains, следовательно, проблема решена, но не понял, почему эта ошибка?
Фазаль
Проверьте эту ветку с тремя вариантами решения этой проблемы
shizhen
22

Шаг за шагом:

1) Откройте страницу со старыми версиями NDK :

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

введите описание изображения здесь

2) Согласитесь с условиями:

введите описание изображения здесь

3) Загрузите старую версию NDK(например, 16b):

введите описание изображения здесь

4) Откройте свой toolchainsкаталог.

5) Перенесите нужные файлы из toolchainsпапки загруженного zip-файла в вашу toolchainsпапку:

введите описание изображения здесь

6) Перестройте проект:

введите описание изображения здесь


UPD 30 сентября 2018:
я использовал Android NDK Revision r16b для исправления этой ошибки в моем собственном случае. Итак, я представляю пример с этой версией.
Но лучше использовать Android NDK, Revision r17c (июнь 2018 года). Это последний, поддерживающий mips (разумный рекомендация из комментария Weekend).

V.March
источник
Вместо (for example 16b)этого лучше уточнить, какая версия NDK является последней, поддерживающей mips. в примечании к выпуску Android NDK Revision r17c (июнь 2018 г.) : поддержка ARMv5 (armeabi), MIPS и MIPS64 удалена. Попытка построить любой из этих ABI приведет к ошибке. Это 16bточно.
Выходные
@ Выходные Спасибо за вашу рекомендацию. Я добавил это в свой ответ.
Марч
1
@vmarch Извините, но это 16bточно. r17c - первая версия, которая убрала поддержку MIPS :)
Weekend
1
@ О, я так быстро прочитала твой предыдущий комментарий. Вот почему я упустил суть. Мои извинения! Но эти файлы все еще присутствуют в Android NDK, редакция r17c (июнь 2018 года). И в 18 версии они были окончательно удалены. Просто загляните в архив. developer.android.com/ndk/downloads/…
V.March
@vmarch Молодец! Я не проверял архив r17c, просто сделал вывод из предыдущего замечания.
Выходные
17

Не загружая, не копируя и не вставляя символические ссылки, я смог «исправить» ошибку, просто создав пустой каталог, в котором более старая версия плагина Android Gradle ожидает удаленный набор инструментов mips:

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

Очевидно, $ANDROID_HOMEуказывает на корень установки Android SDK здесь. Если вы используете MacOS , замените linux-x86_64с darwin-x86_64в команде выше. На винде пользуйся windows-x86_64.

friederbluemle
источник
Работал как шарм.
Акбар Ша Эбрахим
Зависит от того, к чему относится ваш проект. Не работает для меня, но это хороший и простой трюк для некоторых. Мне пришлось скопировать настоящий набор инструментов, чтобы избавиться от ошибки.
Мартин Заске
11

Я удалил NDK, так как он мне не нужен. Зайдите в менеджер SDK на Android студии (Инструменты -> Android -> Менеджер SDK). Если NDK установлен. Просто снимите флажок и нажмите ОК. Установленные компоненты будут удалены.

diptia
источник
8

В моем случае эта ошибка возникла при создании нового Android Studio (Android studio 3.2.1) Java Project с

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

Так что я понижен до

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

Не лучшее решение остается в более старой версии, но, возможно, это просто временная ошибка в бета-версии, поскольку путь NDK в local.properties остается тем же, но среда IDE больше не жалуется

Мариан Клюспи
источник
Я думаю, что это ошибка устаревшего плагина Gradle. Просто обновитесь до последней. Это помогло мне (с 3.0 до 3.2.0-beta05 в моем случае)
AnoDest
Я думаю, что это
улучшено, а
7

Android NDK 18.0 *, похоже, имеет проблему, не создавая все файлы в папках после извлечения. Из-за этого произойдет сбой компиляции вашего приложения, использующего сборки ndk.

Лучше использовать версию NDK 17.1 * ( https://developer.android.com/ndk/downloads/ ) и т. Д., И вы можете извлечь или использовать извлечение из android studio в ndk-bundle, по умолчанию будет работать хорошо.

appapurapu
источник
5

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

Для людей, которые пробуют этот пример и сталкиваются с проблемами с последним NDK. Можете следовать этому решению. В build.gradle измени это

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

к

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

Причина в том, что mips устарели в последних версиях ndk, Gradle версии 3.1.2 не будет принуждать mips. Предполагается наличие этих отсутствующих папок.

Суджит Роял
источник
4

Откройте Android Studio, перейдите в Инструменты, затем Android и затем SDK, снимите флажок NDK, если вам это не нужно, и перезапустите Android Studio.

Мухаммед Билал
источник
3

В вашем проекте уровень файла Gradle увеличьте версию пути класса зависимостей от низкого до высокого, как

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

изменить как

dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
Картикеян Д.С.
источник
3

Решил это, добавив google()зависимости в оба репозитория в build.gradle(Project: ProjectName). затем синхронизируйте ваш проект

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
источник
2

У меня была похожая проблема, но я хотел использовать версию NDK r9d из-за требований проекта.

В local.propertiesпути было установлено, ndk.dir=C\:\\Android\\ndk\\android-ndk-r9dно это приводит к проблеме:

В папке наборов инструментов NDK для ABI не найдено никаких цепочек инструментов с префиксом: [toolchain-name]

Решением было:

  1. Установите новейший NDK с помощью sdk manager
  2. Скопируйте отсутствующий набор инструментов [имя набора инструментов] из нового ndk в старый. В моем случае от sdk\ndk-bundle\toolchainsдо\ndk\android-ndk-r9d\toolchains
  3. Повторите процесс, пока все необходимые наборы инструментов не будут там

Мне кажется, что скопированные цепочки инструментов не используются, но по какой-то причине они необходимы.

Марчин Кунерт
источник
2

Я решил этот вопрос, установив ndk, потому что он мне не нужен

альфа
источник
2

Вот исправление.

При компиляции проекта в android studio я иногда сталкиваюсь с:

Ошибка: в папке наборов инструментов NDK для ABI не найдено никаких цепочек инструментов с префиксом: arm-linux-androideabi / llvm

Это может быть вызвано обновлением связанных компонентов. Решение для Android студии (Инструменты -> Android -> SDK Manager). Выберите элемент ndk и удалите его. Если программа нуждается в этом, вы можете переустановить его. Это обеспечит правильность расположения папки и не будет такой проблемы.

0xAliHn
источник
2

Чтобы исправить это, как я сделал

Android Studio File> структура проекта и переход к проекту

изменить версию Gradle на 4.6 и версию плагина Android на 3.2.1

проверить скриншот

затем очистите проект, если вы получили эту ошибку «Не удалось найти aapt2-proto.jar»

перейти к build.gradle (проект)

Попробуйте переместить метод google () (файл .gradle) в верхнюю часть его блока выполнения, в порядке поиска репозиториев, в которых он ищет, что вызывает проблему.

например, измените это:

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

К этому:

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

Внесите эти изменения в "buildscript" и "allprojects"

проверить скриншот

Если вы не нашли Google (), добавьте его

Bachlil
источник
2

Для Android Studio 3.2.1 Обновите свой

Gradle версия 4.6

Плагин Android версии 3.2.1

Masum
источник
2

Проблема возникает главным образом, когда вы клонируете предыдущий проект специально из github. Что вы можете сделать, это

  1. Изменить путь к классу

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

в вашем проекте Gradle.

  1. Затем измените все экземпляры компиляции с помощью реализации, за исключением compileSdkVersion, оставьте его в том же состоянии, что и на уровне приложения.

  2. Вместо синхронизации теперь нажмите на make project (Ctrl + F9)

  3. При необходимости добавьте репозитории Google Maven.

  4. Обновите упаковщик Gradle, если это необходимо.

(IDE Android Studio попросит / покажет вам то же самое для шагов 4 и 5)

это исправляет !! Наслаждайтесь кодированием

Аакаш Бирари
источник
2

ПРИМЕЧАНИЕ. Этот ответ, по-видимому, относится к:, No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-androidно здесь он был связан с помощью:

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

Из НДК р19б:

more ~/Android/Sdk/ndk-bundle/CHANGELOG.md
  • Эта версия NDK несовместима с плагином Android Gradle версии 3.0 или более ранней. Если вы видите такую ​​ошибку No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android, обновите файл проекта до [используйте плагин версии 3.1 или новее]. Вам также нужно будет обновить до Android Studio 3.1 или новее.
nikc
источник
1

Если вы не используете NDK, сбросьте переменную окружения ANDROID_NDK_HOME.

Cristan
источник
1

Для меня я думаю, что может быть некоторая проблема при установке Android NDK из Android Studio. Я смог решить эту проблему следующим образом

Скачал андроид ндк с

https://developer.android.com/ndk/downloads/index.html

и поместил внутри ndk-bundle (где установлен ваш Android SDK). Для получения дополнительной информации проверьте эти экраны.

https://app.box.com/s/dfi4h9k7v4h0tmbu3z9qnqx3d12fdejn

Чираг Пурохит
источник
1

Если вы используете Ionic 3 Удалите ndk из инструментов Android Studio SDK.

Таймур Тарик
источник
Великолепно, как временное решение для конкретной необходимости построения ионных андроидных проектов, хотя и не идеально.
MFAL
1

Найдите свой локальный Android-SDK, если вы загрузите соответствующий SDK из ndk, там будет папка под названием «ndk-bundle»

введите описание изображения здесь

Внутри есть папка "toolchains".

введите описание изображения здесь

Мы заметили, что внутри mips64el нет связанных файлов.

введите описание изображения здесь

Решение заключается в следующем:

Нажмите здесь, чтобы загрузить пакет NDK отдельно через браузер. После распаковки откройте папку «toolchains», сравните ее с папкой android-sdk-> ndk-bundle-> toolchains, найдите отсутствующую папку, скопируйте последние 3. Перекомпилируйте, проблема решена. Надеюсь, это поможет вам, приятель

принц
источник
1

Столкнувшись с той же проблемой.

Я добился успеха следующими способами.

Откройте свой файл buldle.gradle и обновите версии, чтобы они следовали обоим classpath

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

Затем выполните синхронизацию, а затем получите один файл для обновления версии Gradle, а затем нажмите на эту ссылку и дождитесь загрузки всех необходимых обновлений (надеюсь, Интернет доступен). После долгого времени вы получили успех.

субхаш гайквад
источник
1

Сначала попробуйте обновить версию ndk https://developer.android.com/ndk/downloads/.

Если это не работает, вы можете попробовать следующее:

  • Создать папку

    Перейдите в папку Sdk \ ndk-bundle \ toolchains (в моем случае это C: \ Users \ USER \ AppData \ Local \ Android \ Sdk \ ndk-bundle \ toolchains; вы можете найти свой в File-> Structure Project-> SDK местоположение в вашей студии android) и создайте папку с именем, которое показано как отсутствующее в ошибке, например: если ошибка

    Сбой синхронизации Gradle: в папке наборов инструментов NDK для ABI не найдено цепочек инструментов с префиксом: mipsel-linux-android

    Затем создайте папку с именем mipsel-linux-android

  • Включить содержимое Снова перейдите в папку Sdk \ ndk-bundle \ toolchains и откройте любую папку, которая уже есть в ней. Например: Sdk \ ndk-bundle \ toolchains \ aarch64-linux-android-4.9 (в моем случае C: \ Users \ USER \ AppData \ Local \ Android \ Sdk \ ndk-bundle \ toolchains \ aarch64-linux-android-4.9) скопируйте предварительно созданную папку в папку, созданную на последнем шаге

  • Запустите проект еще раз, и он будет работать

Надеюсь, поможет!!

Dismi Paul
источник
1

В моем ограниченном опыте с этим вопросом я пытаюсь решить проблему, используя следующий метод:

1. Оставьте версию инструментов сборки Android такой же, как и версию Gradle. Например: если вы используете версию инструментов сборки 3.3.0, ваша версия Gradle должна быть 4.10.1. Вы можете ссылаться по ссылке https://developer.android.com/studio/releases/gradle-plugin и chagne вашего инструменты сборки и версия Gradle в вашей AS (Файл-> Структура проекта-> Проект)

2.Если метод1 не работает, вы можете настроить версию набора инструментов ndk для решения проблемы: например, скачать ndk18 или ndk16, указав путь ndk для вашей AS (Файл-> Структура проекта-> Расположение SDK-> Расположение Android NDK)

廖志伟
источник
1

Перейдите к C:\Users\lalit\AppData\Local\Android\Sdk\ndk-bundle\toolchains.

Теперь найдите имя папки aarch64-linux-android-4.9и переименуйте его в mips64el-linux-android.

Перезапустите приложение для Android.

BlackHat Gaming
источник