Android: NDK'nin hiçbir sürümü istenen sürümle eşleşmedi


54

Android Gradle eklentisine güncellendikten sonra 3.6.0(24 Şubat 2020'de yayınlandı), birkaç proje bağımsız olarak başarısız olmaya başladı:

No version of NDK matched the requested version 20.0.5594570. Versions available locally: 21.0.6113669

Eski beklenen ndk sürümünü yükleyerek bunu yerel olarak "düzeltmek" oldukça basittir:

sdkmanager 'ndk;20.0.5594570'

Ancak sorum şu: Bu eski sürüm nerede ve nasıl belirtiliyor? En son sürümle eşleşmesi için nasıl güncelleyebilirim 21.0.6113669?


10
VE yapı Github CI'de de başarısız oluyor.
KYHSGeekCode

benim için aynı. Bu ndk'yi yüklersem veya konumunu belirtirsem, Uygulamamın UnsatisfiedLinkError -_-
ildar ishalin

1
Şu anda github ci şimdi projem için tekrar çalışıyor: github.com/KYHSGeekCode/Android-Disassembler/blob/…
KYHSGeekCode

VE CI Circle'da da başarısız oluyor.
HX_unbanned

Yanıtlar:


27

Seçenek 1:

Yerel olarak kurulu NDK'nizi Proje Yapısı İletişim Kutusundan seçebilirsiniz.

Proje Yapısı İletişim Kutusunu tıklatarak File > Project Structure...veya kısayol tuşlarına basarak açabilirsiniz CTRL + ALT + SHIFT + S(pencerelerde)

Proje Yapısı İletişim Kutusu açıldıktan sonra SDK Konumu'na gidin ve Android NDK Konumu altında yerel olarak kurulu NDK sürümünüzü seçin . Genellikle bu, kullanıcı klasörünüzde bir yere, \AppData\Local\Android\Sdk\ndk\%ndk version%en azından Windows'a yüklenir .

Proje Yapısı iletişim ekran görüntüsü - Android Studio 3.6 Build # AI-192.7142.36.36.6200805'den 12 Şubat 2020'de oluşturuldu

Seçenek 2:

Seçenek 1'in yapılması, local.propertiesdosyanızı sizin için düzenler ve çoğu durumda çalışır. Ancak, projeyi oluşturduğunuz tüm makinelerde tutarlı bir NDK sürümü kullanmak istiyorsanız, bu resmi kılavuza göre , modül derecelendirme komut dosyanızdan yapılandırabilirsiniz. Basitçe ndkVersionmodül gradle script'in android{}bloğunu ekleyin .

android {
    ndkVersion "major.minor.build"
}

çift ​​tırnak arasındaki dizeyi kullanmak istediğiniz NDK sürümüyle değiştirme

Seçenek 3:

Belirli bir makine üzerinde oluşturulan tüm projelerin aynı NDK sürümünü kullanmasını istiyorsanız ANDROID_NDK_HOME, NDK klasörünün yolunu içeren ortam değişkenini de ayarlayabilirsiniz .


1
Seçenek 2'yi kullanarak en son ndkVersion'ı kullanmak istersem ne olur?
KYHSGeekCode

@KYHSGeekCode, çift tırnak arasındaki dizeyi kullanmak istediğiniz NDK sürümüyle değiştirebilirsiniz. Bu sürümün kurulu olduğundan emin olun.
Subaru Tashiro

5
Yani, en son sürümü (manuel olarak belirtmeden) kullanabilir miyim? Gibi bir şey kullanarak$NDK_LATEST_VERSION
KYHSGeekCode

20

Ben de bununla karşılaşıyorum

NDK'nin hiçbir sürümü istenen 20.0.5594570 sürümüyle eşleşmedi. Yerel olarak mevcut sürümler: 21.0.6113669

Seçenek 1:

Sadece yerel olarak kurulu NDK'nızı Proje Yapısı İletişim Kutusu çalışmalarında seçebilirsiniz ! resim açıklamasını buraya girin

Ancak sadece yerel yapılar için geçerlidir, CI için bir çözüme ihtiyacım var

Seçenek 2:

Sadece kullanılan her modülde belirttiğinizde çalışır

android {
    compileSdkVersion 28
    ndkVersion "21.0.6113669"
    ...
}

Burada https://github.com/hannesa2/panoramagl/pull/17/checks bu değişiklikle çalışmıyor https://github.com/hannesa2/panoramagl/pull/17/files#diff-cff4e8c294a5dc5e76308662ae1ddcacR6-R7

Seçenek 3:

export ANDROID_NDK_HOME=/Users/{my-user}/Development/adt/sdk/ndk/21.0.6113669

çok çalışıyor!


Seçenek 2'nin hiç çalışmıyor olması ile ne demek istiyorsun? Bu yaklaşımla hangi problemle karşılaşıyorsunuz? Bu sayfanın altına bir göz attınız mı? developer.android.com/studio/projects/…
Subaru Tashiro

@SubaruTashiro Bak, bu iş değil gibi görünüyor github.com/marianmoldovan/panoramagl/pull/17/... bu değişiklik ile github.com/marianmoldovan/panoramagl/pull/17/... ya da ben neden bilmiyorum
Hannes ach

Garip. Taahhütlerinizde belirttiğinizi görebiliyorum, 21.0.6113669ancak yapı günlükleri istenen sürümün olduğunu söylüyor 20.0.5594570. Bir ndk_locator_record.jsondosya arayabilir misin ? Bu dosya, istenen ndk sürümünü nasıl çözdüğü hakkında bilgi içerir.
Subaru Tashiro

@SubaruTashiro Onu arıyorum ve böyle bir dosya yok. Ben adımda onu ara "önce ndk_locator_record.json arama" Bakın github.com/hannesa2/panoramagl/pull/17/...
ach Hannes'ı

Seçenek 3 otomasyon araçları için harika, teşekkürler!
Violet Zürafa

14

Bende aynı sorun var. SDK Araçları altındaki SDK yöneticisi aracılığıyla Show Package Detailsçözdüm , tıklayın ve ardından NDK (Yan yana) altında kaydırın ve ihtiyacınız olan sürümü işaretleyin ve uygulayın. Aşağıdaki resme bakın:

NDK sürüm yüklemesi için SDK araçlarına resim bağlantısı

Kimseye sorum şu: NDK gerektirmeyen projeler için neden buna ihtiyacımız var? Anlaşıldığı üzere NDK, bağımlılık için üzerinde çalıştığım projede önceden var olan bir gereklilik!


2

Sınıf yolu sürümünüzü build.gradle, proje düzeyinde 3.5.0 olarak değiştirin.

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

Bende aynı sorun var ve çözüldü.


3
Aslında bu bir çözüm değil, en iyi çözüm. Zaten hata durumlarda neler başlamış olduğu söylenebilir güncellenmesi için 3.6.0(veya üstü). Btw, sürümüne geçmenize gerek yok 3.5.0. Sürüm 3.5.3de iyi çalışıyor.
friederbluemle

2

aynı problemim vardı, bir süre sonra geçici bir çözüm buldum. ndkklasörü yeniden adlandır ndk-bundle. projelerinizde local.propertiesdosyaya gidin ve bu satırı daha önce ekleyin sdk.dir:

ndk.dir=<path to your ndk folder>

bu benim:

ndk.dir=G\:\\SDK\\ndk-bundle
sdk.dir=G\:\\SDK

umarım sana yardımcı olur


Güzel. Bu çalışıyor. Sdk.dir seçeneği için derleme sisteminin bu satırı otomatik olarak üretebileceğini biliyor musunuz?
Nicolas Dusart

yeniden adlandırma yerine ndk klasörünün yolunu da belirleyebilirsiniz. tel ndk.dir=G\:\\...\\Sdk\\ndk\\21.0.6113669benim için çalıştı.
Artem Mostyaev

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.