Android CPU Mimarisini (ABI) Anlamak: Arm64-v8a, armeabi-v7a ve x86 Neden Önemlidir?

Diagram showing one app bundle splitting into arm64-v8a, armeabi-v7a, and x86 architecture-specific APKs

Bir dizi bölünmüş APK dosyasını birleştirdiyseniz ve telefonunuzun "Uygulama yüklenmedi" geri bildirimini izlediyseniz veya daha kötüsü, yalnızca simgeye dokunduğunuz anda çökmesine neden olacak şekilde düzgün yüklendiğini izlediyseniz, gerçek sorunun bozuk bir indirmeyle hiçbir ilgisi olmaması ihtimali yüksektir. Neredeyse kesinlikle mimariyle ilgiliydi: telefonunuzun üzerinde çalıştığı CPU ile uygulamanın yerel kodunun derlendiği CPU arasındaki uyumsuzluk. Çoğu Android kullanıcısının, bir şeyi sessizce bozduğu ana kadar bunu düşünmesine gerek kalmaz ve daha sonra hızla alakalı hale gelir. CPU mimarisinin bir APK için ne anlama geldiği, Play Store'daki tek bir uygulamanın neden gizlice kendisinin birkaç farklı yapısı olarak gönderildiği ve herhangi bir şey yüklemeden önce uyumluluğun nasıl kontrol edileceği burada açıklanmaktadır.

ABI Nedir?

ABI, Uygulama İkili Arayüzü anlamına gelir. Pratik anlamda, bir çipin anladığı talimat setidir; bir işlemcinin doğrudan çalıştırabileceği ham makine kodu formatıdır. Bir Android uygulamasının çoğu, Java veya Kotlin'de yazılan parçalar, Android Çalışma Zamanı (ART) içinde çalışan bayt kodu halinde derlenir ve ART, hangi çipin üzerinde bulunduğunu özellikle umursamaz. Bu katman, tasarım açısından mimariden bağımsızdır; bu, Android uygulamalarının bu kadar geniş bir donanım yelpazesinde genellikle "çalışmasının" büyük bir nedenidir.

Yerel kod farklı bir hikaye. Pek çok uygulama, özellikle oyunlar, kamera uygulamaları, makine öğrenimi araçları ve ağır ses veya video işleme yapan herhangi bir şey, Android NDK aracılığıyla C veya C++ ile yazılmış yerel kitaplıkları gönderir. Bu kütüphaneler, belirli bir talimat seti için önceden makine kodu halinde derlenir ve bir talimat seti için oluşturulan çip, genellikle farklı bir talimat seti için yazılan makine kodunu çalıştıramaz. ABI'lerin anlaşılmaya değer bir şey olarak var olmasının tüm nedeni budur: Bir uygulama tek bir yerel .so kitaplığı bile içerdiğinde, uyumluluğu kitaplığın oluşturulduğu mimarilere bağlı hale gelir.

Karşılaşacağınız Mimariler

