Mobile App WikiMobile App Wiki
WikiApp DiscoverDiscuss

Wiki

    mobileapp.wiki

    Wiki

    • ASO17
    • Monetizasyon14
    • Mağaza Politikaları20
    • Metrikler15
    • Geliştirme25
    • Pazarlama15
    • Hukuk9
    • UI/UX14
    • Test & QA10
    • Altyapı10

    mobileapp.wiki

    Ana Sayfa/Geliştirme/16 KB Page Size Desteği (Android)
    Geliştirme5 dk okuma

    16 KB Page Size Desteği (Android)

    Android 15+ cihazlarda 16 KB page size nedir, Google Play zorunluluğu kimleri etkiler ve native kütüphaneler nasıl kontrol edilip düzeltilir ve test edilir?

    16 KB Page Size Desteği (Android)

    İçindekiler

    16 KB Page Size Nedir?Uygulamalar Neden Bozuluyor?Google Play ZorunluluğuKimler Etkileniyor?Uygulamanızı Nasıl Kontrol Edersiniz?Nasıl Düzeltilir?Build Araçlarını GüncelleyinBağımlılıkları ve Kodu Düzeltin16 KB Ortamında TestEmülatörFiziksel CihazNeyi Test Etmeli?İlgili Konular

    16 KB Page Size Nedir?

    Memory page, işletim sisteminin yönettiği en küçük bellek bloğudur. Android uzun yıllar 4 KB'lık sayfalar kullandı. Android 15 ile birlikte AOSP, 16 KB page size ile yapılandırılmış cihazları desteklemeye başladı ve Google ekosistemi bu yöne taşıyor.

    Daha büyük sayfalar bellek yönetimi yükünü azaltır. Google'ın ilk testlerinde öne çıkan sonuçlar:

    • Bellek baskısı altında uygulama açılışı: ortalama %3,16 daha hızlı, bazı uygulamalarda %30'a kadar
    • Açılış sırasında güç tüketimi: ortalama %4,56 daha düşük
    • Kamera açılışı: hot start'ta %4,48, cold start'ta %6,60 daha hızlı
    • Sistem açılışı: yaklaşık %8 (ortalama 950 ms civarı) daha hızlı

    Bedeli, ortalamada biraz daha fazla bellek kullanımı. Gerçek cihazlarda sonuçlar farklılık gösterebilir.

    Uygulamalar Neden Bozuluyor?

    Kotlin ve Java kodu page size'la ilgilenmez; native kod ilgilenir. ELF LOAD segmentleri 4 KB'a hizalanmış bir .so kütüphanesi 16 KB cihazda düzgün yüklenemez. Sonuç genellikle açılışta ya da kütüphane ilk yüklendiğinde crash olur. Page size'ı 4096 olarak sabit yazan kod da sorun çıkarabilir.

    Google Play Zorunluluğu

    Google ilk duyuruda, 1 Kasım 2025'ten itibaren Android 15 (API 35) ve üzerini hedefleyen yeni uygulamaların ve güncellemelerin 16 KB desteği sunması gerektiğini açıkladı. Bu tarih sonradan değişti. Ekim 2026 itibarıyla resmi Android rehberinde şunlar yazıyor:

    • Android 15 (API 35) ve üzerini hedefleyen tüm uygulamalar, 64-bit cihazlarda 16 KB sayfaları desteklemeli.
    • 1 Şubat 2027'den itibaren 16 KB desteği olmayan güncellemeler Google Play'de yayınlanamayacak.
    • O tarihe kadar Play Console, etkilenen sürümlerde uyumluluk uyarısı gösteriyor.

    Play'in target API level kuralları zaten yeni uygulama ve güncellemeleri güncel API seviyelerine zorladığı için, native kod içeren ve aktif geliştirilen neredeyse her uygulama bu kapsamda.

    Kimler Etkileniyor?

    Proje yapısıEtkilenir mi?Yapılacak
    Saf Kotlin/Java, tüm bağımlılıklar saf JVMHayırYine de 16 KB ortamında test edin
    NDK ile kendi C/C++ kodunuzEvetGüncel NDK ve AGP ile yeniden derleyin
    .so içeren SDK'lar (reklam, analytics, kripto, medya, ML)Evet16 KB uyumlu sürüme güncelleyin
    React NativeEvet0.77 veya üstüne geçin, native modülleri güncelleyin
    FlutterEvetGüncel Flutter sürümü kullanın, native kodlu plugin'leri güncelleyin
    Unity / Unreal oyunlarEvetEngine'in 16 KB rehberini izleyin, engine'i güncelleyin

    Pratikte en sık sorun sizin kodunuz değil, üçüncü parti bir bağımlılığın içindeki prebuilt native kütüphanedir.

    Uygulamanızı Nasıl Kontrol Edersiniz?

    1. APK Analyzer – Android Studio'da Build > Analyze APK ile lib klasörünü açın, Alignment sütunundaki uyarılara bakın.
    2. Lint – Android Studio Lint, 16 KB hizalı olmayan native kütüphaneleri işaretler.
    3. zipalign – APK'nın ZIP hizalamasını doğrulayın:
    zipalign -c -P 16 -v 4 app-release.apk
    # Çıktı "Verification successful" ile bitmeli
    
    1. ELF hizalaması – Google'ın check_elf_alignment.sh script'i (Linux/macOS) her arm64-v8a kütüphanesi için ALIGNED veya UNALIGNED yazar. Elle kontrolde llvm-objdump -p libfoo.so çıktısındaki LOAD segmentleri align 2**14 olmalı; 2**13 ve altı sorunludur.
    2. App bundle – AAB için bundletool dump config --bundle=app.aab | grep alignment çalıştırıp PAGE_ALIGNMENT_16K değerini arayın.
    3. Play Console – App bundle explorer, 16 KB desteği olmayan sürümleri işaretler.

    Nasıl Düzeltilir?

    Build Araçlarını Güncelleyin

    • Android Gradle Plugin 8.5.1 ve üstü, sıkıştırılmamış shared library'leri 16 KB ZIP hizalamasıyla paketler. AGP 8.3–8.5 arasında APK'lar varsayılan olarak hizalıdır, ancak bundletool APK'ları varsayılan olarak zipalign etmez.
    • NDK r28 ve üstü varsayılan olarak 16 KB hizalı derler.
    • NDK r27 ve altında linker flag'lerini kendiniz ekleyin:
    target_link_options(${CMAKE_PROJECT_NAME} PRIVATE
        "-Wl,-z,max-page-size=16384"
        "-Wl,-z,common-page-size=16384"
    )
    

    ndk-build kullanıyorsanız aynı flag'leri LOCAL_LDFLAGS'a ekleyin.

    AGP'yi yükseltemiyorsanız native kütüphaneleri sıkıştırılmış olarak paketleyebilirsiniz. Çalışır ama kurulum boyutu büyür:

    android {
        packaging {
            jniLibs { useLegacyPackaging = true }
        }
    }
    

    Bağımlılıkları ve Kodu Düzeltin

    • .so dosyası içeren tüm SDK ve plugin'leri güncelleyin; release notlarında 16 KB desteğini arayın.
    • Uyumlu sürümü olmayan bir SDK varsa sağlayıcıyla iletişime geçin ya da alternatifine geçin.
    • Sabit page size değerlerini kaldırın. Gerçek değeri runtime'da sysconf(_SC_PAGESIZE) veya getpagesize() ile okuyun.
    • Yeniden derleyip yukarıdaki kontrolleri tekrar çalıştırın. 16 KB cihazlar için arm64-v8a ve x86_64 önemlidir, ancak tüm ABI'leri birlikte derleyin.

    16 KB Ortamında Test

    Emülatör

    1. Android Studio SDK Manager'dan Android 15 (VanillaIceCream) veya üstü için "Google APIs Experimental 16 KB Page Size" system image'ını (ARM 64 v8a ya da x86_64) kurun.
    2. Bu image ile bir sanal cihaz oluşturup başlatın.
    3. Page size'ı doğrulayın:
    adb shell getconf PAGE_SIZE
    # 16384
    

    Fiziksel Cihaz

    Pixel 8 ve 8 Pro'da (Android 15 QPR1 ve üstü) ve bazı yeni cihazlarda geliştirici seçeneklerindeki Boot with 16KB page size ayarı cihazı 16 KB modunda yeniden başlatır. Samsung Remote Test Lab da 16 KB test cihazları sunuyor.

    Neyi Test Etmeli?

    • Cold start ve native kod yükleyen tüm ekranlar (kamera, video, harita, ML, ödeme)
    • Native kütüphaneyi geç yükleyebilen background işler ve push akışları
    • Sadece debug değil release build'ler; minification ve paketleme farklıdır

    İlgili Konular

    • Android API Level Gereksinimleri (2026)
    • App Size Optimizasyonu
    • React Native
    • Flutter

    Bu içeriği nasıl buldunuz?

    Paylaş

    ← Önceki

    React Native

    Sonraki →

    Flutter

    İlgili İçerikler

    React Native

    Meta'nın JavaScript tabanlı cross-platform framework'ü React Native rehberi. iOS ve Android native uygulama geliştirme, Expo ve New Architecture.

    Flutter

    Google'ın Dart tabanlı cross-platform UI toolkit'i Flutter rehberi. Tek codebase ile iOS, Android, Web ve Desktop uygulama geliştirme stratejileri.

    Expo

    React Native için hızlı geliştirme platformu Expo rehberi. EAS Build, OTA güncelleme, cloud build, managed workflow ve SDK modülleri detayları.

    CI/CD (Mobil)

    Mobil uygulamalar için CI/CD pipeline rehberi. EAS Build, Fastlane, Bitrise, Codemagic ve GitHub Actions ile sürekli entegrasyon ve dağıtım.

    Code Signing (iOS)

    iOS uygulama imzalama süreci rehberi. Certificate ve provisioning profile yönetimi, automatic ve manual signing, Fastlane Match ve CI/CD entegrasyonu.

    Android Kapalı Test

    Android Kapalı Test hizmeti için androidtesti.com platformunu ziyaret edin.

    androidtesti.com