Categories: Yazılım

Android 16 KB Page Size Nedir? Google Play 2027 Zorunluluğu ve Çözümü

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:

  • kamera SDK’sı,
  • görüntü işleme kütüphanesi,
  • barcode kütüphanesi,
  • ML SDK’sı,
  • reklam veya analiz SDK’sı,
  • oyun motoru,
  • şifreleme kütüphanesi

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.

Android 16 KB Page Size Nedir?

İş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.

Google Neden 4 KB Yerine 16 KB Kullanıyor?

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.

16 KB Page Size Performansı Artırıyor mu?

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 Play 16 KB Zorunluluğu Ne Zaman Başlıyor?

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.

Bu Kural Hangi Uygulamaları Etkiliyor?

Google Play şartı şu kombinasyonu hedefliyor:

  • Android 15 / API 35 veya daha yüksek target SDK,
  • 64-bit Android cihazlar,
  • Google Play üzerinden yayımlanan uygulamalar.

Özellikle uygulamada native kod veya native kütüphane bulunuyorsa mutlaka kontrol yapılması gerekiyor.

Sadece Kotlin Kullanan Android Uygulamaları Etkileniyor mu?

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:

  • Kotlin,
  • Java,
  • Jetpack Compose

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 Uygulamaları 16 KB Destekliyor mu?

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:

  • kamera,
  • ML,
  • barcode,
  • görüntü sıkıştırma,
  • video,
  • harita,
  • reklam,
  • şifreleme

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.

NDK Kullanmıyorum, Yine de .so Dosyası Olabilir mi?

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.

Uygulamam Native Kod Kullanıyor mu Nasıl Anlarım?

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.

APK Analyzer 16 KB Uyumluluğunu Gösterebilir mi?

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ı.

16 KB İçin İki Farklı Alignment Kontrolü Neden Var?

Native Android uygulamalarında iki farklı hizalama konusu bulunuyor:

  • ELF segment alignment
  • APK ZIP alignment

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.

ELF Alignment Nedir?

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

ELF Alignment Komut Satırından Nasıl Kontrol Edilir?

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.

APK’nin ZIP Alignment Kontrolü Nasıl Yapılır?

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.

App Bundle 16 KB Alignment Nasıl Kontrol Edilir?

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.

Android Gradle Plugin Kaç Olmalı?

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.

AGP 8.3, 8.4 veya 8.5 Kullanıyorsam Ne Olur?

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.

NDK Hangi Sürüm Olmalı?

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.

AGP 8.5.1 + NDK r28 Kullanırsam Sorun Çözülür mü?

Birçok proje için büyük ölçüde evet.

Google’ın önerisine göre:

  • AGP 8.5.1 veya üzeri,
  • NDK r28 veya üzeri,
  • 16 KB uyumlu prebuilt dependency’ler

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.

NDK r27 veya Daha Eskiyse Ne Yapılmalı?

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

CMake Kullanıyorsam 16 KB Ayarı Nasıl Yapılır?

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ı.

ndk-build Kullanıyorsam Ne Yapmalıyım?

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.

Prebuilt .so Dosyaları Ne Olacak?

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’nın yeni sürümünü kontrol edin,
  • üreticinin 16 KB uyumluluk açıklamasını inceleyin,
  • APK Analyzer ile binary alignment’ı kontrol edin.

SDK güncellenmiyorsa alternatif kütüphane değerlendirmek gerekebilir.

Üçüncü Taraf SDK 16 KB Desteklemiyorsa Ne Yapacağım?

Ö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:

  1. SDK geliştiricisinin issue tracker’ını kontrol edin.
  2. 16 KB desteği için resmi açıklama arayın.
  3. Gerekirse sağlayıcıya issue açın.
  4. Alternatif SDK değerlendirin.

Çünkü Google Play son tarihi geldiğinde sizin uygulama kodunuz kusursuz olsa bile dependency içerisindeki uyumsuz native library yayını engelleyebilir.

PAGE_SIZE = 4096 Kullanan Native Kodlar Neden Sorun?

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.

Gerçek Page Size Native Kodda Nasıl Öğrenilir?

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.

