Hata: ABI için NDK araç zincirleri klasöründe önek: llvm olan hiçbir alet zinciri bulunamadı


207

Ben gradel ( gradlew clean build) kullanarak bir açık kaynak android proje (Netguard) derlemek istiyorum Ama bu hatayla karşılaştı:

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

Ben hırpaladım ama enything yardımcı bulamadık. İşte ana 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
}

Ve burada build.gradlebir appproje:

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

Ve kullanıyorum gradle-2.9-allve android-ndk-r10e. Başka bir şeyden bahsetmem gerekip gerekmediğini bilmiyorum, bu yüzden herhangi bir bilgiye ihtiyacınız varsa yorum yapın.


Gradle araçlarını güncellemeye çalışın. sınıf yolu 'com.android.tools.build:gradle:3.2.0-beta05'
Photon Point

Kullanım developer.android.com/ndk/downloads/older_releases gerekli klasörleri indirmek ve sorunu gidermek için Android NDK, Revizyon 16b (2017 Aralık) sürümü.
Panache

Yanıtlar:


376

İki yıl geçti, şimdi buraya rastlarsanız, muhtemelen böyle bir hata mesajıyla karşılaşabilirsiniz:

Mips64el-linux-android önekine sahip ABI için NDK araç zincirleri klasöründe hiçbir araç zinciri bulunamadı

veya

Mipsel-linux-android önekine sahip ABI için NDK araç zincirleri klasöründe hiçbir alet zinciri bulunamadı

En son NDK, mipsabi desteğini kaldırdı ve android gradle eklentisinin önceki sürümü hala mips araç zincirinin varlığını kontrol ediyor. daha fazla bilgi için buraya bakın .

Çözüm : Android gradle eklentisini 3.1 veya daha yeni bir sürüme yükseltin.

Örneğin, proje düzeyi grubuna aşağıdakileri ekleyin [28-Eylül-2018]

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

Çözüm : mipsel-linux-androidAracı kandırmak için klasör yapısı oluşturun . En kolay yol sembolik bağ kurmaktır 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

Bu konu kontrol üç seçenekten Bu tür bir sorunu çözmek için


6
Gradle 4.1 ile denendi, işe yaramadı, ancak geçici çözüm (klasör mipsel-linux-android-kukla oluşturma) çalıştı. Teşekkürler @lazybug.

2
@Girish Android Gradle Plugin'i üst düzey build.gradledosyada yükseltin com.android.tools.build:gradle:3.2.0-rc02, Gradle sürümü değil gibi bir şey
panik yapmayın

4
Burada bahsedilen # 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
geçici

16
Windows'ta: mklink /d mips64el-linux-android aarch64-linux-android-4.9ve mklink /d mipsel-linux-android arm-linux-androideabi-4.9benim için de çalıştı.
Mitch

"Mac'te" geçici çözümü sorunsuz çalışır (~ / Library bölümünü uyarla). Ancak NDK'nin bir sonraki güncellemesi (14 Ekim 2018), mips * ağaçlarında bir sürü beklenmedik dosya buldu. Şaşırtıcı değil. Böylece sembolik bağlantıları tekrar kaldırdım.
Quigi



35

Windows 8 makinemde Android stüdyosunu 2.0'dan 2.1'e güncellerken aynı sorunla karşılaştım.

Bunun için bir çözüm buldum.Lütfen aşağıdaki adımları uygulayın.

  1. Windows için android NDK'yi https://developer.android.com/ndk/downloads/index.html adresinden indirin .
  2. Aynı ayıklayın ve "toolchain" klasörünü paketten kopyalayın.
  3. Klasörü C: \ android-sdk-win \ ndk-bundle altında kurulu NDK klasörünün altına yapıştırın. [Yüklü yol kurulumunuza bağlı olarak değişebilir]
  4. Android stüdyosunu yeniden başlatın.

Android Studio kararlı kanalda tam NDK güncellemesi alamayacağından bu oluyor. Proje geliştirme için NDK kullanmıyorsanız, NDK klasörünü SDK dizininizden kaldırabilirsiniz.


