Android 16 KB memory page size değişikliğini anlatan 1200x675 teknoloji kapak görseli. Google Play'in 1 Şubat 2027 son tarihi, 4 KB'den 16 KB'ye geçiş, Android Studio APK Analyzer, AGP 8.5.1+, NDK r28+, zipalign kontrolü ve adb shell getconf PAGE_SIZE testi öne çıkarılıyor.
Android uygulama geliştiricilerini doğrudan ilgilendiren yeni Google Play zorunluluklarından biri için artık son tarih belli: 16 KB memory page size desteği.
Google’ın güncel Android dokümantasyonuna göre Android 15 yani API 35 ve üzerini hedefleyen uygulamaların, Google Play’deki 64-bit cihazlarda 16 KB bellek sayfası boyutunu desteklemesi gerekiyor.
Kritik tarih ise:
1 Şubat 2027.
Bu tarihten itibaren uygulamanız 16 KB memory page size desteğine sahip değilse Google Play üzerinden yeni uygulama güncellemesi yayımlayamayacaksınız.
İlk bakışta oldukça düşük seviyeli bir Android sistem değişikliği gibi görünüyor.
Özellikle uygulamasını tamamen Kotlin ve Jetpack Compose ile geliştiren biri:
“Ben C veya C++ kullanmıyorum, bunun benim uygulamamla ne ilgisi var?”
diye düşünebilir.
Ancak konu yalnızca uygulama içerisinde doğrudan NDK kullanıp kullanmadığınızla sınırlı değil.
Projenize eklediğiniz bir:
kendi içerisinde native .so dosyaları taşıyabilir.
Bu durumda Kotlin kodunuz tamamen uyumlu olsa bile APK veya App Bundle içerisindeki native kütüphanelerden biri 16 KB hizalamayı desteklemiyorsa uygulamanız Google Play kontrolünde sorun yaşayabilir.
Peki Android 16 KB page size nedir? Google neden 4 KB’den 16 KB’ye geçiyor? Kotlin ve Jetpack Compose uygulamaları etkileniyor mu? Uygulamanın içinde native kütüphane olup olmadığı nasıl anlaşılır? Android Studio APK Analyzer ile nasıl kontrol edilir? zipalign, bundletool ve adb shell getconf PAGE_SIZE komutları nasıl kullanılır?
Google’ın güncel resmi dokümantasyonu üzerinden adım adım bakalım.
İşletim sistemleri fiziksel belleği tek parça halinde yönetmez.
Bellek, page yani sayfa adı verilen daha küçük bloklara ayrılır.
Android cihazlarda tarihsel olarak yaygın kullanılan bellek sayfası boyutu:
4 KB
idi.
Android 15 ile birlikte AOSP, 16 KB page size kullanacak şekilde yapılandırılmış Android cihazları desteklemeye başladı.
Bu cihazlarda belleğin yönetildiği temel sayfa boyutu 4 KB yerine 16 KB olabiliyor.
Bu değişiklik kullanıcı açısından Ayarlar içerisinde açılıp kapatılan basit bir seçenek değil.
İşletim sistemi çekirdeği, native kütüphaneler ve uygulama paketlerinin belleğe nasıl yüklendiğiyle ilgili düşük seviyeli bir mimari değişiklik.
Android cihazların RAM kapasitesi yıllar içerisinde ciddi biçimde yükseldi.
4 GB RAM’in yüksek kabul edildiği dönemlerden bugün 8 GB, 12 GB, 16 GB ve daha yüksek belleğe sahip telefonlara geldik.
Google, daha büyük fiziksel belleğe sahip cihazlarda daha büyük memory page size kullanmanın sistem ve uygulama performansında çeşitli avantajlar sağlayabildiğini belirtiyor.
16 KB page size özellikle bellek yönetimi sırasında işletim sisteminin yönetmek zorunda olduğu page sayısını azaltabiliyor.
Ancak bunun karşılığında ortalama bellek kullanımı bir miktar artabiliyor.
Google’ın kendi testlerine göre evet.
16 KB page size kullanan cihazlarda ölçülen ortalama kazanımlar şöyle:
| Alan | Google Test Sonucu |
|---|---|
| Bellek baskısı altında uygulama açılışı | Ortalama %3,16 daha hızlı |
| Bazı uygulamalarda açılış | %30’a kadar iyileşme |
| Uygulama açılışında güç tüketimi | Ortalama %4,56 azalma |
| Kamera hot start | Ortalama %4,48 daha hızlı |
| Kamera cold start | Ortalama %6,60 daha hızlı |
| Sistem açılışı | Ortalama %8 daha hızlı |
Google sistem açılışında yaklaşık 950 milisaniyelik ortalama iyileşme ölçtüğünü de belirtiyor.
Elbette bunlar Google’ın test ortamındaki sonuçlar.
Her uygulamanın veya her telefonun aynı performans artışını göstermesi beklenmemeli.
Google’ın güncel uyumluluk şartına göre:
1 Şubat 2027’den itibaren
Android 15 yani API 35 ve üzerini hedefleyen uygulama güncellemelerinin Google Play’deki 64-bit cihazlarda 16 KB memory page size desteğine sahip olması gerekiyor.
Uyumsuz bir uygulamanın yeni sürümünü bu tarihten sonra Google Play’e yayımlamak mümkün olmayacak.
Google Play şartı şu kombinasyonu hedefliyor:
Özellikle uygulamada native kod veya native kütüphane bulunuyorsa mutlaka kontrol yapılması gerekiyor.
Burada önemli bir ayrım var.
Google’ın resmi dokümantasyonuna göre uygulamanız ve kullandığınız bütün kütüphane ve SDK’lar yalnızca Java veya Kotlin kodundan oluşuyorsa uygulamanız zaten 16 KB cihazları destekliyor.
Yani yalnızca:
kullanmanız tek başına problem oluşturmuyor.
Ancak burada kritik ifade:
“Bütün kütüphane ve SDK’lar.”
Uygulama kodunuzda tek satır C++ bulunmasa bile dependency’lerden biri native kütüphane içeriyorsa durum değişiyor.
Jetpack Compose doğrudan 16 KB page size açısından problem oluşturan bir yapı değil.
Tamamen Kotlin/Java tabanlı bir Compose uygulaması gerekli desteğe sahip olabilir.
Ancak modern Android uygulamalarında Compose’un yanında çok sayıda üçüncü taraf SDK kullanılıyor.
Örneğin:
kütüphanelerinden bazıları paket içerisinde native binary taşıyabilir.
Bu yüzden “Compose kullanıyorum, kontrol etmeme gerek yok” demek doğru değil.
Evet.
Android geliştiricilerin bu konuda en çok yanılabileceği noktalardan biri bu.
NDK’yı doğrudan projenize eklememiş olabilirsiniz.
Ancak Gradle dependency olarak eklediğiniz bir SDK kendi içerisinde:
lib/arm64-v8a/*.so
lib/x86_64/*.so dosyaları taşıyabilir.
Bu durumda uygulamanız dolaylı olarak native kod kullanıyor demektir.
Google’ın önerdiği en kolay yöntem Android Studio APK Analyzer.
Öncelikle uygulamanızın APK dosyasını oluşturun.
Android Studio içerisinde:
Build → Analyze APK
seçeneğini kullanabilirsiniz.
APK açıldığında:
lib klasörüne bakın.
Örneğin:
lib/
├── arm64-v8a/
│ ├── libexample.so
│ └── libanother.so
└── x86_64/
└── libexample.so gibi dosyalar görüyorsanız uygulamanız native shared library içeriyor.
Evet.
Google, shared library hizalamasını kontrol etmek için Android Studio APK Analyzer’ı öneriyor.
APK Analyzer içerisinde native kütüphaneler için Alignment sütununa bakabilirsiniz.
Bir shared object yani .so dosyası 16 KB hizalamaya uygun değilse Android Studio burada uyarı gösterebilir.
Bu yöntem özellikle komut satırı araçlarıyla uğraşmadan hızlı bir ön kontrol yapmak için oldukça kullanışlı.
Native Android uygulamalarında iki farklı hizalama konusu bulunuyor:
Bir uygulamanın yalnızca bunlardan birini sağlaması yeterli olmayabilir.
Native shared library’nin ELF LOAD segmentleri 16 KB uyumlu olmalı ve APK içerisindeki sıkıştırılmamış shared library dosyaları doğru ZIP sınırında paketlenmeli.
Android native kütüphaneleri ELF formatını kullanır.
Bu dosyaların işletim sistemi tarafından belleğe yüklenen LOAD segmentlerinin page size ile uyumlu şekilde hizalanması gerekir.
16 KB uyumlu ELF segmentlerinde alignment değeri en az:
2**14 olmalıdır.
Çünkü:
2^14 = 16384 byte = 16 KB Google, Android NDK içerisindeki llvm-objdump aracının kullanılabileceğini belirtiyor.
Windows PowerShell örneği:
$SDK_ROOT\Android\sdk\ndk\$NDK_VERSION\toolchains\llvm\prebuilt\windows-x86_64\bin\llvm-objdump.exe -p .\libexample.so | Select-String -Pattern "LOAD" Çıktıda örneğin:
LOAD ... align 2**14
LOAD ... align 2**14
LOAD ... align 2**14 görüyorsanız segmentler 16 KB hizalama açısından uygun.
Eğer:
2**12 gibi daha düşük değer görüyorsanız library 4 KB hizalamaya sahip olabilir.
Android SDK Build-Tools içerisindeki zipalign komutu kullanılabilir.
Google’ın önerdiği 16 KB kontrol komutu:
zipalign -c -P 16 -v 4 app.apk Windows üzerinde örneğin:
C:\Android\Sdk\build-tools\35.0.0\zipalign.exe -c -P 16 -v 4 app-release.apk şeklinde çalıştırılabilir.
Her şey doğruysa çıktının sonunda:
Verification successful görmeniz gerekir.
Google Play’e genellikle APK yerine Android App Bundle yani .aab yükleniyor.
Bu nedenle bundle konfigürasyonunu da kontrol etmek önemli.
bundletool ile:
bundletool dump config --bundle=app-release.aab komutunu çalıştırabilirsiniz.
Linux/macOS üzerinde çıktıyı filtrelemek için:
bundletool dump config --bundle=app-release.aab | grep alignment kullanılabilir.
İstenen değer:
PAGE_ALIGNMENT_16K olmalı.
Eğer:
PAGE_ALIGNMENT_4K görüyorsanız bundle içerisindeki native library paketleme ayarlarının kontrol edilmesi gerekiyor.
Google’ın güncel önerisi:
Android Gradle Plugin 8.5.1 veya daha yeni sürüm.
Özellikle sıkıştırılmamış native shared library kullanan uygulamalarda AGP 8.5.1 ve üzeri 16 KB ZIP alignment desteğini doğru biçimde yönetiyor.
Burada dikkat edilmesi gereken ince bir ayrıntı var.
Google’a göre AGP 8.3 ile 8.5 arasındaki sürümlerde uygulama yerel olarak 16 KB aligned görünebilir.
Ancak bu sürümlerde bundletool, Google Play’in AAB’den oluşturduğu APK’ları varsayılan olarak doğru şekilde zipalign etmeyebilir.
Sonuç olarak uygulama geliştirici cihazında çalışmasına rağmen Play tarafından oluşturulan APK 16 KB cihazda yükleme sorunu yaşayabilir.
Bu nedenle doğrudan AGP 8.5.1 veya üzeri kullanmak daha güvenli.
Google’ın en rahat önerisi:
Android NDK r28 veya daha yeni sürüm.
NDK r28 ve üzeri 16 KB aligned shared libraries’i varsayılan olarak üretiyor.
Dolayısıyla güncel build araçlarına geçmek manuel linker ayarlarının önemli bölümünü ortadan kaldırıyor.
Birçok proje için büyük ölçüde evet.
Google’ın önerisine göre:
kullanıyorsanız uygulamanız varsayılan olarak 16 KB uyumlu hale gelebilir.
Ancak üçüncü taraf prebuilt .so dosyalarının da 16 KB uyumlu olması gerektiğini unutmamak gerekiyor.
Sizin build araçlarınız güncel olsa bile eski binary dağıtan bir SDK soruna neden olabilir.
Eski NDK sürümünden vazgeçemiyorsanız native library’leri 16 KB ELF alignment ile derlemek için linker flag eklemek gerekebilir.
Google’ın önerdiği flag’ler:
-Wl,-z,max-page-size=16384
-Wl,-z,common-page-size=16384 CMakeLists.txt içerisinde örneğin:
target_link_options(${CMAKE_PROJECT_NAME} PRIVATE
"-Wl,-z,max-page-size=16384"
"-Wl,-z,common-page-size=16384"
) kullanılabilir.
Ancak mümkünse manuel ayarla uğraşmak yerine güncel NDK sürümüne geçmek uzun vadede daha mantıklı.
Android.mk içerisinde:
LOCAL_LDFLAGS += -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384 eklenebilir.
Bu ayar eski NDK sürümlerinde shared library ELF alignment değerini 16 KB uyumlu hale getirmek için kullanılabiliyor.
Bu bölüm çok önemli.
Projede size ait olmayan hazır bir:
libsomething.so dosyası bulunuyorsa onu sadece yeni AGP ile paketlemek her zaman yeterli değil.
Library’nin ELF segmentlerinin de 16 KB aligned olması gerekiyor.
Bu nedenle:
SDK güncellenmiyorsa alternatif kütüphane değerlendirmek gerekebilir.
Öncelikle SDK’nın güncel sürümünü kontrol edin.
Birçok popüler Android SDK sağlayıcısı 16 KB uyumluluk için kütüphanelerini güncelledi veya güncelliyor.
Eğer en güncel sürüm de uyumsuzsa:
Çünkü Google Play son tarihi geldiğinde sizin uygulama kodunuz kusursuz olsa bile dependency içerisindeki uyumsuz native library yayını engelleyebilir.
Bazı eski native kodlarda memory page size’ın her zaman:
4096 byte olduğu varsayılabiliyor.
16 KB cihazda bu varsayım artık doğru değil.
Örneğin:
#define PAGE_SIZE 4096 veya benzeri sabit değerler runtime hatalarına yol açabilir.
Google bunun yerine gerçek cihaz page size değerinin runtime sırasında sorgulanmasını öneriyor.
C/C++ tarafında:
getpagesize() veya:
sysconf(_SC_PAGESIZE) kullanılabilir.
Böylece kod cihazın gerçekten 4 KB mi yoksa 16 KB mı kullandığını runtime sırasında öğrenebilir.
Evet.
Google özellikle mmap() gibi page-aligned parametre gerektiren API’lerin kontrol edilmesini öneriyor.
Kod içerisinde 4 KB’a göre hesaplanan offset veya alignment değerleri bulunuyorsa 16 KB cihazlarda beklenmeyen davranış ortaya çıkabilir.
APK veya ELF alignment kontrolünün başarılı olması uygulamanın runtime sırasında kesinlikle sorunsuz çalışacağı anlamına gelmez.
Native kod içerisinde 4 KB varsayımları bulunabilir.
Bu nedenle Google yalnızca binary kontrol değil, uygulamanın gerçek 16 KB ortamında çalıştırılmasını da öneriyor.
Android Studio üzerinden Android 15 veya daha yeni 16 KB system image kullanabilirsiniz.
Genel adımlar:
Emulator açıldıktan sonra gerçekten 16 KB modda çalışıp çalışmadığını ADB ile doğrulayabilirsiniz.
Test cihazının kullandığı memory page size değerini öğrenmek için:
adb shell getconf PAGE_SIZE komutunu çalıştırın.
16 KB ortamında çıktı:
16384 olmalı.
Eğer:
4096 dönüyorsa cihaz 4 KB page size kullanıyor.
Evet.
Google’ın dokümantasyonunda bazı fiziksel cihazlarda geliştirici seçenekleri üzerinden 16 KB mode kullanılabileceği belirtiliyor.
Ayrıca desteklenen Samsung cihazları için Samsung Remote Test Lab üzerinden 16 KB ortam testi de yapılabiliyor.
Google’ın resmi 16 KB test önerileri arasında Samsung Remote Test Lab de bulunuyor.
Fiziksel bir 16 KB Android cihazınız yoksa uzak Samsung cihazları üzerinde gerçek donanım testi yapmak faydalı olabilir.
Ancak cihaz listesindeki modeller ve mevcut laboratuvar seçenekleri zaman içerisinde değişebileceği için güncel Remote Test Lab listesini kontrol etmek gerekiyor.
Yeni Android sürümlerinde bazı uyumsuz uygulamaları geçici olarak çalıştırabilmek için 16 KB backward compatibility mode bulunuyor.
Örneğin uygulamanın:
bulunuyorsa sistem uygulamayı compatibility mode içerisinde çalıştırabilir.
Ancak bu mekanizma gerçek 16 KB desteğinin alternatifi olarak görülmemeli.
Google açık biçimde compatibility mode’un bazı uygulamaları çalıştırmaya yardımcı olabileceğini fakat en iyi:
için uygulamaların gerçek 16 KB uyumlu hale getirilmesini öneriyor.
Daha önemlisi Google Play yayın şartı compatibility mode’a güvenerek geçilemiyor.
Uygulama paketinizin gerekli 16 KB desteğini sağlaması gerekiyor.
Google’ın güncel dokümantasyonunda Android 17 ile birlikte geliştiricilerin 16 KB compatibility mode’u tamamen kapatıp uyumsuz binary’lerin anında başarısız olmasını sağlayabilecek test seçeneği bulunduğu belirtiliyor.
Bu da 16 KB desteğinin geçici bir uyumluluk konusu değil, Android’in gelecek mimarisinin kalıcı parçası olduğunu gösteriyor.
Android’in yeni sürümlerinde uygulamanın compatibility mode davranışı:
android:pageSizeCompat manifest özelliği üzerinden de kontrol edilebiliyor.
Ancak bu özellik gerçek 16 KB uyumluluğunu sağlamak için kullanılacak bir “hile” değil.
Asıl çözüm native binary ve runtime kodunu doğru şekilde 16 KB uyumlu hale getirmek.
Play Console uygulamanızın 16 KB desteğiyle ilgili sorun tespit ettiğinde uyumluluk uyarısı gösterebilir.
Bu durumda şu sırayla ilerlemek mantıklı:
.so dosyasının uyarı verdiğini bulun.zipalign ile doğrulayın.bundletool ile kontrol edin.Bir Android projesini hızlıca kontrol etmek için şu sırayı kullanabilirsiniz:
./gradlew assembleRelease Windows kullanıyorsanız:
gradlew.bat assembleRelease Android Studio’da APK’nizi analiz edin.
lib klasörü yoksa uygulamanız doğrudan APK içerisinde native library taşımıyor olabilir.
arm64-v8a ve x86_64 klasörlerindeki library’lere özellikle bakın.
APK Analyzer içerisindeki Alignment sütununda 16 KB uyumluluk uyarısı olup olmadığına bakın.
zipalign -c -P 16 -v 4 app-release.apk ./gradlew bundleRelease bundletool dump config --bundle=app-release.aab Beklenen alignment:
PAGE_ALIGNMENT_16K Android 15 veya daha yeni 16 KB image kullanın.
adb shell getconf PAGE_SIZE Beklenen:
16384 Özellikle:
ayrıntılı olarak denenmeli.
“Firebase kullanıyorum, uygulamam otomatik olarak sorunlu mu?” sorusunun tek bir cevabı yok.
Firebase birden fazla SDK’dan oluşuyor.
Bu nedenle kullanılan Firebase bileşenlerinin ve versiyonlarının güncel olması önemli.
Aynı yaklaşım yalnızca Firebase için değil bütün üçüncü taraf SDK’lar için geçerli:
Kütüphanenin en güncel sürümünü kullanın ve üretilen APK/AAB’yi analiz ederek doğrulayın.
Evet.
Makine öğrenmesi ve görüntü işleme SDK’ları native bileşen kullanabilen kütüphaneler arasında.
Dolayısıyla ML Kit veya başka bir ML SDK kullanıyorsanız yalnızca kendi Kotlin kodunuza bakmak yeterli olmayabilir.
En doğru yöntem son APK/AAB içerisindeki gerçek native binary’leri kontrol etmek.
CameraX kullanılması tek başına uygulamanın uyumsuz olduğu anlamına gelmez.
Ancak kamera akışına ek olarak kullandığınız:
SDK’larının native library içerip içermediği ayrıca kontrol edilmeli.
Reklam SDK’ları da düzenli olarak güncellendiği için en güvenli yaklaşım Google Mobile Ads SDK’nın desteklenen güncel sürümünü kullanmak ve final APK/AAB paketini analiz etmek.
Buradaki ana prensip yine aynı:
Dependency adından tahmin etmek yerine yayımlayacağınız gerçek binary’yi kontrol edin.
Saf Java/Kotlin çalışan kütüphaneler 16 KB native alignment problemine doğrudan neden olmaz.
Örneğin uygulamanın yalnızca Kotlin tarafındaki:
gibi bileşenleri için özel ELF alignment işlemi gerekmez.
Ancak yine de projenin tamamındaki dependency ağını kontrol etmek gerekir.
Play Console uyarısı olmaması olumlu işaret.
Ancak yalnızca buna güvenmek yerine Google’ın önerdiği gibi uygulamayı gerçek 16 KB ortamında da test etmek daha güvenli.
Binary alignment doğru olsa bile runtime kodu 4 KB varsayımı yapıyor olabilir.
Yeni proje oluşturuyorsanız işi sonradan düzeltmek yerine güncel toolchain kullanmak daha kolay.
Genel yaklaşım:
şeklinde olmalı.
Google, native library’lerin 16 KB ELF alignment ile derlenmesinin bazı uygulamalarda binary boyutunda küçük bir artış oluşturabileceğini belirtiyor.
Özellikle:
extractNativeLibs=false kullanan uygulamalarda bu fark görülebilir.
Ancak Android 15 package manager optimizasyonları runtime maliyetini azaltmak üzere tasarlanmış durumda.
Hayır.
Google Play zorunluluğu geliştiricileri harekete geçiren somut tarih olsa da asıl neden Android cihazların gelecekte giderek daha fazla 16 KB memory page size kullanacak olması.
Google açık biçimde gelecekte 16 KB ve daha büyük page size kullanan cihazların yaygınlaşmasını beklediğini belirtiyor.
Dolayısıyla destek yalnızca Play Console uyarısını kaldırmak için yapılmamalı.
Uygulamanın gelecekteki Android donanımlarında çalışmaya devam etmesi için gerekli bir platform uyumluluğu.
Hayır.
Özellikle çok sayıda üçüncü taraf dependency kullanan uygulamalarda son dakikaya bırakmak riskli.
Çünkü sorun sizin kodunuzdan değil bir SDK’nın native binary’sinden kaynaklanabilir.
Bu durumda:
zaman alabilir.
Bu nedenle 16 KB testini release tarihinden bağımsız olarak mevcut uygulamalara şimdiden eklemek daha mantıklı.
Evet ve production projelerinde oldukça mantıklı.
Örneğin release pipeline:
zipalign kontrolünü çalıştırabilir,Böylece daha sonra projeye eklenen yeni bir SDK’nın sessizce 4 KB aligned library getirmesi production release sırasında fark edilir.
Linux veya macOS kullanan geliştiriciler için Google dokümantasyonunda check_elf_alignment.sh script’i de bulunuyor.
Kullanım mantığı:
check_elf_alignment.sh app-release.apk şeklinde.
Script içerisindeki native library’leri kontrol ederek:
ALIGNED veya:
UNALIGNED sonucu verebiliyor.
Özellikle CI pipeline içerisinde faydalı olabilir.
Evet.
Google dokümantasyonunda Windows PowerShell için de komut örnekleri bulunuyor.
APK dosyasını açmak için:
Expand-Archive -Path .\app-release.apk -DestinationPath ~\tmp\my_apk_out kullanılabilir.
Daha sonra NDK içerisindeki Windows sürümü llvm-objdump.exe ve Android SDK içerisindeki zipalign.exe araçlarıyla aynı kontroller yapılabilir.
Projeye göre değişse de çoğu modern Android uygulaması için pratik yol haritası şu:
.so dosyalarını kontrol edin.zipalign -c -P 16 -v 4 doğrulamasını çalıştırın.adb shell getconf PAGE_SIZE çıktısının 16384 olduğunu doğrulayın.Android’in 16 KB page size geçişi ilk bakışta yalnızca NDK ve C++ geliştiricilerini ilgilendiren bir konu gibi görünüyor.
Saf Kotlin veya Java kodu kullanan bir uygulama açısından gerçekten de temel framework kodunda yapılması gereken özel bir değişiklik olmayabilir.
Ancak modern Android uygulamaları tek başına yazdığımız kaynak koddan oluşmuyor.
Bir projede onlarca Gradle dependency bulunabiliyor.
Bunlardan yalnızca bir tanesinin eski bir native .so dosyası taşıması bile Google Play uyumluluğunu etkileyebilir.
Bu nedenle benim bu değişiklikte en önemli gördüğüm nokta:
Kaynak kodunuza bakıp “NDK kullanmıyorum” diyerek kontrolü geçmemek.
Mutlaka final APK veya App Bundle’ı analiz etmek gerekiyor.
APK Analyzer içerisindeki lib klasörü bu yüzden ilk kontrol noktası olmalı.
Eğer hiçbir native library bulunmuyorsa ve bütün uygulama ile SDK’lar Java/Kotlin ise Google’a göre uygulama zaten 16 KB cihazları destekliyor.
Native library bulunuyorsa ise iş biraz daha ayrıntılı hale geliyor:
tek tek kontrol edilmeli.
Google’ın işi kolaylaştıran tarafı ise güncel araçlarla bu desteğin büyük ölçüde otomatik hale gelmesi.
AGP 8.5.1+ ve NDK r28+ kullanıp 16 KB uyumlu dependency’lerle çalışıyorsanız çoğu manuel alignment probleminden kurtulabiliyorsunuz.
Yine de son adım değişmiyor:
Gerçek 16 KB ortamında test.
Çünkü build’in başarılı olması uygulamanın runtime sırasında 4 KB varsayımı yapmadığını garanti etmiyor.
Ve 1 Şubat 2027 tarihi geldiğinde bunu kontrol etmek için geç kalmış olmak istemezsiniz.
Android’in belleği yönetirken kullandığı memory page boyutunun geleneksel 4 KB yerine 16 KB olmasıdır. Android 15 ile AOSP, 16 KB page size kullanan cihazları desteklemeye başladı.
1 Şubat 2027’den itibaren Android 15 / API 35 ve üzerini hedefleyen uygulama güncellemelerinin Google Play’deki 64-bit cihazlarda 16 KB memory page size desteğine sahip olması gerekiyor.
Google’ın açıklamasına göre 1 Şubat 2027’den sonra uyumsuz uygulama güncellemelerini Google Play üzerinden yayımlayamayacaksınız.
Uygulamanız ve bütün dependency’leriniz yalnızca Java veya Kotlin kodundan oluşuyorsa Google’a göre uygulama zaten 16 KB cihazları destekliyor. Ancak üçüncü taraf SDK’ların native kütüphane taşıyıp taşımadığı kontrol edilmeli.
Compose’un kendisi bu konuda temel problem değil. Kritik konu uygulamanın veya kullandığı SDK’ların native .so dosyaları içerip içermemesi.
Evet. Gradle ile kullandığınız üçüncü taraf bir SDK kendi içerisinde native shared library taşıyabilir.
Android Studio’da Build → Analyze APK ile APK Analyzer’ı açıp lib klasörünü kontrol edebilirsiniz.
Android Studio APK Analyzer kullanılabilir. Ayrıca komut satırından zipalign -c -P 16 -v 4 app.apk komutu çalıştırılabilir.
Doğru hizalanmış APK için komut çıktısının sonunda Verification successful görülür.
bundletool dump config --bundle=app-release.aab komutuyla bundle alignment ayarı incelenebilir. 16 KB için PAGE_ALIGNMENT_16K beklenir.
Google, 16 KB paketleme desteği için Android Gradle Plugin 8.5.1 veya daha yeni sürüm kullanılmasını öneriyor.
NDK r28 ve üzeri 16 KB ELF alignment’ı varsayılan olarak destekliyor.
Evet. Eski NDK sürümlerinde gerekli linker flag’leri kullanarak 16 KB ELF alignment oluşturulabilir ancak mümkünse r28 veya daha yeni sürüme geçmek daha kolay.
adb shell getconf PAGE_SIZE komutunu çalıştırın. Sonuç 16384 olmalı.
Google’ın testlerinde uygulama açılışları ortalama %3,16, kamera cold start %6,60 ve sistem açılışı yaklaşık %8 iyileşti. Sonuçlar uygulama ve cihaza göre değişebilir.
Hayır. Compatibility mode bazı eski uygulamaların çalışmasına yardımcı olabilir fakat Google gerçek 16 KB desteğini güvenilirlik ve kararlılık için öneriyor ve Google Play yayın şartı ayrıca karşılanmalı.
Bu olumlu bir işarettir ancak Google uygulamanın gerçek 16 KB ortamında da test edilmesini öneriyor.
Hayır. Üçüncü taraf native dependency sorunlarının çözümü zaman alabileceği için mevcut uygulamaları şimdiden kontrol etmek daha güvenli.
Jetpack Compose MVVM Room mimarisi, Kotlin ile geliştirilen Android uygulamalarında kullanıcı arayüzünü, iş mantığını ve…
Yerel Android uygulaması geliştirme, genel amaçlı bir mobil uygulama hazırlamaktan farklı problemler ortaya çıkarabiliyor. Çünkü…
Google Play uygulama geliştirme deneyimi, yalnızca Android Studio'da çalışan bir uygulama hazırlayıp AAB dosyasını Play…
.NET 11 yenilikleri, Microsoft'un yeni nesil uygulama geliştirme platformunda C# dilinden ASP.NET Core'a, Entity Framework…
Android geliştirici doğrulaması, Google'ın Android ekosisteminde uygulama dağıtan geliştiricilerin kimliğini ve uygulama paketlerinin sahipliğini doğrulamak…
GPT-6.1 Terra, OpenAI'ın hız, yetenek ve maliyet dengesine odaklanan yeni modeli olarak 26 Ekim 2026…