mmap Kullanan Kodlar Kontrol Edilmeli mi?

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.

Uygulamayı Gerçek 16 KB Ortamında Test Etmek Neden Önemli?

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 Emulator ile 16 KB Testi Nasıl Yapılır?

Android Studio üzerinden Android 15 veya daha yeni 16 KB system image kullanabilirsiniz.

Genel adımlar:

  1. Android Studio SDK Manager’ı açın.
  2. Android 15 veya daha yeni SDK’yı yükleyin.
  3. 16 KB page size destekleyen emulator image seçin.
  4. Yeni AVD oluşturun.
  5. Uygulamayı emulator üzerinde çalıştırın.

Emulator açıldıktan sonra gerçekten 16 KB modda çalışıp çalışmadığını ADB ile doğrulayabilirsiniz.

adb shell getconf PAGE_SIZE Ne İşe Yarıyor?

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.

16 KB Destekleyen Fiziksel Telefonda Test Yapılabilir mi?

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.

Samsung Remote Test Lab ile Test Yapılabilir mi?

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.

Android 16 KB Compatibility Mode Nedir?

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:

  • 4 KB ELF LOAD segmentleri,
  • 4 KB ZIP alignment’a sahip native library’leri

bulunuyorsa sistem uygulamayı compatibility mode içerisinde çalıştırabilir.

Ancak bu mekanizma gerçek 16 KB desteğinin alternatifi olarak görülmemeli.

Compatibility Mode Varsa Neden Uygulamayı Güncellemem Gerekiyor?

Google açık biçimde compatibility mode’un bazı uygulamaları çalıştırmaya yardımcı olabileceğini fakat en iyi:

  • güvenilirlik,
  • kararlılık,
  • performans

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.

Android 17’de Uyumsuz Uygulamalar İçin Durum Daha Katı Olabilir

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.

AndroidManifest.xml İçinde pageSizeCompat Nedir?

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.

Google Play Console Uyarısı Görürsem Ne Yapmalıyım?

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ı:

  1. APK Analyzer ile native library olup olmadığını kontrol edin.
  2. Hangi .so dosyasının uyarı verdiğini bulun.
  3. Library size değil, alignment değerini kontrol edin.
  4. AGP sürümünü kontrol edin.
  5. NDK kullanıyorsanız NDK sürümünü kontrol edin.
  6. Üçüncü taraf SDK’ları güncelleyin.
  7. APK’yi zipalign ile doğrulayın.
  8. AAB’yi bundletool ile kontrol edin.
  9. 16 KB emulator veya cihazda runtime testi yapın.
  10. Yeni AAB yükleyerek Play Console sonucunu tekrar kontrol edin.

Android Studio Projesi İçin Pratik 16 KB Kontrol Listesi

Bir Android projesini hızlıca kontrol etmek için şu sırayı kullanabilirsiniz:

1. APK oluşturun

./gradlew assembleRelease

Windows kullanıyorsanız:

gradlew.bat assembleRelease

2. APK Analyzer’ı açın

Android Studio’da APK’nizi analiz edin.

lib klasörü yoksa uygulamanız doğrudan APK içerisinde native library taşımıyor olabilir.

3. .so dosyalarını kontrol edin

arm64-v8a ve x86_64 klasörlerindeki library’lere özellikle bakın.

4. Alignment uyarısını kontrol edin

APK Analyzer içerisindeki Alignment sütununda 16 KB uyumluluk uyarısı olup olmadığına bakın.

5. zipalign çalıştırın

zipalign -c -P 16 -v 4 app-release.apk

6. AAB oluşturun

./gradlew bundleRelease

7. bundletool kontrolü yapın

bundletool dump config --bundle=app-release.aab

Beklenen alignment:

PAGE_ALIGNMENT_16K

8. 16 KB emulator açın

Android 15 veya daha yeni 16 KB image kullanın.

9. Page size doğrulayın

adb shell getconf PAGE_SIZE

Beklenen:

16384

10. Uygulamayı gerçek kullanım senaryolarıyla test edin

Özellikle:

  • uygulama açılışı,
  • kamera,
  • görüntü işleme,
  • barcode,
  • dosya işlemleri,
  • video,
  • ML özellikleri,
  • native SDK kullanan ekranlar