1
Android Studio 3.2 ile çalışır!
maxwellnewage

1
Bu da Error : Android MIPS ToolChain directory "" does not existMac için Game Maker Studio 2'deki " " hatasını düzeltmek için çalıştı . Ama buradan NDK'nın 17c sürümünü almam gerekiyordu: developer.android.com/ndk/downloads/older_releases (göre: reddit.com/r/gamemaker/comments/9m958a/… ) Teşekkürler @nithinjith! ... yine de bina değil, çözmek gerekir:Android NDK: Please fix the APP_ABI definition in /Users/../Library/Android/sdk/ndk-bundle/build/core/default-application.mk
kris

33

Hata mesajı: “ABI için NDK araç zincirleri klasöründe önek: llvm olan hiçbir alet zinciri bulunamadı”.

Android Studio'nun NDK ile yeni web kurulumundan sonra, GitHub'dan NDK kullanan bir Android kod örneği içe aktardım ve derlemeye çalıştım.

Sonuç olarak bir Hata oluştu:

ABI için NDK araç zincirleri klasöründe önek bulunan hiçbir araç zinciri bulunamadı: llvm

Çözüm: Bazı nedenlerden ötürü macOS'ta standart kurulum işlemi komple bir set kuramadı:

~/Library/Android/sdk/ndk-bundletoolchainstüm araçlarla klasörü kaçırmıştı ,

(Bu böyle olmalı: ~/Library/Android/sdk/ndk-bundle/toolchains)

Çözüm, NDK'yı ayrı ayrı indirmek, açmak, klasörü kopyalamak toolchainve klasöre yapıştırmaktı:

~/Library/Android/sdk/ndk-bundle

Ondan sonra benim için iyi çalıştı.


benim durumum var ama aarch64-linux-android öneki ile hiçbir dosya var . Herhangi bir öneri !!
CoDe

klasör 'mips64el-linux-android-4.9' & 'mipsel-linux-android-4.9' ndk paket 16'dan sonra kullanılamaz, bu yüzden android sdk paketindeki bu iki klasörü indirip araç zincirleri klasöründe eklemeliyim, bu yüzden sorun çözüldü, yine de neden bu hatayı anlamadım?
Fazal


22

Adım adım:

1) Eski NDK sürümleriyle sayfayı açın :

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

resim açıklamasını buraya girin

2) Şartları kabul edin:

resim açıklamasını buraya girin

3) eski sürümünü indirin NDK(örneğin 16b):

resim açıklamasını buraya girin

4) Dizininizi açın toolchains.

5)toolchains İndirdiğiniz zip dosyasının klasöründen ihtiyacınız olan dosyaları klasörünüze aktarın toolchains:

resim açıklamasını buraya girin

6) Projeyi Yeniden İnşa Et:

resim açıklamasını buraya girin


UPD 30 Eyl 2018:
Bu hatayı kendi durumumda düzeltmek için Android NDK Revizyon r16b'yi kullandım. Bu örneği bu örnekle sunuyorum.
Ancak Android NDK, Revision r17c'yi (Haziran 2018) kullanmak daha iyidir. Sonuncusu, mipsleri destekliyor (Haftasonu'nun yorumundan makul tavsiye).


Bunun yerine, (for example 16b)hangi NDK versiyonunun destek miplerini destekleyen son sürüm olduğunu açıklığa kavuşturmak daha iyidir. Android NDK Revizyon r17c (Haziran 2018) sürüm notu aracılığıyla : ARMv5 (armeabi), MIPS ve MIPS64 desteği kaldırıldı. Bu ABI'lerden herhangi birini oluşturmaya çalışmak hatayla sonuçlanır. Bu var 16bkesinlikle.
Hafta Sonu

@Weekend Tavsiyeniz için teşekkürler. Cevabıma ekledim.
V.Mart

1
@vmarch Üzgünüz ama O var 16bkesinlikle. r17c, MIPS desteğini kaldıran ilk sürümdür :)
Hafta Sonu

