Помилка: у папці ланцюжків інструментів NDK для ABI з префіксом: llvm не знайдено ланцюжків інструментів


207

Я хочу скласти андроїд з відкритим кодом (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. Я не знаю, чи варто згадувати щось інше, тому коментуйте, якщо вам потрібна якась інформація.


Спробуйте оновити інструменти gradle. classpath 'com.android.tools.build:gradle:3.2.0-beta05'
Photon Point

використовуйте версію developer.android.com/ndk/downloads/older_releases та Android NDK, версія 16b (грудень 2017 року), щоб завантажити потрібні папки та виправити проблему.
Панаш

Відповіді:


376

Минуло два роки, тепер, якщо ви зіткнетесь тут, можливо, ви натрапите на повідомлення про помилку на зразок цього:

У папці ланцюжків інструментів NDK для ABI не знайдено ланцюжків інструментів з префіксом mips64el-linux-android

або

У папці ланцюжків інструментів NDK для ABI не знайдено ланцюжків інструментів з префіксом mipsel-linux-android

Останній NDK видалив підтримку для mipsabi, а більш рання версія плагіну для android gradle все ще перевіряє наявність інструментів mips. дивіться тут для отримання додаткової інформації .

Рішення : Оновіть плагін для android gradle до 3.1 або новіших.

наприклад Додайте наступне у ступінь проекту gradle [28-вересня 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 у 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
Avijeet Dutta

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 *. Не дивно. Тому я знову видалив символічні посилання.
Квіджі

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
Це справжнє рішення
Мартін


55

Я виправив цю помилку, видаливши NDK в інструментах SDK. Отже, якщо вам не потрібен NDK, видаліть його.


7
Що робити, якщо мені потрібен NDK?
ІгорГанапольський

тут же, якщо ми хочемо, NDK, то яке рішення для цього?
Brijesh Joshi

Його виправлено, якщо видалити NDK, але якщо вам потрібно було використовувати NDK, будь ласка, перевірте це stackoverflow.com/a/51589406/6533853
Ninja,

Щоб видалити, слідкуйте за цим stackoverflow.com/a/52207450/2768515
Четан

35

Я зіткнувся з тією ж проблемою під час оновлення Android-студії з 2,0 до 2,1 на своїй машині Windows 8.

Я знайшов рішення для цього. Отримайте наступні кроки.

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

Це відбувається тому, що Android-студія не отримає повного оновлення NDK на стабільному каналі. Якщо ви не використовуєте NDK для розробки свого проекту, ви можете просто видалити папку NDK зі свого каталогу SDK.


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
kris

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 . Будь-яка пропозиція !!
CoDe

папка 'mips64el-linux-android-4.9' та 'mipsel-linux-android-4.9' недоступні після пакету ndk 16, тому мені потрібно завантажити та додати ці дві папки в пакет пакетів sidk android всередині папки інструментів, отже, проблему вирішено, досі не зрозумів, чому ця помилка?
Фазал


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 року). Це останній, підтримуючи пробіг (розумний рекомендаційний коментар з коментаря Weekend).


Замість (for example 16b)цього краще уточнити, яка версія NDK є останньою опорною версією. через примітку до випуску Android NDK Revision r17c (червень 2018 року) : підтримка ARMv5 (Armeabi), MIPS та MIPS64 була видалена. Спроба побудувати будь-який з цих ІВВ призведе до помилки. Це 16bсаме так.
вихідні

@Weekend Дякуємо за вашу рекомендацію. Я додав це до своєї відповіді.
V.March

1
@vmarch Вибачте , але це 16bточно. r17c - перша версія, яка видалила підтримку MIPS :)
вихідні

1
@ О, я так швидко прочитав ваш попередній коментар. Тому я пропустив суть. Вибачте! Але ці файли все ще присутні в Android NDK, Revision 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 windows-x86_64.


Працював як шарм.
Акбар Ша Ебрагім

Залежить від того, на що йдеться у вашому проекті. Не працював для мене, але приємний і простий трюк для деяких. Мені довелося скопіювати справжню ланцюжок інструментів, щоб позбутися помилки.
Мартін Заске

11

Я видалив NDK, оскільки мені це не потрібно. Перейдіть до менеджера SDK на студії Android (Інструменти -> Android -> Менеджер SDK). Якщо встановлено NDK Просто зніміть прапорець і натисніть кнопку ОК. Встановлені компоненти будуть видалені.


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-бета05 в моєму випадку)
AnoDest

Я думаю, що оновлення не погіршилось ... P
Shylendra Madda

7

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