ayrıntılı olarak denenmeli.

Firebase Kullanan Uygulamalar 16 KB Açısından Sorunlu mu?

“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.

ML Kit Kullanan Uygulamalar Kontrol Edilmeli mi?

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ıyorsam Sorun Var mı?

CameraX kullanılması tek başına uygulamanın uyumsuz olduğu anlamına gelmez.

Ancak kamera akışına ek olarak kullandığınız:

  • görüntü dönüştürme,
  • scanner,
  • ML,
  • video codec,
  • image processing

SDK’larının native library içerip içermediği ayrıca kontrol edilmeli.

AdMob Kullanan Uygulamalar Ne Yapmalı?

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.

Room, Retrofit veya DataStore İçin Özel Bir İşlem Gerekir mi?

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:

  • Room,
  • DataStore,
  • Flow,
  • ViewModel

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’da Sorun Yoksa Hiçbir Şey Yapmamalı mıyım?

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 Bir Android Projesinde Baştan Ne Yapılmalı?

Yeni proje oluşturuyorsanız işi sonradan düzeltmek yerine güncel toolchain kullanmak daha kolay.

Genel yaklaşım:

  • güncel Android Studio,
  • AGP 8.5.1 veya üzeri,
  • mümkünse güncel AGP,
  • NDK gerekiyorsa r28 veya üzeri,
  • güncel üçüncü taraf SDK’lar,
  • 16 KB emulator testi

şeklinde olmalı.

16 KB Desteği Uygulamanın APK Boyutunu Artırır mı?

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.

16 KB Desteği Sadece Google Play İçin mi Önemli?

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.

1 Şubat 2027’ye Kadar Beklemek Mantıklı mı?

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:

  • SDK güncellemesini beklemek,
  • alternatif dependency bulmak,
  • migration yapmak,
  • yeniden test etmek

zaman alabilir.

Bu nedenle 16 KB testini release tarihinden bağımsız olarak mevcut uygulamalara şimdiden eklemek daha mantıklı.

CI/CD İçine 16 KB Kontrolü Eklenebilir mi?

Evet ve production projelerinde oldukça mantıklı.

Örneğin release pipeline:

  1. APK/AAB oluşturabilir,
  2. zipalign kontrolünü çalıştırabilir,
  3. ELF alignment script’ini çalıştırabilir,
  4. uyumsuz binary bulunursa build’i başarısız sayabilir.

Böylece daha sonra projeye eklenen yeni bir SDK’nın sessizce 4 KB aligned library getirmesi production release sırasında fark edilir.

Google’ın check_elf_alignment.sh Script’i Ne İşe Yarıyor?

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.

Windows Geliştiricileri 16 KB Kontrolü Yapabilir mi?

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.

Android 16 KB Page Size İçin En Pratik Çözüm Ne?

Projeye göre değişse de çoğu modern Android uygulaması için pratik yol haritası şu:

  1. Android Studio ve build toolchain’i güncelleyin.
  2. AGP’yi en az 8.5.1 seviyesine çıkarın.
  3. Native kod varsa NDK r28 veya daha yenisini kullanın.
  4. Bütün üçüncü taraf SDK’ları güncelleyin.
  5. APK Analyzer ile .so dosyalarını kontrol edin.
  6. zipalign -c -P 16 -v 4 doğrulamasını çalıştırın.
  7. AAB için bundletool alignment değerini kontrol edin.
  8. 16 KB Android 15+ emulator üzerinde test edin.
  9. adb shell getconf PAGE_SIZE çıktısının 16384 olduğunu doğrulayın.
  10. Play Console’da yeni bundle’ı kontrol edin.

Kotlin Geliştiricilerinin Asıl Dikkat Etmesi Gereken Yer Kendi Kodları Değil Dependency’ler

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:

  • ELF alignment,
  • ZIP alignment,
  • AGP sürümü,
  • NDK sürümü,
  • prebuilt dependency’ler,
  • runtime page size varsayımları

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.

Sık Sorulan Sorular

Android 16 KB page size nedir?

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ı.

