İçeriğe geçin

Derleme hatası incelemesi

Uygulamanız 16 KB bellek sayfa boyutlarını desteklemeli: nasıl çözersiniz

Play Console tek bir şeyi bildiriyor ve hiçbir sorumlu göstermiyor: paketinizin içindeki bir yerel kitaplık hâlâ 4 KB bellek sayfaları için derlenmiş. Bu yazı tam olarak hangi .so dosyasının sorun olduğunu buluyor, onu hangi bağımlılığın getirdiğini söylüyor, framework'ünüz için en kısa çözümü veriyor ve yeniden yüklemeden önce derlemenin temiz olduğunu kanıtlayan komutları elinize tutuşturuyor.

1 Şub 2027 Sürüm engeli başlıyor
API 35+ Kapsam, 64 bit cihazlar
2**14 En düşük ELF hizalaması
.so Önce yerel kodu inceleyin

Hangi tarih gerçekten geçerli

Uyarı aşaması, sürüm engeli henüz yürürlükte değil
161 Uyumsuz güncellemelerin engellenmesine kalan gün
2 Okumuş olabileceğiniz eski tarih, ikisi de geçersiz
1 Kas 2025 özgün 31 May 2026 uzatma 1 Şub 2027 güncel Bugün

Google'ın 5 Ağustos 2026 tarihinde son güncellenen mevcut sayfası, Android 15 (API düzeyi 35) veya üstünü hedefleyen uygulamaların 64 bit cihazlarda 16 KB bellek sayfa boyutlarını desteklemesi gerektiğini ve 1 Şubat 2027 tarihinden itibaren bunu yapmayan güncellemeleri yayınlayamayacağınızı belirtiyor. Bir arama sonucu size 1 Kasım 2025 veya 31 Mayıs 2026 dediyse, tarih değişmeden önce yazılmıştır.

Hızlı yanıt

Google Play, Android 15 (API düzeyi 35) veya üstünü hedefleyen uygulamaların 64 bit cihazlarda 16 KB bellek sayfa boyutlarını desteklemesini şart koşuyor ve 1 Şubat 2027 tarihinden itibaren bunu yapmayan güncellemeleri yayınlayamayacaksınız. Yalnızca Java veya Kotlin ile yazılmış, tüm kitaplıkları ve SDK'ları dâhil bir uygulama zaten uyumludur. Yerel .so kitaplıkları paketleyen bir uygulama ise her biri yeniden derlenene veya değiştirilene, tercihen Android Gradle Plugin 8.5.1+ ve NDK r28+ ile, ve derleme iki ayrı denetimi geçene kadar başarısız olur: her ELF LOAD segmenti en az 2**14 hizalı olmalı ve app bundle PAGE_ALIGNMENT_16K bildirmelidir. Framework'ünüzü güncellemek kanıt değildir; kanıt yapıtın kendisidir. Bu uyarıyı gidermek yürüyen bir kapalı testi (closed testing) durdurduysa, siz yeniden derlerken test kullanıcısı tarafını PrimeTestLab ayakta tutar.

Uyarı kısa, en fazla bir dosya adı veriyor ve derlemeyi çoktan bitmiş saydığınız anda geliyor. Aynı üç yanlış dönüşün tekrarlanmasının nedeni bu: değişmiş bir tarihe güvenmek, bir framework'ü güncelleyip işin bittiğini varsaymak ya da tek bir yerel APK'yı denetleyip Google'ın gerçekte derlediği pakete hiç bakmamak. Bu yazı, sorunun gerçekte çözüldüğü sıraya göre kurulu, yani belirle, kaynağını bul, onar, kanıtla; ve içindeki her şey 5 Ağustos 2026 itibarıyla günceldir, Google'ın sayfa boyutu rehberine o sayfanın son güncellendiği gün karşılaştırılarak doğrulanmıştır. Kanıt resmî bir sürüm notu değil de bir bakımcının issue tracker kaydıysa, sayfa bunu gerçeğe yuvarlamak yerine kartın üzerinde açıkça söyler.

Üç adımda çözün

Bu hatanın her gerçek çözümü aynı sırayla aynı üç hamledir: hizasız yerel kitaplığı belirleyin, onu sağlayan bağımlılığı güncelleyin, sonra yükleyeceğiniz yapıtı doğrulayın. Doğrudan ikinci adıma atlamak, bunca geliştiricinin bir framework'ü güncelleyip yeniden derlemesine ve uyarının hiç değişmeden geri gelmesine yol açan şeydir.

Şartın kendisi dar kapsamlıdır. Google'ın sayfa boyutu rehberi, Android 15 (API düzeyi 35) veya üstünü hedefleyen uygulamaların 64 bit cihazlarda 16 KB bellek sayfa boyutlarını desteklemesi gerektiğini ve 1 Şubat 2027 tarihinden itibaren bunu yapmayan güncellemeleri yayınlayamayacağınızı söylüyor. Yalnızca yerel kodu ilgilendirir. Uygulamanız ve içindeki her kitaplık ve SDK saf Java veya Kotlin ise, Google uygulamanızın 16 KB cihazları zaten desteklediğini belirtiyor. Sorun şu ki bu uyarıyı görenlerin çoğu kendini bu kategoride sanıyor ama değil.

01

Hatalı .so dosyasını belirleyin

Üretim APK'nızı Android Studio'da Build > Analyze APK... ile açın, lib/arm64-v8a ve lib/x86_64 klasörlerini genişletin ve Alignment sütununu okuyun. İşaretlenen her dosya adını yazın. Elinizdeki tek güvenilir arama anahtarı bu adlardır.

Arama araçlarını açın
02

Onu sağlayan neyse onu güncelleyin

Sizin derlediğiniz bir ikili dosyayı araç zinciriniz düzeltir: AGP 8.5.1 veya üstü ile NDK r28 veya üstü. Bir eklenti, SDK, motor veya AAR içinde gelen bir ikili dosyayı ise yalnızca onu derleyen düzeltebilir; bu yüzden yapılacak iş o paketi yükseltmek, değiştirmek ya da ondan yeniden derlenmiş bir yapıt istemektir.

Framework'ünüz için en kısa yolu bulun
03

Güncellemeyi değil yapıtı doğrulayın

İki bağımsız denetimin ikisi de geçmelidir. Her ELF LOAD segmenti 2**14 veya üstü hizalı olmalı ve bundletool üretim paketi için PAGE_ALIGNMENT_16K bildirmelidir. Birini geçmek diğeri hakkında hiçbir şey kanıtlamaz.

Doğrulama komutlarını üretin

Tüm karar tek ekranda

Tek bir bağımlılık sürümünü değiştirmeden önce bunu baştan sona gözden geçirin. Yaklaşık iki dakika sürer ve doğru şeyi düzeltmekle hiç sorun olmamış on bir paketi güncellemek arasındaki farkı yaratır.

Üretim APK'sı içinde .so dosyaları olan bir lib klasörü var mı?

Hayır

Zaten uyumlu

APK'da yerel kod yok. Google, kitaplıkları ve SDK'ları dâhil yalnızca Java veya Kotlin kullanan bir uygulamanın 16 KB cihazları zaten desteklediğini belirtiyor. Yine de bir test turu değerlidir; incelediğiniz derlemenin yüklediğinizle aynı olduğunu doğrulamak da öyle.

Evet

APK Analyzer veya check_elf_alignment.sh hizasız bir kitaplık adı veriyor mu?