Eskiden bu alanda daha fazla çeşitlilik vardı (düz armeabi veya MIPS'yi hatırlıyor musunuz?), ancak 2026 yılına gelindiğinde bu alan, bilmeye değer dört ABI'ye kadar daraldı:

AbiBit genişliğiTipik cihazlarNotlar
arm64-v8a64 bit ARMYaklaşık 2019'dan bu yana satılan hemen hemen her telefonYeni uygulamalar için varsayılan hedef; Google, birkaç yıldır yeni Play Store gönderimleri için 64 bit desteğine ihtiyaç duyuyor.
armeabi-v7a32 bit ARMDaha eski veya bütçeye uygun cihazlar, bazı düşük maliyetli telefonlar hala gelişmekte olan pazarlarda satılıyorÇoğu aktif cihazın artık buna ihtiyacı olmamasına rağmen, geriye dönük uyumluluk için hâlâ birçok uygulama tarafından gönderilmektedir.
x8632-bit IntelEski Intel tabanlı tabletler, eski emülatörlerÇoğunlukla eskimiş; Bugün gerçek bir 32 bit x86 telefona nadiren rastlayacaksınız.
x86_6464-bit IntelBazı Chromebook'lar, masaüstü Android emülatörleri, birkaç x86 tabletUygulamaları x86 tabanlı Android Studio AVD veya belirli BlueStacks yapıları gibi bir emülatörde test ediyorsanız önemlidir.

Son beş veya altı yılda herhangi bir zamanda satın alınan bir telefonu elinizde tutuyorsanız, bu neredeyse kesinlikle arm64-v8a'dır. Hatırlanması gereken istisnalar, temeldeki dizüstü bilgisayar veya masaüstü CPU ile eşleştiği için sıklıkla x86_64 üzerinde çalışan emülatörler ve Chromebook'lardır.

Uygulamalar Neden Birden Fazla Yapının Gönderilmesine Zahmet Ediyor?

Açıkça sorulan sorulardan biri, geliştiricilerin neden her mimarinin yerel kitaplıklarını tek bir APK'ye sığdırıp bu işi bitirmediğidir. Bazı uygulamalar tam olarak bunu yapar ve buna evrensel veya "şişman" APK denir. Dezavantajı boyutudur. Arm64-v8a, armeabi-v7a, x86 ve x86_64 için yerel kitaplıkların bir araya getirildiği bir oyunun boyutu, cihazınızın ihtiyaç duyduğu tek mimariyi içeren bir yapıya kıyasla kolayca iki veya üç katına çıkabilir. Bunu milyonlarca yüklemeyle çarptığınızda, o cihazda hiçbir zaman çalıştırılmayacak kod için gerçekten önemli miktarda bant genişliği ve depolama alanının boşa harcandığını görürsünüz.

Bu israfı önlemek için, Google Play ve Android App Bundle biçimi, bir uygulamayı küçük bir temel APK'ya ve biri mimariye ayrılmış olan bir dizi yapılandırma APK'sına böldü. Telefonunuz uygulamayı istediğinde, Play Store temel APK'yı yalnızca çipinizle eşleşen mimari bölümün yanı sıra eşleşen ekran yoğunluğu ve dil bölümleriyle birlikte sunar. Tek bir uygulama gibi davranan ancak perde arkasında amaca yönelik olarak oluşturulmuş çeşitli parçalardan oluşan bir kurulum elde edersiniz.

Bölünmüş APK'lar ve Uygulama Paketleri Bunu Nasıl Kullanır?

Bir .apks veya .xapk paketini açtıysanız ve split_config.arm64_v8a.apk, split_config.armeabi_v7a.apk, split_config.xxhdpi.apk ve split_config.en.apk gibi dosya adlarının bir base.apk'nin yanında durduğunu fark ettiyseniz, bu tam olarak bu sistemin çalışır durumda olduğunu ve Play Store tarafından sessizce teslim edilmek yerine bir dosya kümesi olarak dışa aktarıldığını gösterir. Yoğunluk ve dil ayrımlarının ayrım gözetmeksizin kurulması genellikle güvenlidir, çünkü telefon ihtiyaç duymadığı kaynakları göz ardı edecektir. Mimari ayrımı farklıdır: Yanlış olanı yüklerseniz veya eşleşen olanı yüklemezseniz, ciddi sorunlarla karşılaşırsınız.

Bölünmüş bir paketi tekrar kurulabilir tek bir APK'da birleştirmek için bir dönüştürücü kullandığınızda, birleştirme işleminin hangi mimarinin bölüneceğini seçmesi gerekir. İyi bir dönüştürücü, yalnızca birini sessizce tutmak ve cihazınızla eşleşmesini ummak yerine, gerçekten yararlı olan her mimari bölmeyi tutar veya seçmenize izin verir.

Mimari Eşleşmediğinde Ne Olur?

Sıradan bir kullanıcıya farklı göründükleri ve hissettirdikleri için, ayrı olarak bilmeye değer iki farklı arıza modu vardır.

Birincisi doğrudan kurulum hatasıdır. Bir uygulama, anlamlı bir geri dönüş olmadan neredeyse tamamen yerel kod üzerine oluşturulmuşsa, Android'in paket yöneticisi uygulamayı yüklemeyi reddeder ve genellikle INSTALL_FAILED_NO_MATCHING_ABIS gibi bir hatayla karşı karşıya kalır. Uygulamayı asla açamayacaksınız bile; kurulumu yapan kişi sizi kapıda durdurur.

İkinci, daha sinir bozucu sonuç ise sessiz kısmi başarıdır. Bir uygulamanın kendi başına sorunsuz yüklenen bir Java veya Kotlin giriş noktası varsa, ancak mimariniz için mevcut olmayan yerel bir kitaplığı çağırmaya çalışırsa yükleme normal şekilde tamamlanır. Siz simgeye dokunana kadar her şey yolunda görünüyor; bu noktada uygulama neredeyse anında çöküyor ve genellikle UnsatisfiedLinkError günlüklere gömülü oluyor. Bu klasik "Dönüştürdüm, kurdum, sonra anında kapanıyor" hikayesidir ve neredeyse her zaman bozuk bir dosyadan ziyade bir mimari sorundur.

Diagram comparing a matching arm64 APK that installs and runs successfully against an x86-only APK that fails to install on an arm64 phone with error INSTALL_FAILED_NO_MATCHING_ABIS

Kendi Telefonunuzun Mimarisini Nasıl Kontrol Edebilirsiniz?

İnsanların büyük çoğunluğu için bu basittir: Telefonunuz 2019 veya daha yeni bir modelse, arm64-v8a'yı varsayalım ve devam edelim. Emin olmak istiyorsanız veya daha eski veya alışılmadık bir cihazla uğraşıyorsanız birkaç pratik seçenek:

Bir APK'nın Hangi Mimarileri Desteklediğini Kontrol Etme

Play Store dışından bir dosya yüklemeden önce, tahmin etmek yerine içinde ne olduğunu doğrulamak faydalı olacaktır. Bir APK'nın yerel kitaplıkları, lib/ dizini içindeki lib/arm64-v8a/ veya lib/armeabi-v7a/ gibi mimarilerine göre adlandırılan klasörlerde bulunur. APK'nın iç yapısını denetleyebilen herhangi bir araç, size bu klasörlerden tam olarak hangisinin mevcut olduğunu söyleyebilir, bu da dosyanın tam olarak hangi cihazlarda çalışacağını söyler.

Kurulumdan önce kontrol edin

APK Bilgisi aracı ürünümüz bir APK'nın dahili lib/ klasörünü okur ve onun için oluşturulduğu her mimariyi listeler, böylece herhangi bir şeyi başka bir yere yüklemeden önce uyumluluğu doğrulayabilirsiniz. Bölünmüş bir paketi XAPK'den APK'ye dönüştürücü ile dönüştürdüğünüzde, bunu her dönüşümden sonra otomatik olarak ortaya çıkarıyoruz, birleştirilmiş dosyada bulunan mimarileri listeliyoruz ve bir yapıda yaygın cihazların ihtiyaç duyacağı bir dilimin eksik olduğu görüldüğünde bunu işaretliyoruz.

Evrensel APK ve Tek ABI APK: Hangisini Kullanmalısınız?

ÖlçütEvrensel / şişman APKTek ABI APK
Dosya boyutuDaha büyük, bazen 2-4xKüçük, yalnızca cihazınızın ihtiyaç duyduğu şeyleri içerir
UyumlulukHemen hemen her cihazda çalışırYalnızca eşleşen bir mimaride çalışır
Şunun için en iyisi:Her yerde çalışması gereken bir dosyanın paylaşılması, alıcıların emin olmamasıMimarisini zaten bildiğinizde kendi cihazınız
RiskABI uyumsuzluğu riski çok düşükYanlış olanı seçerseniz başarısız olur veya çöker

İnsanların Bölünmüş Paketlerle Yaptığı Yaygın Hatalar

Temel Çıkarımlar

  • ABI, çipin anladığı talimat setidir; yalnızca yerel (C/C++) kod içeren uygulamalar için önemlidir.
  • arm64-v8a hemen hemen her modern telefonu kapsar; armeabi-v7a daha eski cihazlar içindir; x86/x86_64 çoğunlukla emülatörlerde ve Chromebook'larda görünür.
  • Gereksiz yerel kodun her cihaza gönderilmesini önlemek için uygulamalar genellikle mimariye göre bölünür.
  • Uyumsuz bir mimari ya kurulumu tamamen engeller ya da görünüşte başarılı bir kurulumun ardından anında çökmeye neden olur.
  • Herhangi bir şey yüklemeden önce hem cihazınızın mimarisini hem de APK'nın desteklenen mimarilerini kontrol edebilir, böylece varsayımlardan tamamen kurtulabilirsiniz.

Sıkça Sorulan Sorular (SSS)

Normal bir Play Store uygulamasını yüklemek için telefonumun mimarisini bilmem gerekir mi?

Hayır. Play Store, cihazınızı otomatik olarak algılar ve yalnızca eşleşen mimari bölümünü sunar; dolayısıyla bu yalnızca APK'ları Play Store dışından yüklediğinizde geçerli olur.

Bir APK aynı anda birden fazla mimariyi destekleyebilir mi?

Evet. Evrensel veya kapsamlı bir APK, desteklenen her mimari için yerel kitaplıkları tek bir dosyada birleştirir. Daha büyüktür ancak çipten bağımsız olarak herhangi bir uyumlu cihaza yüklenecektir.

Dönüştürülen APK'm neden yüklendikten sonra hemen kilitlendi?

Bu genellikle uygulamada düzgün yüklenen az miktarda Java kodu bulunduğunda, ancak daha sonra cihazınızın mimarisine dahil olmayan yerel bir kitaplığı yüklemeye çalıştığında ve çalışma zamanında bir UnsatisfiedLinkError hatası verdiğinde meydana gelir.

arm64-v8a, armeabi-v7a uygulamalarıyla geriye dönük olarak uyumlu mudur?

Genel olarak evet. Çoğu arm64-v8a yongası aynı zamanda 32 bitlik ARM talimatlarını da yürütebilir, bu nedenle yalnızca armeabi-v7a APK'sı genellikle modern bir arm64 telefonunda çalışmaya devam eder, ancak tam tersi olmaz.

x86 Android cihazlar 2026'da hâlâ piyasada mı?

Günümüzde telefonlarda nadir olarak bulunurlar, ancak bazı eski Intel tabanlı tabletlerde, Android uygulamaları çalıştıran bir avuç Chromebook'ta ve çoğu masaüstü Android emülatöründe x86 veya x86_64'ü hâlâ bulacaksınız.

Bunların hiçbirini ezberlemenize gerek yok. Kısa versiyon: modern telefonlar neredeyse her zaman arm64-v8a'dır, uygulamalar yerden tasarruf etmek için mimariye göre bölünür ve bir şey yüklenmeyi reddederse veya açıldıktan hemen sonra çökerse, dosyanın kendisinin bozuk olduğunu varsaymadan önce mimari uyumsuzluğu göz ardı edilmesi gereken ilk şeylerden biridir.

Mst Shaefale Tarafından Tasarlandı ve Belgelendi Baş Geliştirici ve Android Paket Mimarı • Android 12–15'te Doğrulandı

Mst Shaefale, xapktoapk.com'de istemci tarafı XAPK/APKS birleştirmesini, ikili bildirim ayrıştırıcısını ve APK v1+v2 imzalama araçlarını korur. Eski bir komutu veya işletim sistemi değişikliğini mi fark ettiniz? Bir editör notu gönderin.