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.
Hizalama laboratuvarı
Yalnızca bu hata için yapılmış on iki araç. Hiçbiri hesap, yükleme veya ağ isteği gerektirmez: her araç yazdığınız değerlerle tarayıcınızda çalışır.
İçindekiler
Üç 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.
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.
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 bulunGü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.
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ı?
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.
APK Analyzer veya check_elf_alignment.sh hizasız bir kitaplık adı veriyor mu?
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.
Üretim paketi için bundletool dump config ne bildiriyor?
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.
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.
App must support 16 KB memory page sizes
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
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
Ü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.
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ı
./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.apkGradle 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'larGoogle 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ı
"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ı
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
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.
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.
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.
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.
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 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.
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 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.
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.
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 filtreyle eşleşen kayıt yok. Bu normaldir: bu dizin ekosistemdeki her kitaplığı değil, bildirilen örnekleri kapsar. Kitaplık sahibi aramasını kullanın ve dosyayı kendi projenizde izleyin.
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 →
Birincil kaynaklar
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.