Google Play 16 KB zorunluluğu ne zaman başlıyor?

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.

16 KB desteklemeyen uygulamaya ne olacak?

Google’ın açıklamasına göre 1 Şubat 2027’den sonra uyumsuz uygulama güncellemelerini Google Play üzerinden yayımlayamayacaksınız.

Kotlin uygulaması 16 KB destekliyor mu?

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.

Jetpack Compose 16 KB ile uyumlu mu?

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.

NDK kullanmıyorum, yine de etkilenir miyim?

Evet. Gradle ile kullandığınız üçüncü taraf bir SDK kendi içerisinde native shared library taşıyabilir.

Uygulamada .so dosyası olup olmadığını nasıl öğrenirim?

Android Studio’da Build → Analyze APK ile APK Analyzer’ı açıp lib klasörünü kontrol edebilirsiniz.

APK 16 KB uyumluluğu nasıl kontrol edilir?

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.

zipalign başarılı olursa hangi mesaj görünür?

Doğru hizalanmış APK için komut çıktısının sonunda Verification successful görülür.

AAB 16 KB uyumluluğu nasıl kontrol edilir?

bundletool dump config --bundle=app-release.aab komutuyla bundle alignment ayarı incelenebilir. 16 KB için PAGE_ALIGNMENT_16K beklenir.

AGP kaç olmalı?

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 kaç olmalı?

NDK r28 ve üzeri 16 KB ELF alignment’ı varsayılan olarak destekliyor.

NDK r27 ile 16 KB desteklenebilir mi?

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.

16 KB emulator gerçekten çalışıyor mu nasıl anlarım?

adb shell getconf PAGE_SIZE komutunu çalıştırın. Sonuç 16384 olmalı.

16 KB page size performansı artırıyor mu?

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.

16 KB compatibility mode yeterli mi?

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ı.

Play Console uyarısı yoksa uygulamam kesin uyumlu mu?

Bu olumlu bir işarettir ancak Google uygulamanın gerçek 16 KB ortamında da test edilmesini öneriyor.

1 Şubat 2027’ye kadar beklemeli miyim?

Hayır. Üçüncü taraf native dependency sorunlarının çözümü zaman alabileceği için mevcut uygulamaları şimdiden kontrol etmek daha güvenli.

Resmi Kaynaklar

admin

Recent Posts

Jetpack Compose + MVVM + Room Mimarisi: Dolap Hafızası ile Gerçek Android Uygulaması

Jetpack Compose MVVM Room mimarisi, Kotlin ile geliştirilen Android uygulamalarında kullanıcı arayüzünü, iş mantığını ve…

1 hafta ago

Yerel Android Uygulaması Geliştirme: Çemişgezek Rehberi’nden 7 Gerçek Ders

Yerel Android uygulaması geliştirme, genel amaçlı bir mobil uygulama hazırlamaktan farklı problemler ortaya çıkarabiliyor. Çünkü…

1 hafta ago

Google Play Uygulama Geliştirme Deneyimi: Kotlin + Jetpack Compose ile Öğrendiğim 5 Şey

Google Play uygulama geliştirme deneyimi, yalnızca Android Studio'da çalışan bir uygulama hazırlayıp AAB dosyasını Play…

1 hafta ago

.NET 11 Geliyor: C# 15, ASP.NET Core ve Yeni Özellikler Neler?

.NET 11 yenilikleri, Microsoft'un yeni nesil uygulama geliştirme platformunda C# dilinden ASP.NET Core'a, Entity Framework…

1 hafta ago

Android Geliştirici Doğrulaması Nedir? 2027’de Android Uygulamalarını Neler Bekliyor?

Android geliştirici doğrulaması, Google'ın Android ekosisteminde uygulama dağıtan geliştiricilerin kimliğini ve uygulama paketlerinin sahipliğini doğrulamak…

2 hafta ago

GPT-6.1 Terra Nedir? Codex, Kodlama Performansı ve API Fiyatları

GPT-6.1 Terra, OpenAI'ın hız, yetenek ve maliyet dengesine odaklanan yeni modeli olarak 26 Ekim 2026…

2 hafta ago