"android source null" hatası ne anlama gelir ve nasıl hızlı bulunur
"android source null" hatası, derleyicinin (CMake/NDK/Gradle) beklenen kaynak dosyaları, yolları veya yerel modülün meta verilerini bulamadığında ortaya çıkar — çoğunlukla yanlış NDK/CMake yapılandırması, CMakeLists.txt içindeki hatalı yollar veya yerel kütüphaneler içeren hasarlı/eksik AAR dosyaları nedeniyle. Aşağıda, hemen uygulayabileceğiniz kısa bir teşhis ve düzeltme planı bulunmaktadır.
Hızlı teşhis: İlk 5–10 dakikada neleri kontrol etmeli
- Derleme ayrıntılarını toplayın ve kaydedin:
- Projede şunu çalıştırın:
./gradlew clean assembleDebug --info --stacktrace > build_log.txt
```
- build_log.txt dosyasını açın ve "android source", "source null", "Execution failed for task" ifadelerini ve CMake/NDK ile ilgili açıklamaları arayın.
2. Genel yapılandırmayı kontrol edin:
- File > Project Structure > SDK Location: NDK'nin kurulu olup olmadığı ve yolun doğru olup olmadığı.
- local.properties: ndk.dir=/path/to/Android/Sdk/ndk/XX.X.X satırı.
3. Build Output ve Gradle Console:
- Build penceresinde, hatanın gerçekleştiği tam görevi bulun (externalNativeBuildCMake* veya externalNativeBuildNdkBuild).
- Hatanın tam yığın izini (stack-trace) kopyalayın — bu size CMakeLists.txt satırını ve bağlamı verecektir.
Günlükleri ayrı bir dosyaya kaydedin ve "null" ile "android source" anahtar kelimelerine göre grep/arama yapın — bu zaman kazandırır.
Adım adım düzeltme (belirli düzenlemeler)
- Önbellekleri temizleme ve yeniden oluşturma
- Şunu çalıştırın:
./gradlew clean
rm -rf .gradle .idea build
```
- Android Studio'da: File > Invalidate Caches / Restart.
2. NDK ve CMake'in doğru yapılandırıldığından emin olun
- SDK Manager'da uyumlu bir NDK ve CMake sürümü kurun. local.properties içinde ndk.dir belirtin.
- Örnek:
local.properties
ndk.dir=/Users/you/Android/Sdk/ndk/26.1.10909125
```
3. build.gradle (Module: app) içindeki düzenlemeler
- android {} bloğu içinde externalNativeBuild ve abiFilters öğelerini kontrol edin:
android {
compileSdk 34
defaultConfig {
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt"
version "3.22.1"
}
}
}
```
- AGP eklentisi sürümünün ve gradle classpath'inin kullanılan NDK ile uyumlu olduğundan emin olun.
4. CMakeLists.txt düzeltmesi
- Tüm kaynak yollarının doğru olduğunu ve var olmayan değişkenlere başvurmadığını kontrol edin.
cmake_minimum_required(VERSION 3.22.1)
project(myapp)
add_library(myapp SHARED src/main/cpp/native-lib.cpp)
find_library(log-lib log)
target_link_libraries(myapp ${log-lib})
```
- Varsa, tüm özel "android.source" veya "android.sourceProperties" özelliklerini kaldırın veya düzeltin.
- Yerel kütüphaneler içeren AAR/JAR kontrolü
- Hata üçüncü taraf bir AAR bağlanırken ortaya çıkıyorsa, onu açın ve lib/
/*.so dosyalarının ve meta verilerinin varlığını kontrol edin. - Çoğaltma durumunda build.gradle içine paketleme seçeneklerini ekleyin:
- Hata üçüncü taraf bir AAR bağlanırken ortaya çıkıyorsa, onu açın ve lib/
packagingOptions {
pickFirst '**/libjsc.so'
}
```
6. Son derleme ve test
- Derleyin:
./gradlew assembleDebug --info
```
- Sorun çalışma zamanında (asset yükleme) ortaya çıkıyorsa, başlatma sırasında adb logcat'i inceleyin:
adb logcat | grep -i "source null"
```
NDK ve Android Gradle Plugin (AGP) sürümleri uyumlu olmalıdır — uyumsuz kombinasyonlar sıklıkla garip "null" hatalarına yol açar. AGP'yi güncellemeden NDK'yı güncellemek sorunu kötüleştirebilir.
Sık yapılan hatalar
- local.properties içinde yanlış yol (ndk.dir gerekli sürümü içermeyen bir klasörü gösteriyor)
- CMakeLists.txt hataları: cpp/ için yanlış göreceli yollar veya eksik add_library/add_executable
- AAR, gerekli ABI için yerel kütüphaneler içermiyor (hata yalnızca belirli cihazda ortaya çıkar)
- Gradle/AS önbelleği eski bağlantılar içeriyor — Invalidate Caches + clean yardımcı olur
- NDK ve AGP uyumsuzluğu — sürüm uyumluluğu belgelerini kontrol edin
SSS
-
Günlüklerde hata yoksa ama derleme "android source null" ile başarısız oluyorsa ne yapılmalı?
- --stacktrace ile tam yığın izini kontrol edin; çoğunlukla üst satır gerçek nedeni gizler (örneğin, CMakeLists dosyası farklı bir yoldadır).
-
abiFilters'ı kaldırarak düzeltmek mümkün mü?
- Bazen evet, ancak bu APK'da gereksiz kütüphanelere yol açabilir. Desteklediğiniz ABI'leri belirtmek daha iyidir.
-
NDK'yı düşürmek/yükseltmek yardımcı olur mu?
- Evet. NDK'yı yakın zamanda güncellediyseniz, önceki sürüme dönmeyi veya AGP/Gradle'ı uyumlu sürümlere güncellemeyi deneyin.
-
Hata üçüncü taraf bir kütüphanede (AAR) ise ne yapılmalı?
- Kütüphaneyi güncelleyin, AAR'ı açın ve lib/
içeriğini kontrol edin. Kütüphane hasarlıysa yazarla iletişime geçin veya uygulamayı değiştirin.
- Kütüphaneyi güncelleyin, AAR'ı açın ve lib/
Tüm adımlardan sonra hata devam ediyorsa — tam derleme çıktısını (build_log.txt) ve dosyalarınızı buraya ekleyin: build.gradle (proje ve modül) + CMakeLists.txt — daha detaylı analiz etmeme yardımcı olun.