Краще скористатися версією NDK 17.1 * ( https://developer.android.com/ndk/downloads/ ) тощо, і ви можете витягнути або використовувати витяг андроїд-студії для ndk-пакету за замовчуванням, буде добре.


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'

Причина в тому, що мипи застаріли в останніх версіях ndk, версія Gradle 3.1.2 не матиме примусу до пробірок. Передбачається наявність цих відсутніх папок.


4

Відкрийте Android Studio, перейдіть до Інструменти, потім Android, а потім SDK, зніміть прапорець NDK Якщо вам цього не потрібно, і перезапустіть android studio.


3

У файлі Gradle на рівні проекту збільште залежність версії classpath від низької до високої

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()
    }
}


2

У мене була подібна проблема, але я хотів використовувати версію NDK r9d через вимоги проекту.

В local.properties шляху було встановлено, ndk.dir=C\:\\Android\\ndk\\android-ndk-r9dале це призведе до проблеми:

У папці ланцюгів інструментів NDK для ABI з префіксом не знайдено ланцюжків інструментів: [toolchain-name]

Рішення полягало в тому, щоб:

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

Мені здається, що скопійовані ланцюжки інструментів не використовуються, але чомусь їм потрібно, щоб вони були там.


2

Я вирішив це питання UnInstalled ndk, тому що мені це не потрібно


2

Ось виправлення.

Складаючи проект в студії Android, я час від часу стикаюся:

Помилка: у папці ланцюжків інструментів NDK для ABI не знайдено ланцюжків інструментів з префіксом: arm-linux-androideabi / llvm

Це може бути викликано оновленням пов'язаних компонентів. Рішення - студія Android (Інструменти -> Android -> Менеджер SDK). Виберіть елемент ndk та видаліть його. Якщо програма потребує цього, ви можете її знову встановити. Це забезпечить правильність розташування папки і не виникне такої проблеми.


2

Щоб виправити це, як я

Файл Android Studio> структура проекту та перейдіть до проекту

змінити версію 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 (), додайте його


2

Для Android Studio 3.2.1 оновіть свій

Версія Gradle 4.6

Плагін Android версії 3.2.1


2

Проблема виникає здебільшого, коли ви клонуєте попередній проект спеціально з github. Що ти можеш зробити - це

  1. Змініть класний шлях на

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

у вашому рівні проекту.

  1. Потім змініть всі екземпляри компіляції з реалізацією, крім compileSdkVersion, збережіть її так, як є у вашому рівні програми.

  2. Замість синхронізації натисніть на зробити проект (Ctrl + F9)

  3. Додати необхідні сховища google maven.

  4. Оновіть обгортку граду, якщо потрібно.

(Android Studio IDE попросить / вкаже вам те саме для кроків 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

Від NDK r19b:

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 або новішої версії.

1

Якщо ви не використовуєте NDK, зніміть змінну середовища ANDROID_NDK_HOME.


1

Для мене, я думаю, може бути якась проблема встановлення Android NDK від студії Android. Мені вдалося вирішити це наступним чином

Завантажено Android ndk від

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

і розміщується всередині ndk-пакета (де встановлено ваш android sdk). Для отримання додаткової інформації перевірте ці екрани.

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


1

Якщо ви використовуєте Ionic 3 Видаліть ndk з інструментів sdk для android studio.


Чудово, як тимчасове рішення для конкретної потреби побудови іонних андроїдних проектів, хоча це не ідеально.
MFAL

1

Знайдіть свій власний локальний Android-SDK, якщо ви завантажите відповідний SDK ndk, буде папка під назвою "ndk-bundle"

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

Всередині знаходиться папка під назвою "ланцюжки інструментів".

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

Ми помітили, що всередині файлів, пов’язаних з mips64el, немає.

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

Рішення полягає в наступному:

Клацніть тут, щоб завантажити пакет NDK окремо через браузер. Після розпакування відкрийте папку «ланцюжки інструментів», порівняйте її з папкою «android-sdk-> ndk-bundle->», знайдіть папку, що відсутня, скопіюйте минулу 3. Перекомпілюйте, проблема вирішена. Сподіваюсь, це допоможе тобі товаришувати


1

Стосовно ж випуску.

Я мав успіх наступними способами.

Відкрийте файл buldle.gradle та оновіть версії для наступних обох класів

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; ви можете знайти своє в меню Файл-> Структура проекту-> 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: \ Користувачі \ USER \ AppData \ Local \ Android \ Sdk \ ndk-bundle \ toolchains \ aarch64-linux-android-4.9) скопіюйте в неї попередньо вбудовану папку в папку, яку ми створили на останньому кроці

  • Запустіть проект ще раз, і він запрацює

Сподіваюся, це допомагає !!


1

У моєму обмеженому досвіді з цим питанням я намагаюся вирішити проблему із застосуванням методу "follow":

1.Зберігайте версії інструментів для збирання андроїд те саме, що і версія gradle. Наприклад: якщо ви використовуєте інструменти збирання версії 3.3.0, ваша версія gradle має бути 4.10.1. Ви можете посилатися за посиланням https://developer.android.com/studio/releases/gradle-plugin і змінити свій побудувати інструменти та версію 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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.