Android SDK: arm64, NDK ve ZIP paketleri — pratik rehber
Kısa cevap: İşletim sisteminizin mimarisine uygun SDK'yı kurun; NDK yalnızca proje C/C++ (veya yerel kod içeren kütüphaneler) içeriyorsa gereklidir; ZIP paketleri CI ve çevrimdışı ortamlar için kullanışlıdır. Aşağıda, hemen uygulayabileceğiniz kısa kurallar ve kurulum adımları yer almaktadır.
Bu nedir ve ne zaman ne gerekir
Android SDK, derleme ve hata ayıklama için bir araç setidir. Yeni başlayanların karıştırdığı kavramlar şunlardır:
- Host olarak arm64 (AArch64) — bu, makinenizin mimarisidir (örneğin Apple Silicon).
- Target olarak arm64 — bu, APK/AAB içindeki yerel kütüphaneler için cihaz mimarisidir (arm64-v8a).
NDK — C/C++ dilinden .so dosyaları oluşturmak için Native Development Kit'tir. ZIP paketleri — önceden çıkarılmış SDK/NDK arşivleridir ve sunucular ile CI için kullanışlıdır.
Host mimarisi (SDK'yı kurduğunuz yer) ile target ABI (cihazlar için derlediğiniz mimari) arasında karışıklık yapmayın.
arm64 için SDK ne zaman gerekir:
- Apple Silicon Mac üzerinde çalışıyorsunuz ve araçları yerel olarak çalıştırmak istiyorsunuz.
- CI/sunucunuz ARM üzerinde çalışıyor (docker/instance).
NDK ne zaman gerekir:
- Projede c/cpp klasörleri, CMakeLists.txt veya externalNativeBuild bloğu varsa.
- Yerel ikili dosyalar içeren kütüphaneler kullanılıyorsa (harici .so dosyaları, oyun motorları, ses/video işleme).
NDK ne zaman gerekmez:
- JNI ve C/C++ kaynak kodu olmayan saf Kotlin/Java uygulaması.
Gradle NDK eksikliği konusunda şikayet etmiyor ve derleme başarılı oluyorsa — NDK'yı önceden kurmayın. İhtiyaç duyulduğunda ekleyin.
Nasıl kurulur — üç çalışan senaryo
1) Hızlı: Android Studio üzerinden (GUI)
- İşletim sisteminiz/mimarisi için Android Studio'yu kurun.
- SDK Manager → SDK Platforms, Tools seçeneklerini açın.
- Şunları kurun: platform-tools, build-tools, platforms; gerekirse — Android Emulator ve NDK.
Bu yöntem yerel çalışma, otomatik güncellemeler ve AVD yönetimi için kullanışlıdır.
2) CI ve sunucular için: command-line tools + sdkmanager
- İşletim sisteminiz için Command line tools (ZIP) dosyasını indirin.
- Örneğin ~/Android/cmdline-tools/latest klasörüne çıkarın.
- Değişkenleri tanımlayın:
- ANDROID_SDK_ROOT veya ANDROID_HOME → SDK kök dizini.
- PATH'e şunları ekleyin: cmdline-tools/latest/bin ve platform-tools.
- Gerekli paketleri kurun: sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0" "ndk;25.2.9519653" Bu yöntem CI'da kolayca otomatikleştirilebilir ve sürümlendirilebilir.
3) Çevrimdışı/tekrarlanabilir: ZIP paketlerini çıkarma
- Gerekli sürüm ve mimariye ait ZIP SDK/NDK dosyasını indirin.
- Çıkarın: SDK → /opt/android/sdk, NDK → /opt/android/sdk/ndk/<sürüm>.
- Yolları local.properties dosyasında veya ortam değişkenlerinde belirtin.
İzole ortamlar için uygundur ve ortam tutarlılığını garanti eder.
Sürüm uyumluluğuna dikkat edin: Çok yeni veya çok eski bir NDK derlemeyi bozabilir — sürümü belgelerde/komut dosyalarında sabitleyin.
Gradle yapılandırması ve derleme kontrolü
- local.properties (örnekler):
sdk.dir=/tam/yol/android/sdk
ndk.dir=/tam/yol/android/sdk/ndk/25.2.9519653
- Modülde ABI kısıtlaması (app/build.gradle):
android {
defaultConfig {
ndk {
abiFilters "armeabi-v7a", "arm64-v8a" // 64-bit kütüphaneler gerekiyorsa arm64-v8a'yı etkinleştirin
}
}
}
- Boyutu küçültmek için ABI başına split oluşturun:
- Kullanıcılara yalnızca gerekli APK/AAB'yi göndermek için Gradle'da splits.abi ayarlayın.
Kontroller:
- adb ve sdkmanager PATH'te erişilebilir durumda.
- gradle assembleDebug modülleri hatasız derliyor.
- Derleme ndkVersion hakkında şikayet ediyorsa, build.gradle dosyasında gerekli sürümü belirtin:
android {
ndkVersion "25.2.9519653"
}
Sık karşılaşılan hatalar
- local.properties dosyasında yanlış yol (sdk.dir/ndk.dir).
- PATH'te platform-tools eksik — adb bulunamadı.
- ndkVersion ve Android Gradle Plugin uyumsuzluğu.
- Apple Silicon üzerinde Rosetta olmadan x86-AVD çalıştırma girişimi → düşük performans veya hata.
- CI'da SDK/NDK çıkarılması unutuldu veya erişim izinleri belirtilmedi.
SSS
- x86 PC'de arm64 için SDK gerekir mi? Hayır — işletim sisteminizin mimarisine uygun SDK'yı kurun; target ABI Gradle'da yapılandırılır.
- NDK'ya ihtiyaç olup olmadığını hızlıca nasıl anlarım? CMakeLists.txt, c/cpp klasörleri, Gradle'da externalNativeBuild arayın.
- Windows ve Linux'ta ZIP paketleri aynı şekilde kullanılabilir mi? Evet, ancak her işletim sistemi/mimari için ilgili derlemeleri indirin.
- Bir ekip için hangisi daha kolay: SDK Manager mı yoksa ZIP mi? Geliştiriciler için — SDK Manager; CI ve kararlılık için — ZIP ve cmdline tools.
Gerekirse — Linux, macOS veya Windows üzerinde SDK/NDK kurulumu için hazır komut dosyaları ve GitHub Actions/GitLab CI için örnek yapılandırma hazırlayabilirim.