1
@Oh, önceki yorumunuzu çok hızlı okudum. Bu yüzden noktayı kaçırdım. Özür dilerim! Ancak bu dosyalar Android NDK, Revision r17c'de (Haziran 2018) hala mevcut. Ve sürüm 18'de nihayet kaldırıldı. Sadece arşive bakın. developer.android.com/ndk/downloads/…
V.March

@vmarch Aferin! R17c arşivini kontrol etmedim, sadece önceki notu sürüm notlarından çıkarımda bulundum.
Haftasonu

17

Herhangi bir şey indirmeden, kopyalamadan veya symlinking yapmadan, Android Gradle eklentisinin eski sürümünün kaldırılan mips araç zincirini beklediği boş bir dizin oluşturarak hatayı "düzeltebilirim":

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

Açıkçası, $ANDROID_HOMEburada Android SDK kurulumunun köküne işaret ediyor. MacOS kullanıyorsanız , yukarıdaki komutta linux-x86_64ile değiştirin darwin-x86_64. Windows üzerinde kullanın windows-x86_64.


Cazibe gibi çalıştı.
Akbar Sha Ebrahim

Projenizin ne anlama geldiğine bağlıdır. Benim için çalışmadı, ama bazıları için güzel ve basit bir numara. Hatadan kurtulmak için gerçek araç zincirini kopyalamak zorunda kaldım.
Martin Zaske

11

İhtiyacım olmadığı için NDK'yı kaldırdım. Android stüdyosunda SDK yöneticisine gidin (Araçlar -> Android -> SDK Yöneticisi). NDK kurulu ise. Sadece kutunun işaretini kaldırın ve Tamam'ı tıklayın. Kurulu bileşenler silinecektir.


8

Benim durumumda, bu hata yeni bir Android Studio (Android studio 3.2.1) ile Java Project oluştururken meydana geldi.

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

Bu yüzden

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

En iyi çözüm daha eski bir sürümde kalmaz, ancak local.properties'teki NDK yolu hala aynı olduğundan, beta'da geçici bir hata olabilir , ancak IDE artık şikayet etmiyor


Bence bu modası geçmiş gradle eklentisinin bir hatası. Sadece en son sürüme güncelleyin. Bana yardımcı oldu (benim durumumda 3.0'dan 3.2.0-beta05'e kadar)
AnoDest

Bence yükseltilmiş değil yükseltilmiş ... P
Shylendra Madda

7

Android NDK 18.0 *, çıkarıldıktan sonra klasörlerde tüm dosyaları oluşturmada bir sorun var gibi görünüyor. Bu nedenle, ndk derlemelerini kullanan uygulama derlemeniz başarısız olur.