Evet

Kaynağını bulun, sonra güncelleyin

Tam olarak bu dosya adını hangi framework'ün, eklentinin, SDK'nın veya motorun sağladığını bulun ve o paketi güncelleyin. Kendi NDK'nız, başkasının önceden derlediği bir ikili dosyayı yeniden yazamaz.

Hayır

Üretim paketi için bundletool dump config ne bildiriyor?

4K

PAGE_ALIGNMENT_4K

Kitaplıklar sorunsuz ama paketleme değil. AGP 8.5.1 veya üstüne geçip yeniden derleyin ya da yükseltemiyorsanız eski paketleme çözümünü uygulayın.

16K

PAGE_ALIGNMENT_16K

Paketleme doğru. Şimdi Play'in ürettiği APK'ları gerçek bir 16 KB ortamında test edin ve sabit sayfa boyutu varsayan çalışma zamanı kodunu gözden geçirin.

Tuzak tek cümlede

Her hizalama denetimini geçen yerel bir APK, yüklediğiniz paketin doğru olduğunu kanıtlamaz. Google özellikle Android Gradle Plugin 8.3 ile 8.5 arasının, sizin makinenizdeki APK kusursuz görünse bile Play'in derlediği APK'ları düzgün ZIP hizalı olmayan bir paket üretebileceği konusunda uyarıyor. Bu uyuşmazlık, uyarının "başarılı" bir düzeltmeden sonra hayatta kalmasının açık ara en yaygın nedenidir.

Play Console uyarısı gerçekte ne anlama geliyor

Google'ın belgelediği sonuç nettir: 1 Şubat 2027 tarihinden itibaren Android 15 (API düzeyi 35) veya üstünü hedefleyen ve 16 KB desteği olmayan güncellemeleri yayınlayamayacaksınız. Bu, güncellemeler üzerinde bir yayın engelidir; yayında olan bir uygulamanın o gün mağazadan kaldırılacağı anlamına gelmez. O tarihe kadar çoğu geliştirici sert bir yükleme reddi değil bir uyumluluk uyarısı görür.

İfade önemli, çünkü bu hikâyenin panik sürümü doğru sürümünden daha hızlı yayılıyor. Google'ın gerçekten gösterdiği metinleri okuyun; kapsam dar ve yönetilebilir hâle gelir.

Play Console · App bundle details

App must support 16 KB memory page sizes

Action by Feb 1, 2027
Consequence You won't be able to release app updates
Also shown Extension granted

Google'ın sayfa boyutu rehberinde yayımladığı Play Console ekran görüntüsünden yeniden kurgulandı. Etiketler o ekran görüntüsündeki hâliyle İngilizce aktarıldı: sizin Console'unuz bunları Türkçe gösterebilir, düzen ve kullanılabilir düğmeler de hesaba göre değişebilir.

Bu kartın iki okuması yaygın biçimde yanlıştır. Birincisi, "Action by Feb 1, 2027" bir silme geri sayımı değildir: Google'ın aynı sayfadaki kendi metni sonucu bu güncellemelerin yayınlanamaması olarak tanımlıyor. İkincisi, Extension granted metni Google'ın ekran görüntüsünde geçiyor, ancak bu size şu anda açık bir uzatma başvuru akışı olduğunu göstermez. Bir uzatmayı ancak seçeneği kendi Play Console'unuzda görüyorsanız gerçek sayın.

Gerçekte hangi tarihi okudunuz?

Üç tarih dolaşıyor ve yalnızca biri geçerli. Gördüğünüzü seçin; araç, Google'ın en son 5 Ağustos 2026 tarihinde güncellenen mevcut sayfasına karşı durumunu çözsün.

Araç 01

Tarih çözümleyici

Hâlâ geçerli olup olmadığını görmek için bir tarih seçin.

Google bu tarihi birden fazla kez öteledi. 1 Şubat 2027 çevresinde bir sürüm planı kurmadan önce sayfa boyutu rehberini kendiniz açın ve altındaki "Son güncelleme" damgasını kontrol edin. Bu tek alışkanlık, bu yazı dâhil herhangi bir yazıda basılı herhangi bir tarihten daha değerlidir.

16 KB şartı uygulamamı etkiliyor mu?

Buna framework'ünüz karar vermez. Ürettiğiniz APK'nın içeriği karar verir. lib altında .so dosyaları varsa, hayatınızda hiç C++ dosyası açmamış olsanız bile kapsamdasınız; hiç yoksa Google'ın kendi yönlendirmesi 16 KB cihazları zaten desteklediğinizi söylüyor.

Saf Java veya Kotlin uygulamaları

Google burada açık: uygulamanız ve tüm kitaplıkları ile SDK'ları yalnızca Java veya Kotlin kullanıyorsa, uygulamanız 16 KB cihazları zaten destekliyor. Google yine de beklenmedik gerilemeleri yakalamak için 16 KB ortamında test edilmesini öneriyor; bu size bir emülatör turu maliyetindedir.

Tuzak "ve tüm kitaplıkları ile SDK'ları" ifadesinde. Kendi kaynak kodunda Kotlin'den başka bir şey bulunmayan bir projeye tek bir veritabanı, analitik, çökme raporlama, medya, harita, makine öğrenmesi veya güvenlik bağımlılığı yerel ikili dosya ekleyebilir. "C++ yazmadım" bir kanıt değildir. lib klasörü kanıttır.

Flutter, React Native, Unity, Kivy ve kodsuz oluşturucular

Bu yığınlar tasarımları gereği yerel çalışma zamanları, motor ikili dosyaları ve eklenti kitaplıkları taşır; bu yüzden neredeyse her zaman kapsamdadırlar. Google, yerel kitaplık kullanan üçüncü taraf uygulama oluşturucuları, yazarı hiç C veya C++ yazmamışken bir uygulamanın nasıl etkilenebileceğinin yollarından biri olarak açıkça sayıyor. Değişen şey yerel kodunuzun olup olmadığı değil, sorunlu parçayı hangi paketin sağladığıdır; bu yüzden dosya adını kaynağına bağlamak her güncellemeden önce gelir.

Tam olarak nasıl kontrol edilir

Android Studio Build Analyze APK... lib/

Üretim APK'sını açın, lib klasörünü genişletin ve içindeki ABI klasörlerine bakın; normalde arm64-v8a ve x86_64. Orada bulunan herhangi bir paylaşılan nesne dosyası, uygulamanızın yerel kod kullandığı anlamına gelir. Hiç .so dosyası ve hiç lib klasörü yoksa bu APK yerel kod kullanmıyordur. Analizcideki Alignment sütunu hizalama sorunu olan dosyalar için uyarı gösterir; "bir şeyler ters" noktasından bir dosya adına giden en hızlı yol budur.

Araç 02

Etkilenme triyajı

01 Uygulamanız şu anda neyi hedefliyor?

02 Üretim APK'sını APK Analyzer'da açın. lib klasörü var mı?

03 Uygulamayı en iyi hangisi tanımlıyor?

04 Üretim paketi üzerinde bundletool dump config çalıştırdınız mı?

4 KB ikili dosya 16 KB cihazda neden başarısız olur

Bellek sayfası, çekirdeğin bir kerede eşlediği en küçük bloktur. Android tarihsel olarak 4 KB sayfalar kullandı; Android 15, 16 KB sayfalarla yapılandırılmış cihazlar için destek ekledi. Yerel bir kitaplık, segmentlerinin hangi hizalamaya göre bağlandığını kaydeder ve bu değer cihazın sayfa boyutundan küçükse yükleyici segmenti bir sayfa sınırına yerleştiremez.

