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.