Daha iyi NDK 17.1 * ( https://developer.android.com/ndk/downloads/ ) vb sürümünü kullanmaktır ve varsayılan olarak ndk-bundle için android stüdyo ayıklama veya kullanabilirsiniz iyi çalışır.


5

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

Bu örneği deneyen ve en son NDK ile ilgili sorunlarla karşılaşan insanlar için. Bu çözümü takip edebilir. Build.gradle'de bunu değiştirin

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

için

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

Bunun nedeni, miplerin en son ndk sürümlerinde kullanımdan kaldırılmasıdır, Gradle sürüm 3.1.2, mipsler için bir zorlamaya sahip olmayacaktır. Bu eksik klasörlerin varlığını varsayar.


4

Android Studio'yu açın, Araçlar'a, ardından Android'e ve ardından SDK'ya gidin, buna ihtiyacınız yoksa NDK'nin işaretini kaldırın ve android studio'yu yeniden başlatın.


3

Proje seviyenizde Gradle dosyanız sınıf bağımlılığı versiyonunu düşükten yükseğe artırın

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

gibi değiştirmek

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

3

(Project: ProjectName) google()içindeki her iki depoya bağımlılık ekleyerek çözüldü build.gradle. sonra projenizi senkronize edin

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

Benzer bir sorun yaşadım, ancak proje gereksinimleri nedeniyle NDK sürümü r9d kullanmak istedim.

In local.propertiesyoluna ayarlandı ndk.dir=C\:\\Android\\ndk\\android-ndk-r9dancak soruna kurşun olun:

ABI için NDK araç zincirleri klasöründe önek bulunan hiçbir araç zinciri bulunamadı: [toolchain-name]

Çözüm:

  1. SDK yöneticisini kullanarak en yeni NDK'yı yükleyin
  2. Eksik araç zincirini [toolchain-name] yeni ndk'den eskisine kopyalayın. Benim durumda sdk\ndk-bundle\toolchainsetmek\ndk\android-ndk-r9d\toolchains
  3. Gerekli tüm takım zincirleri orada olana kadar işlemi tekrarlayın

Bana öyle geliyor ki kopyalanan alet zincirleri kullanılmıyor, ama bir nedenden dolayı orada olmaları gerekiyor.


2

Bu soruyu Untstalled ndk ile çözdüm, çünkü buna ihtiyacım yok


2

İşte düzeltme.

Android stüdyosunda bir proje derlerken, bazen karşılaşıyorum:

Hata: ABI için NDK araç zincirleri klasöründe önek bulunan hiçbir araç zinciri bulunamadı: arm-linux-androideabi / llvm

Bunun nedeni, ilgili bileşenlerin güncellenmesi olabilir. Çözüm Android stüdyosudur (Araçlar -> Android -> SDK Yöneticisi). Ndk öğesini seçin ve silin. Programın ihtiyacı varsa, yeniden yükleyebilirsiniz. Bu, klasör konumunun doğru olmasını sağlar ve böyle bir sorun olmaz.


2

Yaptığım gibi düzeltmek için

Android Studio Dosyası> proje yapısı ve projeye git

Gradle sürümünü 4.6 ve Android eklentisi sürümünü 3.2.1 olarak değiştirin

ekran görüntüsünü kontrol et

sonra bu hatayı "aapt2-proto.jar bulunamadı" varsa projeyi temizleyin

build.gradle (project) adresine gidin

Google () yöntemini (.gradle dosyası) yürütme bloğunun en üstüne taşıyarak soruna neden olan arama havuzlarının sırasını taşımayı deneyin.

örneğin, şunu değiştirin:

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

Buna:

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

Bu değişiklikleri hem "buildscript" hem de "allprojects" de yapın

ekran görüntüsünü kontrol et

Google () bulamadıysanız ekleyin


2

Android Studio 3.2.1 için

Sınıf Sürüm 4.6

Android eklentisi sürüm 3.2.1


2

Sorun, çoğunlukla github'dan önceki bir projeyi klonlarken ortaya çıkar. Yapabilecekleriniz

  1. Sınıf yolunu şununla değiştir:

sınıfyolu 'com.android.tools.build:gradle:3.2.1'

proje seviyenizde.

  1. Sonra compileSdkVersion uygulama düzeyi sınıfında olduğu gibi tutmak dışında uygulama ile derleme tüm örneklerini değiştirin .

  2. Yerine senkronize şimdi tıklayın yapmak projesinin (Ctrl + F9)

  3. Gerekirse google maven depolarını ekleyin.

  4. Gerekirse kepçe sargısını yükseltin.

(Android Studio IDE, 4. ve 5. adımlar için sizden aynı şeyi soracak / yönlendirecektir)

giderir !! Kodlamanın Keyfini Çıkarın


2

NOT: Bu cevap aşağıdakilere özgü gibi görünmektedir No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android, ancak buraya bağlantı verilmiştir:

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

NDK r19b'den:

more ~/Android/Sdk/ndk-bundle/CHANGELOG.md
  • NDK'nin bu sürümü Android Gradle eklentisi sürüm 3.0 veya daha eski sürümlerle uyumlu değil. Bunun gibi bir hata görürseniz No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android, proje dosyanızı [eklenti sürüm 3.1 veya daha yenisini kullan] olarak güncelleyin. Ayrıca Android Studio 3.1 veya daha yeni bir sürüme geçmeniz gerekir.

1

NDK kullanmıyorsanız, ortam değişkenini kaldırın ANDROID_NDK_HOME.



1

Ionic 3 kullanıyorsanız android studio sdk araçlarından ndk kaldırın.


İyonik android projelerinin özel ihtiyacı için geçici bir çözüm olarak harika, ancak ideal değildir.
MFAL

1

Kendi yerel android-SDK'nızı bulun, ndk'nin ilgili SDK'sını indirirseniz, "ndk-bundle" adlı bir klasör olacaktır.

resim açıklamasını buraya girin

İçinde "alet zincirleri" adında bir klasör var.

resim açıklamasını buraya girin

İçinde mips64el ile ilgili dosya olmadığını fark ettik.

resim açıklamasını buraya girin

Çözüm aşağıdaki gibidir:

NDK paketini tarayıcıdan ayrı olarak indirmek için buraya tıklayın . Sıkıştırdıktan sonra, "toolchains" klasörünü açın, android-sdk-> ndk-bundle-> toolchains klasörü ile karşılaştırın, eksik klasörü bulun, geçmişi kopyalayın 3. Yeniden derleyin, sorun çözüldü. Umarım sana yardımcı olur


1

Aynı sorunla karşı karşıya.

Aşağıdaki yollarla başarılı oldum.

Buldle.gradle dosyanızı açın ve her iki sınıf yolunu izlemek için sürümleri yükseltin

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

Sonra Sync ve güncelleme Gradle sürümü için bir dilaog olsun sonra da bu bağlantıyı tıklayın ve gerekli tüm güncellemeleri indirmek için bekleyin (Umarım internet mevcuttur). Uzun zaman aldıktan sonra Başarı elde ettiniz.


1

İlk olarak, ndk sürümünü güncellemeyi deneyin https://developer.android.com/ndk/downloads/

Bu işe yaramazsa aşağıdakileri deneyebilirsiniz:

  • Klasör oluştur

    Sdk \ ndk-bundle \ toolchains klasörüne gidin (benim durumumda C: \ Users \ USER \ AppData \ Local \ Android \ Sdk \ ndk-bundle \ toolchains; kendinizinkini Dosya-> proje yapısı-> SDK altında bulabilirsiniz android studio'daki konum) ve hatada eksik olarak gösterilen adla bir klasör oluşturun, örneğin: eğer hata ise

    Gradle sync başarısız oldu: ABI için NDK toolchains klasöründe önek bulunan hiçbir alet zinciri bulunamadı: mipsel-linux-android

    Sonra mipsel-linux-android adında bir klasör oluşturun

  • İçerik ekle Sdk \ ndk-bundle \ toolchains klasörüne tekrar gidin ve içinde bulunan herhangi bir klasörü açın. Örneğin: Sdk \ ndk-bundle \ toolchains \ aarch64-linux-android-4.9 (mycase C: \ Kullanıcılar \ USER \ AppData \ Local \ Android \ Sdk \ ndk-bundle \ toolchains \ aarch64-linux-android-4.9) içindeki önceden oluşturulmuş klasörü son adımda oluşturduğumuz klasöre kopyalayın

  • Projeyi tekrar çalıştırın ve işe yarayacak

Umarım yardımcı olur!!


1

Bu soru ile sınırlı deneyimimde, sorunu kullan yöntemini çözmeye çalışıyorum:

1. android yapı araçları sürümünü gradle sürümü ile aynı tutun. Örneğin: derleme araçları sürümünü 3.3.0 kullanıyorsanız, sürüm sürümünüz 4.10.1 olmalıdır. Https://developer.android.com/studio/releases/gradle-plugin ve chagne bağlantısına başvurabilirsiniz. AS'nizde araçlar ve sınıf sürümü oluşturma (Dosya-> Proje Yapısı-> Proje)

2. yöntem1 işe yaramazsa, sorunu çözmek için ndk araç sürümünüzü özelleştirebilirsiniz: ndk18 veya ndk16'ı indirmek gibi, ndk yolunu ayarlamak AS'dir (Dosya-> Proje Yapısı-> SDK Konumu-> Android NDK Konumu)


1

Adresine gidin C:\Users\lalit\AppData\Local\Android\Sdk\ndk-bundle\toolchains.

Şimdi klasör adını bulun aarch64-linux-android-4.9ve yeniden adlandırın mips64el-linux-android.

Android uygulamasını yeniden çalıştırın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.