Mekanizmanın tamamı bu ve sürekli karşınıza çıkacak tek sayıyı da bu açıklar. Hizalama ikinin kuvveti olarak ifade edilir: 2**12 4096 bayt, 2**14 16384 bayttır. Google'ın kuralı, yerel bir kitaplıktaki her LOAD segmentinin 2**14 veya üstüne hizalı olmasıdır. 2**14 ile derlenmiş bir kitaplık hem 4 KB hem 16 KB cihazlarda çalışır, çünkü 16384 sayısı 4096'nın tam katıdır. 2**12 ile derlenmiş bir kitaplık yalnızca küçük sayfa boyutunda çalışır. Çözümün her zaman "hizalamayı yükselt" olması, hiçbir zaman "cihazı algıla" olmaması bu asimetriden gelir.

Araç 03

Sayfa görselleştirici

Kitaplığınızın bildirdiği hizalamayı seçin ve segmentlerinin 16 KB sayfa kullanan bir cihazda nerede başlayabileceğini görün.

Geçer

Kitaplığın dışında yaşayan, tamamen ayrı ikinci bir koşul daha var. Bir APK içinde sıkıştırılmadan saklanan yerel kitaplıkların, ZIP arşivinin kendi içinde de 16 KB sınırına oturması gerekir. Bu bir paketleme özelliğidir, zipalign ile denetlenir ve derleme eklentiniz tarafından yapılandırılır; içindeki her kitaplık kusursuz hizalıyken bile yanlış olabilir. Bu iki fikri ayrı tutmak, bu bölümden çıkarabileceğiniz en yararlı şeydir.

Sayıları okumak

llvm-objdump çıktısında 2**14 görüyorsanız geçer. 2**13 veya 2**12 başarısızdır. Kısmi puan ya da "yeterince yakın" diye bir şey yok: tek bir ABI içindeki tek bir kitaplıkta tek bir hizasız LOAD segmenti, uyarının hesabınızda kalması için yeterlidir.

Her framework için en kısa çözüm

Bir framework'ün hazır olması ile bir uygulamanın uyumlu olması iki ayrı şeydir. React Native 0.77 ve desteklenen Unity sürümleri gerçek, belgelenmiş taban değerlerdir. Flutter'ın doğrulanabilir evrensel bir alt sınırı yoktur. Her durumda güncelleme, framework'ün kendi ikili dosyalarını düzeltir ve her üçüncü taraf eklentiyi tam olarak eskisi kadar uyumsuz bırakır.

Araç 04

Framework bulucu

    
                

    Bundan sonra hâlâ ne başarısız olabilir

    Tüm taban değerler tek tabloda

    Framework Belgelenmiş taban En kısa eylem Güven
    Flutter Doğrulanmış evrensel alt sınır yok; 3.38 belgelenmiş hazırlık dönüm noktası (varsayılan NDK r28) Güncel kararlı Flutter, yerel eklentileri güncelle, temizle, yeniden derle, her kitaplığı incele KISMİ
    React Native 0.77 Desteklenen yükseltme yolu, ardından yerel modülleri ve sağlayıcı SDK'larını güncelle DOĞRULANDI
    Unity 6.1 hattı 6000.1 veya üstü Editörü yükselt, paket ve eklentileri güncelle, yeniden derle DOĞRULANDI
    Unity 6 LTS 6000.0.38f1 veya üstü Yukarıdakiyle aynı DOĞRULANDI
    Unity 2022 LTS 2022.3.56f1 veya üstü Yukarıdakiyle aynı DOĞRULANDI
    Unity 2021 2021.3.48f1 veya üstü, genişletilmiş LTS uygunluğu gerekir Hakkınız varsa yükseltin, yoksa desteklenen bir editöre geçin DOĞRULANDI
    Unity Burst 1.8.21 veya üstü lib_burst_generated.so adı geçtiğinde Burst'ü yükseltin DOĞRULANDI
    Yerel Android NDK r28+ ile AGP 8.5.1+ Kendi kodunuzu yeniden derleyin, önceden derlenmiş her bağımlılığı güncelleyin DOĞRULANDI
    Eski NDK'ya bağlı r27 veya öncesi, iki bağlayıcı seçeneğiyle max-page-size ve common-page-size ekleyin, tüm kitaplıkları yeniden derleyin ÇALIŞIR, TERCİH EDİLMEZ
    Kivy veya Python oluşturucu Doğrulanmış evrensel sürüm yok Oluşturucuyu ve tarifleri güncelleyin, tam dosya adını yukarıya iletin SAĞLAYICIYA BAĞLI
    Kodsuz oluşturucu Doğrulanmış evrensel sürüm yok Sağlayıcının uyumlu derleme yığınında yeniden üretin, dosya adını onlara gönderin SAĞLAYICIYA BAĞLI

    Güven etiketleri bu sayfanın her yerinde aynı anlama gelir. DOĞRULANDI, güncel bir birincil kaynağın bunu doğrudan söylediği anlamına gelir. KISMİ, güvenilir bir kaynağın temel iddiayı desteklediği ama her uygulama ayrıntısını desteklemediği anlamına gelir. BİLDİRİLDİ, kanıtın resmî bir sürüm notu değil, bir bakımcının issue tracker kaydı veya geliştirici bildirimleri olduğu anlamına gelir.

    Hataya yol açan kitaplığı tam olarak bulun

    Dosya adı, soruşturmanın tamamıdır. libfoo.so dosyasının hatalı ikili dosya olduğunu öğrendiğiniz anda soru "16 KB desteğini nasıl düzeltirim" olmaktan çıkar ve "libfoo.so dosyasını hangi paket getiriyor ve daha yeni bir sürümü var mı" olur. İkinci sorunun bir yanıtı vardır; birincinin yoktur.

    APK Analyzer ile başlayın

    Build > Analyze APK... menüsünü açın, üretim APK'sını yükleyin ve lib klasörünü genişletin. İçeride her ABI için bir klasör görürsünüz, normalde arm64-v8a ve x86_64. Alignment sütunu, hizalama sorunu olan dosyaların karşısında uyarı mesajları gösterir. Android Studio'nun kendi uyarıları ve Lint de uyumsuz yerel kitaplıkları öne çıkarır; aynı bulguyu birden fazla yerde görebilirsiniz.

    Tek bir sürüm numarasına dokunmadan önce işaretlenen her dosya adını not edin. İki ABI klasörünü ayrı ayrı kontrol edin: arm64-v8a geçerken x86_64 kalması ya da tersi tamamen normaldir, çünkü bunlar potansiyel olarak farklı hatlarda derlenmiş farklı ikili dosyalardır.

    Komut satırı çıktısını çözün

    Terminalde çalışmayı tercih ediyorsanız Google, bir APK için ALIGNED veya UNALIGNED bildiren check_elf_alignment.sh betiğini sunuyor; tek bir kitaplığı da doğrudan llvm-objdump ile inceleyebilirsiniz. İkisi de Android SDK Build-Tools 35.0.0 veya üstünü gerektirir. Yazdıklarını aşağıya yapıştırın, araç size geri okusun.

    Araç 05

    ELF çözücü

    llvm-objdump -p file.so | grep LOAD, check_elf_alignment.sh veya zipalign -c -P 16 çıktısını yapıştırın. Her şey tarayıcınızda ayrıştırılır; hiçbir yere hiçbir şey yüklenmez.

    Bir çıktı yapıştırın ve Çöz düğmesine basın.

    Hangi bağımlılığın sağladığını bulun

    Play Console da APK Analyzer da size bir dosya adı verir, sahibini vermez. Aşağıya yazın; araç, o ikili dosya hakkında bilinenleri kanıt kalitesiyle birlikte söylesin ve arama komutlarını dosya adınız yerine konmuş hâlde versin.

    Araç 06

    Kitaplık sahibi araması

    Olası sahibini belirlemek için bir dosya adı yazın veya seçin.

    ./gradlew app:dependencies size çözülmüş bağımlılık grafiğini gösterir; kendinizin hiç eklemediği bir kitaplığı çeken geçişli paketi böyle bulursunuz. Belirli bir .so dosyasının hangi yapıtın içinde olduğunu doğrudan söylemez, bu yüzden onu şüpheli AAR dosyasını açmakla birlikte kullanın. Bunlar Google'ın zorunlu tuttuğu adımlar değil, pratik tanı teknikleridir.

    Yalnızca yerel APK'yı değil app bundle dosyasını doğrulayın

    Yerel APK'nız ile Google Play'in paketinizden ürettiği APK'lar farklı yapıtlardır. ELF hizalaması her kitaplığın içindedir; ZIP hizalaması arşivin nasıl paketlendiğine ait bir özelliktir; paket ise Play'e hangisini kullanacağını söyleyen bir yapılandırma taşır. Üçü de birbiriyle çelişebilir ve kullanıcıların ne kuracağına yalnızca sonuncusu karar verir.

    Sorunun en can sıkıcı biçiminin arkasındaki mekanizma budur: geliştirici her şeyi günceller, yerel APK'yı inceler, temiz çıktı görür, yükler ve uyarı hâlâ oradadır. Kontrol ettiği hiçbir şey yanlış değildi. Yalnızca Play'in değerlendirdiği şeyi hiç kontrol etmemişti.

    İncelediğiniz şey

    makinenizdeki app-release.apk

    Gradle tarafından doğrudan sizin donanımınızda, sizin paketleme davranışınızla derlendi. Burada zipalign geçmek yalnızca bu dosyanın doğru paketlendiğini kanıtlar.

    Play'in değerlendirdiği şey

    app-release.aab dosyasından üretilen APK'lar

    Google tarafından paketinizden, paketin istediği hizalamayla derlendi. Paket 4 KB diyorsa, yerel APK'nız ne kadar temiz olursa olsun bunlar hatalıdır.

    Bu yüzden yükleyeceğiniz paket üzerinde her seferinde şunu çalıştırın:

    bundletool dump config --bundle=app-release.aab | grep alignment

    İstediğiniz sonuç PAGE_ALIGNMENT_16K. PAGE_ALIGNMENT_4K, paketin bundletool aracına yerel kitaplıkları 4 KB sınırlarında paketlemesini söylediği anlamına gelir; yani Play'in ondan derlediği her APK hatalı olur. Google özellikle Android Gradle Plugin 8.3 ile 8.5 arasının tam bu uyuşmazlığı üretebileceği konusunda uyarıyor: yerel derleme hizalı görünür ama Play'in paketten derlediği uygulama 16 KB cihazda düzgün kurulmaz. Tercih edilen çözüm Android Gradle Plugin 8.5.1 veya üstüne geçmektir.

    Her komut, kendi dosya adlarınızla

    Dosya adlarınızı bir kez yazın. Aşağıdaki her komut kendini yeniden yazar ve her sekme başarı sayılan tam çıktıyı gösterir; böylece bir sonucun iyi olup olmadığını asla tahmin etmezsiniz.

    Araç 07

    Komut laboratuvarı

    
                
    Geçer
    Kalır

    "APK Analyzer hizalı diyor" ile yetinmeyin

    Geçen bir APK incelemesi dört denetimden biridir, bitiş çizgisi değil. ELF LOAD hizalamasını, APK'nın ZIP hizalamasını, paket yapılandırmasını ve Play'in gerçekte ürettiği yapıtın çalışma zamanı davranışını ayrı ayrı doğrulayın. Bunlardan herhangi birinin kalması, düzeldiğini sandığınız bir derlemeden sonra uyarının hesabınızda kalması için yeterlidir.

    AGP, NDK ve paketleme tuzağı

    Yükün çoğunu iki sürüm taşır. NDK r28 veya üstü yerel kodu varsayılan olarak 16 KB hizalı derler ve Android Gradle Plugin 8.5.1 veya üstü sıkıştırılmamış yerel kitaplıkları 16 KB ZIP sınırlarında doğru paketler. İkisi de bir bağımlılıkla gelen önceden derlenmiş bir ikili dosyayı onaramaz.

    Tehlikeli orta alan Android Gradle Plugin 8.3 ile 8.5 arasıdır. Bu aralıkta yerel derleme tamamen doğru görünebilirken bundletool, paketinizden Play için ürettiği APK'ları ZIP hizalamaz; Google'ın sonuca dair ifadesi de nettir: o paketten derlenen uygulama düzgün kurulmaz. 8.5.0 kullanıyorsanız ve yerel APK'nız aklınıza gelen her denetimi geçiyorsa, önce elemeniz gereken şey budur.

    Araç 08

    Araç zinciri denetleyicisi

    
                

    Derleme ayarları başvurusu

    Durum Ayar Notlar
    Tercih edilen NDK r28 veya üstü Varsayılan olarak 16 KB hizalı yerel çıktı üretir
    Tercih edilen AGP 8.5.1 veya üstü Sıkıştırılmamış yerel kitaplıkları 16 KB ZIP sınırlarında işler
    NDK r27 veya öncesi -Wl,-z,max-page-size=16384 Her yerel hedefte zorunlu bağlayıcı seçeneği
    NDK r27 veya öncesi -Wl,-z,common-page-size=16384 En büyük sayfa boyutu seçeneğiyle birlikte kullanın
    ndk-build LOCAL_LDFLAGS += ... İki seçeneği de her yerel hedefe uygulayın
    CMake target_link_options(...) İki seçeneği de ilgili her hedefe uygulayın
    AGP yükseltilemiyor jniLibs.useLegacyPackaging = true Yerel kitaplıkları sıkıştırır; kurulu disk kullanımını artırır
    AGP 8.0 veya öncesi android.bundle.enableUncompressedNativeLibs=false Yukarıdaki seçeneğin yanında ek eski özellik
    Çalışma zamanı kodu getpagesize() veya sysconf(_SC_PAGESIZE) Sabit 4096 değerlerini ve sabit PAGE_SIZE varsayımlarını değiştirin

    Paketlemenin düzeltemeyeceği kısım

    Kendi C veya C++ kodunuz bir sayfa boyutu varsayıyorsa hiçbir derleme ayarı sizi kurtarmaz. Sabit 4096 değerlerini ve sabit bir PAGE_SIZE sabitine olan her bağımlılığı kaldırın, gerçek değeri çalışma zamanında getpagesize() veya sysconf(_SC_PAGESIZE) ile sorgulayın ve her mmap() çağrısını, elle sayfa hizaladığınız her argümanla birlikte gözden geçirin. Bu, bir uygulamanın 16 KB cihaza sorunsuz kurulduğu, paket denetimlerini geçtiği ve sonra bellek eşlemeye ilk dokunuşta çöktüğü hata sınıfıdır.

    İşlem sırası

    Derleyici tarafını paketleme tarafından önce düzeltin. Önce eski paketleme çözümünü uygularsanız, APK'nız zipalign denetimini geçmeye başlar ama içindeki kitaplıklar hâlâ 4 KB sayfalar için derlenmiş olur; asıl sorunu yeşil bir sonucun arkasına saklamış olursunuz.

    Gerçek bir 16 KB ortamında test edin

    Testinizin bir anlamı olup olmadığına tek bir komut karar verir: adb shell getconf PAGE_SIZE çıktısı 16384 olmalıdır. Her oturumdan önce çalıştırın. Sessizce 4 KB modunda açılmış bir emülatör, bozuk bir derlemenin önüne koyduğunuz her şeyi geçmesine izin verir.

    Üç pratik, iki de uzmanlık gerektiren yolunuz var. Bugün gerçekten ulaşabildiğinizi seçin; sayfa boyutu hatalarını yakalamak açısından aralarında kalite farkı yok.

    Araç 09

    Test ortamı seçici

      Sınır

      Sonra, her testten önce istisnasız

      adb shell getconf PAGE_SIZE

      Çıktı 16384 olana kadar devam etmeyin.

      Gerçekte neyi çalıştırmalısınız

      Ortam doğrulandıktan sonra işe yarayan test turu "açılıyor mu" değildir. Yerel hatalar yerel koda dokunan özelliklerde toplanır; bu yüzden onları bilerek çalıştırın: soğuk açılış, uygulama içinde gezinme, kamera, veritabanı okuma ve yazma, medya oynatma ve kayıt, kimlik doğrulama, arka plan işleri, her makine öğrenmesi veya artırılmış gerçeklik özelliği, her yerel eklenti yüzeyi ve kendi kodunuzda bellek eşleme kullanan her şey. Bir özelliği az önce güncellediğiniz kitaplıklardan biri çalıştırıyorsa, test o özelliktir.

      Uyumluluk modu geçmek değildir

      Android, 4 KB hizalı bazı uygulamaları 16 KB cihazda bir uyumluluk yolu üzerinden çalıştırabilir ve bunu yaptığında ilk açılışta bir uyarı görebilirsiniz. Google yine de en iyi güvenilirlik ve kararlılık için doğru 16 KB hizalamasını öneriyor. Yalnızca uyumluluk modu devreye girdiği için çalışan bir uygulama düzeltilmiş bir uygulama değildir ve bu temelde yayınlamak, asıl hatanın hâlâ önünüzde olduğu anlamına gelir.

      Uyarı bir güncellemeden sonra neden hâlâ duruyor

      "Ama bunu zaten düzeltmiştim" vakalarının neredeyse tamamı on üç somut durumdan biridir ve on biri önünüzdeki yapıttan kanıtlanabilir. Uyan belirtiyi seçin; nedeni genellikle okumayı bitirmeden bileceksiniz.

      Araç 10

      Takılma triyajı

      En olası neden

      En hızlı eylem

      Kaçının

      Bu vakalardan ikisi kesin bir yanıt yerine bir çekince hak ediyor. Hiçbir birincil kaynak, Google Play'in yüklenen bir paketi yeniden değerlendirmesinin ne kadar sürdüğünü belirlemiyor; dolayısıyla uyarınız bir yüklemenin hemen ardından duruyorsa dürüst hamle, yeni sürüm kodunun son sürümler ile app bundle bölümünde göründüğünü doğrulamak ve daha sonra tekrar bakmaktır, işlem süreleri hakkında okuduğunuz belirli bir sayıya güvenmek değil. Ve yalnızca uyumluluk modu devreye girdiği için çalışan bir uygulama düzeltilmiş değildir, yalnızca idare edilmiştir.

      Sürekli karşımıza çıkan üçüncü taraf kitaplıklar

      Bunlar bildirilen örneklerdir; ne kadar yaygın olduklarının sıralaması değildir ve belirli bir sürümün derlemenizi düzelteceğinin garantisi de değildir. Bir paket herhangi bir sürümde yerel yapıt ekleyebilir, kaldırabilir veya değiştirebilir. Son söz her zaman kendi üretim paketinizin içindeki ikili dosyadadır.

      Bir dosya adı tanıdık geldiğinde bunu başlangıç noktası olarak kullanın, sonra o projenin güncel sürümlerine ve açık issue'larına karşı doğrulayın. Kanıt bir sürüm notu değil de bir bakımcının issue tracker kaydıysa, kart bunu söyler.

      Araç 11

      Bildirilen kitaplık dizini

      ObjectBox Java DOĞRULANMADI

      libobjectbox-jni.so

      Eski Android yerel kitaplıkları 16 KB ortamında başarısız oluyordu. Yayımlanacak kadar sağlam biçimde doğrulanmış belirli bir düzeltilmiş sürüm burada teyit edilemedi. ObjectBox'ın güncel sürüm notlarında 16 KB desteğini ekleyen sürüme bakın, ardından yalnızca sürüm numarasına güvenmek yerine derlenmiş APK'nızdaki ikili dosyayı doğrulayın.

      ObjectBox Dart ve Flutter DOĞRULANMADI

      paketle gelen Android kitaplığı

      ObjectBox'ın Dart SDK'sı kendi Android kitaplığını taşır. Yayımlanacak kadar sağlam biçimde doğrulanmış belirli bir düzeltilmiş sürüm burada teyit edilemedi. ObjectBox'ın güncel sürüm notlarına bakın, sonra derlemenizin gerçekte çözdüğü yapıtı doğrulayın.

      sqlite3 yerel kitaplığı BİLDİRİLDİ

      libsqlite3.so

      Etkilenen Flutter ve AWS Amplify paketlemelerinde eski bir 3.43.0 bağımlılığı görüldü. Issue kanıtları 16 KiB desteğinin eklendiği sürüm olarak 3.46.1+1'i işaret ediyor. Yalnızca bildirdiğiniz sürümü değil, çözülen bağımlılık sürümünü kontrol edin; bir framework paketi daha eskisini sabitleyebilir.

      Android için SQLCipher KISMİ

      sqlcipher-android

      Eski android-database-sqlcipher paketi, bakımı sürdürülen sqlcipher-android paketi lehine kaynağında kullanımdan kaldırıldı. Düzeltilmiş alt sınır olarak yayımlanacak kadar sağlam biçimde doğrulanmış belirli bir sürüm burada teyit edilemedi; bu yüzden bakımı sürdürülen güncel pakete geçin ve bir sürüm numarasına güvenmek yerine derlenmiş uygulamada her ABI'yi doğrulayın.

      FFmpegKit ve çatalları DOĞRULANMADI

      medya işleme ikili dosyaları

      Özgün FFmpegKit deposu kapatıldı ve evrensel olarak güvenli, uyumlu bir sürüm belirlenemedi. Çatalların kalitesi değişkendir. Derlemenizin tam olarak hangi çatalı çözdüğünü belirleyin, ABI yapıtlarını doğrudan inceleyin ve birini çözüm olarak benimsemeden önce bakım durumunu ve kaynağını tartın.

      Realm JavaScript ÇELİŞKİLİ

      Realm ve JNI ikili dosyaları

      Bildirimler birbiriyle çelişiyor. 20.1.0 sürümü işaretlendi ve sonraki bir bildirim 20.2.0'ın bir Realm ikili dosyasını onardığını ama başka bir JNI ikili dosyasının sorunlu kaldığını söyledi. Sorumlu biçimde tek bir güvenli sürüm adlandırılamaz; güncelleyin ve ardından Realm'ın kattığı her kitaplığı tek tek kontrol edin.

      MediaPipe Tasks Vision BİLDİRİLDİ

      libmediapipe_tasks_vision_jni.so

      2**12 hizalamayla bildirildi. İncelenen issue'da düzeltilmiş bir sürüm belirlenemedi; bu yüzden uyumluluğu sürüme bağlı kabul edin: güncel sürüm notlarına bakın, güncelleyin ve ikili dosyayı kendi derlemenizde doğrulayın.

      OpenCV Android BİLDİRİLDİ

      OpenCV Android yapıtı

      Bir OpenCV 5.0.0 Android yapıtında hizalama sorunları bildirildi. Depo issue'su bir CI düzeltmesine atıf yapıyor, ancak yayımlanmış belirli bir yapıt güvenle belirlenemedi. Bağımlı olduğunuz AAR dosyasının tam sürümünü indirin, açın ve kitaplıkları kendiniz inceleyin.

      Unity Burst DOĞRULANDI

      lib_burst_generated.so

      Unity'nin kendi yönlendirmesi, bu dosya işaretlendiğinde Burst paketini 1.8.21 veya üstüne güncellemektir. Dizinde issue bildirimlerine değil resmî sağlayıcı dokümantasyonuna dayanan tek kayıt budur.

      Unity AR ve diğer eklentiler BİLDİRİLDİ

      libUnityARCore.so, libquack.so ve diğerleri

      Topluluk bildirimleri bunları, editör yükseltmesinden sonra da ayakta kalan ikili dosyalar arasında sayıyor. Her biri farklı bir pakete ait olduğu için alıntılanacak evrensel bir sürüm yok. Hangi paketin peşine düşeceğinize karar vermek için tam dosya adını kullanın.

      Bu dizin neden kısa: issue sayısı hangi projelerin sesi çıkan kullanıcıları olduğunu gösterir, hangi kitaplıkların en çok kurulduğunu değil. "En sık suçlular" diye sıralı bir liste yayımlamak istatistik uydurmak olurdu. Genelleşen şey yöntemdir: dosya adını alın, paketi bulun, o paketin güncel sürümlerini kontrol edin, ikili dosyayı kendi derlemenizde doğrulayın.

      Bunun 31 Ağustos 2026 API 36 tarihiyle ilişkisi

      Bunlar tek bir noktada kesişen, birbirinden bağımsız iki Google Play şartıdır. Hedef API düzeyinizi yükseltmek 16 KB uyarısını görünür kılabilir, çünkü şart Android 15 (API düzeyi 35) veya üstünü hedefleyen uygulamalar için geçerlidir. Hizalama sorununu o yaratmaz ve onu onaramaz da.

      Google Play, 31 Ağustos 2026 tarihinden itibaren yeni uygulamaların ve güncellemelerin Android 16'yı (API düzeyi 36) hedeflemesini şart koşuyor; 1 Kasım 2026 tarihine kadar uzatma alınabiliyor. Bu, manifest ve davranış değişikliğidir. 16 KB kuralı ise ikili uyumluluk değişikliğidir. Pazartesi targetSdk değerini yükseltip salı günü 16 KB uyarısı gören bir geliştirici hiçbir şeyi bozmamıştır: yerel kitaplıklar zaten 4 KB sayfalar için derlenmişti ve yüksek hedef düzeyi yalnızca uygulamayı zaten uygulanacak bir denetimin kapsamına soktu.

      Şart A

      API 36'yı hedeflemek
      • Tarih 31 Ağustos 2026, 1 Kasım 2026'ya kadar uzatma
      • Kapsam Yeni uygulamalar ve güncellemeler
      • Nerede Manifest dosyanız ve derleme yapılandırmanız
      • Nasıl çözülür Hedef düzeyi yükselterek ve Android 16 davranış değişikliklerini ele alarak

      Şart B

      16 KB sayfa desteği
      • Tarih 1 Şubat 2027
      • Kapsam 64 bit cihazlarda API 35+ hedefleyen uygulamalar
      • Nerede Paketinizin içindeki yerel ikili dosyalar
      • Nasıl çözülür Hizasız her kitaplığı yeniden derleyerek veya değiştirerek

      Pratikte ikisini iki kanıtlı tek bir geçiş olarak ele alın. Hedef düzeyi zaten yükselteceksiniz: yerel kitaplık denetimini API 36 telaşının ortasında keşfetmek yerine aynı sürüme planlayın. Cihaz biçimlerine göre tüm düzeyler, istisnalar ve uzatma mekaniği için Google Play API 36 tarihi yazımıza, hesaptan üretime kadar tüm akış için de 2026 yayınlama şartları yazımıza bakın.

      Yükleme öncesi kontrol

      Her biri belirli bir geçme kanıtına bağlı on bir denetim. Play size bir sorun bildirdikten sonra değil, yüklemeden önce bunları geçin; böylece sınırsız bir hata ayıklama seansını sonlu bir listeye çevirirsiniz.

      Araç 12

      Yükleme öncesi kontrol

      11 maddeden 0 tanesi tamam

      Henüz hiçbir şey kanıtlanmadı. Elinizde açık duran son derlemeyle değil, gerçekten yüklemeyi düşündüğünüz derlemeyle başlayın.

      İlerlemeniz yalnızca bu tarayıcıda saklanır. Hiçbir yere gönderilmez ve tarayıcı verilerinizi temizlemek onu da siler.

      On bir maddenin hepsini tamamlamak, bu sayfada alıntılanan denetimler karşısında teknik hizalamayı kanıtlar. Bu bir onay taahhüdü değildir. Google Play aynı yükleme üzerinde hâlâ ilgisiz politika, içerik veya kalite sorunları çıkarabilir ve hiçbir kontrol listesi onlar adına konuşamaz.

      Bu, kapalı testinizle nerede çarpışıyor

      Bu sayfadaki hiçbir şey test kullanıcısı şartınızı değiştirmez, test kullanıcılarınızla ilgili hiçbir şey de derlemenizi değiştirmez. İki sorun tek bir eksende çarpışır: zaman. 14 günlük kapalı test, duraklatamayacağınız bir saatte ilerler; yerel kitaplık araştırması ise kimsenin öngöremeyeceği bir saatte.

      Canınızı yakan sıralama şöyle işler. Kişisel geliştirici hesabı kapalı testi başlatır, 14 günlük kesintisiz kayıt penceresi işlemeye başlar ve tam ortasında hedef düzey yükseltmesi bir 16 KB uyarısını ortaya çıkarır. Artık geliştirici yerel bağımlılıkları yeniden derlerken bir test kullanıcısı grubunun etrafında bozulmadan durması gerekir. Test kanalına yeni bir sürüm yüklemek tamamen sorunsuzdur ve Google, geliştiricileri test sırasında güncellemeye devam etmeye teşvik eder. Seriyi bozan şey, test kullanıcısı tarafının sessizleşmesidir.

      PrimeTestLab'ın sabit tuttuğu tam olarak bu taraftır. Android 7 ile 17 arasını kapsayan gerçek cihazlarda, 14 günün tamamı boyunca kayıtlı kalan 12 gerçek test kullanıcısı sağlıyoruz; böylece yeniden derlemeniz çöken bir teste değil, sağlam bir teste karşı ilerliyor. Test 4-6 saat içinde başlar ve bunu 120+ ülkede 7.400+ uygulamada %99,9 başarı oranıyla yürüttük.

      Test kullanıcılarını kendiniz bulmak mı, yönetilen test mi

      Google'ın şartı Kendiniz bulmak Yönetilen test
      En az 12 kayıtlı test kullanıcısı Gerçek insanları bulmak, bilgilendirmek, peşlerinden koşmak ve sonra hiçbirinin kaydını silmemesini ummak 12 kişi sağlanır ve pencere boyunca tutulur
      Kesintisiz 14 gün Ortada ayrılan tek bir test kullanıcısı kesintisizliği bozar Grup izlenir, pencere bozulmadan kalır
      Gerçek cihazlar, gerçek insanlar Emülatörler ve hareketsiz hesaplar alışılmış kestirme yoldur ve testin başarısız olmasının alışılmış nedenidir Android 7 ile 17 arası gerçek cihazlar
      İlk kayda kadar geçen süre Size kimin döndüğüne göre günler Test 4-6 saat içinde başlar
      Maliyet Zaten kitaplık derlediğiniz haftada, sizin zamanınız $19.99 fiyatından başlar, artı %5 hizmet bedeli
      Test ortasında yeniden derlemek Her yeni yükleme, insanlardan tekrar güncelleme istemek demektir Yeni sürümleri rahatça yayınlayın, grup kayıtlı kalır

      Sınırı açıkça söyleyelim: yerel kitaplıklarınızı biz yeniden derlemiyoruz ve bu yazı bunun satış argümanı değil. 16 KB işi sizin işiniz ve bu bölümden önceki her şey onu olabildiğince kısaltmak için yazıldı. Sizden aldığımız şey, aynı anda işleyen test kullanıcısı şartı; böylece iki sorun aynı iki hafta için yarışmayı bırakıyor.

      Sıralama ipucu

      Kapalı testi henüz başlatmadıysanız ve yerel kitaplık taşıdığınızı zaten biliyorsanız, önce test kullanıcısı penceresini çalıştırın ve hizalama işini onun içinde yapın. Google'ın nitelendirme dönemi, donmuş tek bir derlemeye göre değil test kullanıcılarının kesintisiz kaydına göre ölçülür ve Google test sırasında güncellemeye devam etmeyi teşvik eder: yani iki takvim üst üste binmek yerine iç içe geçebilir. Bunu yaparken aynı test kanalını ve aynı test kullanıcısı grubunu koruyun. Bu çoğu zaman tam bir hafta kazandırır.

      Sık sorulan sorular

      Google Play şu anda 16 KB uyumsuz uygulamaları reddediyor mu?

      Google'ın güncel dokümantasyonu, 1 Şubat 2027 tarihinden itibaren Android 15 (API düzeyi 35) veya üstünü hedefleyen ve 64 bit cihazlarda 16 KB desteği bulunmayan güncellemeleri yayınlayamayacağınızı belirtiyor. Bu tarihten önce çoğu geliştirici Play Console'da sert bir engel değil bir uyumluluk uyarısı görüyor. Atıf yapılan Google sayfasında belgelenen sonuç, uyumsuz güncellemelerin yayınlanamaması; hâlihazırda yayında olan bir uygulamanın otomatik kaldırılması değil.

      Diğer yazılar 1 Kasım 2025 derken Google neden 1 Şubat 2027 diyor?

      1 Kasım 2025, Google'ın özgün olarak duyurduğu tarihti; 31 Mayıs 2026 ise sonraki tarihsel bir uzatma tarihiydi. 5 Ağustos 2026 itibarıyla hem Google'ın güncel Android Developers sayfası hem de Play Console uyarısının güncel ekran görüntüsü 1 Şubat 2027 gösteriyor, dolayısıyla daha yeni birincil kaynak geçerli. Pek çok blog yazısı ve yapay zekâ yanıtı hâlâ eski tarihleri aktarıyor, çünkü değişiklikten önce yazıldılar.

      Hiç C++ yazmadım. Uygulamam neden etkileniyor?

      Kendi kaynak kodunuz Dart, JavaScript, Python, Java veya Kotlin olsa bile bir framework, SDK, eklenti, oyun motoru, veritabanı, medya bileşeni ya da uygulama oluşturucu yerel .so dosyaları ekleyebilir. Google'ın yönlendirmeleri, NDK kitaplıklarını bir bağımlılık üzerinden dolaylı kullanan uygulamaları açıkça kapsıyor. APK'yı Android Studio'da Build ve ardından Analyze APK ile açın: lib altındaki herhangi bir .so dosyası, paketlenen uygulamanın yerel kod kullandığı anlamına gelir.

      Saf Kotlin uygulamasında değişiklik gerekir mi?

      Google'a göre, tüm kitaplıkları ve SDK'ları dâhil yalnızca Java veya Kotlin kullanan bir uygulama 16 KB cihazları zaten destekliyor. Google yine de beklenmedik gerilemeleri yakalamak için 16 KB ortamında test edilmesini öneriyor. Uygulamanıza saf Kotlin demeden önce gerçek üretim APK'sında lib dizini olmadığını doğrulayın, çünkü tek bir analitik veya veritabanı bağımlılığı böyle bir dizin ekleyebilir.

      16 KB sayfa boyutu uyarısını hangi Flutter sürümü çözüyor?

      Hiçbir resmî kaynak, tüm Flutter uygulamalarının ve eklentilerinin uyumlu olmasını garanti eden tek bir Flutter sürümü belirlemiyor. Flutter 3.27 sürüm notları göründüğünden daha dar: motorun tamamını değil, özellikle plugin_ffi şablonları için 16 KB desteğini kapsıyor. Flutter 3.38 en sağlam belgelenmiş dönüm noktası: Flutter bu sürüme geçmeyi açıkça Play'in 16 KB şartına hazırlık olarak konumlandırdı ve varsayılan NDK'yı r28'e taşıdı. En güvenli hareket, güncel kararlı Flutter sürümüne geçmek, her yerel eklentiyi güncellemek, üretim paketini yeniden derlemek ve çıkan her .so dosyasını incelemektir.

      Hangi React Native sürümü 16 KB sayfaları destekliyor?

      React Native 0.77 açık ve resmî taban sürümdür. Sürüm duyurusu, React Native'in 16 KB sayfa boyutlarını tam olarak desteklemeye hazır olduğunu belirtiyor. Topluluk yerel modülleri, yerel C++ kodu ve üçüncü taraf SDK'lar hâlâ uyumsuz ikili dosyalar getirebilir; bu yüzden desteklenen React Native veya Expo geçiş yolundan yükseltin ve ardından oluşan APK'yı inceleyin.

      16 KB sayfa desteği için hangi Unity sürümü gerekir?

      Unity, uygun Enterprise veya Industry müşterileri için genişletilmiş LTS kapsamında 6000.1 veya üstü, 6000.0.38f1 veya üstü, 2022.3.56f1 veya üstü ve 2021.3.48f1 veya üstünü listeliyor. Yerel eklentilerinizi de güncelleyin ve Play Console lib_burst_generated.so adını veriyorsa Burst paketini 1.8.21 veya üstüne taşıyın. Desteklenen bir editör sürümü gereklidir ama yeterli değildir, çünkü üçüncü taraf eklentiler kendi ikili dosyalarını getirir.

      Hatalı olan .so dosyasını tam olarak nasıl bulurum?

      APK'yı Android Studio'da Build ve ardından Analyze APK ile açın, lib/arm64-v8a ve lib/x86_64 klasörlerini genişletin ve hizalama sorunu olan dosyalar için uyarı gösteren Alignment sütununu okuyun. Komut satırında doğrulamak için Google'ın check_elf_alignment.sh betiğini APK üzerinde çalıştırın ya da tek bir kitaplığı llvm-objdump -p file.so komutunu grep LOAD ile birleştirerek inceleyin. 2**14 altındaki her LOAD hizalaması müdahale gerektirir.

      APK'm geçerken app bundle'ım neden hâlâ başarısız oluyor?

      Bir kitaplığın içindeki ELF hizalaması ile paketlenmiş yapıtın içindeki ZIP hizalaması iki ayrı denetimdir. bundletool dump config --bundle=app.aab komutunu çalıştırıp alignment satırını arayın: PAGE_ALIGNMENT_16K geçer, PAGE_ALIGNMENT_4K ise oluşturulan APK'ların hâlâ 4 KB olarak istendiği anlamına gelir. Google özellikle Android Gradle Plugin 8.3 ile 8.5 arasının yerelde doğru görünürken Play'in paketinizden derlediği APK'ların düzgün ZIP hizalı olmayabileceği konusunda uyarıyor; bu yüzden 8.5.1 veya üstüne geçin.

      NDK r28'e geçmek sorunu çözmeye yeter mi?

      Hayır. NDK r28 ve üstü varsayılan olarak 16 KB hizalı derler, ancak bu yalnızca sizin derlemeniz sırasında derlenen yerel kodu etkiler. Üçüncü taraf bir AAR, eklenti veya oyun motoru paketiyle gelen önceden derlenmiş bir .so dosyasını yeniden yazamaz. Önceden derlenmiş her yerel bağımlılığın kendisi güncellenmeli, değiştirilmeli ya da yeniden derlenip yeniden içe aktarılmalıdır.

      Desteklenen bir telefonum olmadan 16 KB desteğini nasıl test ederim?

      SDK Manager üzerinden Google'ın 16 KB Android Emülatörü sistem imajlarından birini kurun ya da Samsung Remote Test Lab üzerinden desteklenen bir cihaz ayırtın. Ne kullanırsanız kullanın, ortamı önce adb shell getconf PAGE_SIZE ile doğrulayın; testin bir anlamı olması için çıktının 16384 olması gerekir. Emülatörde başarı çalışma zamanı davranışını kanıtlar, paketlemeyi değil; bu yüzden üretim paketini de incelemeye devam edin.

      16 KB desteğini düzeltmek kapalı testimi sıfırlar mı, etkiler mi?

      Google nitelendirme dönemini donmuş tek bir derlemeye göre değil, en az 12 test kullanıcısının 14 gün boyunca kesintisiz kayıtlı kalmasına göre ölçüyor ve geliştiricileri test sırasında derlemeyi güncellemeye devam etmeye teşvik ediyor. Google her derleme değiştirme senaryosunu kapsayan açık bir taahhüt yayınlamıyor; bu nedenle en güvenli yaklaşım, test ortasında yeniden derlenmiş ve 16 KB uyumlu bir paket yayınlarken test kullanıcısı grubunuzu sabit tutmaktır. PrimeTestLab, gerçek cihazlarda 12 gerçek test kullanıcısını $19.99 fiyatından, artı %5 hizmet bedeliyle sağlar ve grubu 14 günün tamamı boyunca tutar.

      Özet

      Kısaca

      Google Play, Android 15 (API düzeyi 35) veya üstünü hedefleyen uygulamaların 64 bit cihazlarda 16 KB bellek sayfa boyutlarını desteklemesini şart koşuyor ve 1 Şubat 2027 tarihinden itibaren uyumsuz güncellemeler yayınlanamayacak. 1 Kasım 2025 ve 31 Mayıs 2026 hâlâ arama sonuçlarında çıkan ölü tarihlerdir. Saf Java veya Kotlin uygulamaları zaten uyumludur. Diğer herkes aynı üç adımı izler: hatalı .so dosyasını adlandırın, onu sağlayan paketi güncelleyin ve yapıtı iki bağımsız denetimle kanıtlayın, yani her ELF LOAD segmenti 2**14 veya üzeri hizalı olsun ve paket PAGE_ALIGNMENT_16K bildirsin. AGP 8.5.1+ ile NDK r28+ en güvenli varsayılan araç zinciridir ve hiçbiri başkasının derlediği bir ikili dosyayı onaramaz. Bu, kapalı testin ortasına denk geldiyse devredebileceğiniz kısım test kullanıcısı tarafıdır. Fiyat planlarını görün →

      Bu sayfada ilk önce ne eskiyecek

      • 1 Şubat 2027 tarihi. Google bu takvimi birden fazla kez öteledi. Bir sürümü bu tarihe göre planlamadan önce sayfa boyutu rehberinin altındaki "Son güncelleme" damgasını kontrol edin.
      • Play Console metinleri. Console metinleri ve gezinmesi politika sayfalarından bağımsız değişir: gördüğünüz başlıklar burada aktarılanlardan farklı olabilir.
      • Framework taban sürümleri. Flutter sık sık kararlı sürüm yayınlıyor, React Native destek politikası değişiyor ve Unity LTS uygunluğu güncelleniyor. Bir yazıda basılı sürüm numarası yerine güncel sürüm notlarını doğrulayın.
      • Bildirilen kitaplık dizini. Herhangi bir paket herhangi bir sürümde yerel bir ikili dosya ekleyebilir, değiştirebilir veya geriye götürebilir. Her zaman kendi paketinizdeki yapıtı doğrulayın.
      • Emülatör imaj adları. Deneysel etiketli imajlar yeniden adlandırılabilir veya kalıcı hale gelebilir: SDK Manager'daki tam metin uyuşmayabilir.

      9 Ağustos 2026 tarihinde Google dokümantasyonuna karşı doğrulandı. Yürürlüğe girişten sonra en az bir ay boyunca aylık gözden geçirilecek.

      Kefayatullah Khadem, yazılım mühendisi ve Google Play yayınlama uzmanı

      Yazan

      Kefayatullah Khadem

      Yazılım mühendisi ve Google Play yayınlama uzmanı

      PrimeTestLab'ın kapalı test ve Android yayınlama rehberlerini gerçek vakalara ve Google'ın resmi dokümantasyonuna dayanarak yazıyor.

      7.400+Test edilen uygulama
      %99,9Başarı oranı
      120+Ülke
      4.9/5Puan

      %99,9 başarı oranı

      Derlemeyi siz düzeltin. Test kullanıcılarını biz tutalım.

      Yerel kitaplıkları siz yeniden derleyin. Biz siz çalışırken 14 günün tamamı boyunca kayıtlı kalan 12+ gerçek test kullanıcısı sağlayalım.

      $19.99 fiyatından başlıyor

      Ödemede artı %5 hizmet bedeli. Ücretsiz yeniden test veya tam iade.

      Test 4-6 saat içinde başlar · 120+ ülke · Para iade garantisi

      Uygulamasını PrimeTestLab'la yayınlayan 7.400+ geliştiriciye katılın

      12 test kullanıcısı · $19.99 WhatsApp