Pag-unawa sa Arkitektura ng CPU ng Android (ABI): Bakit mahalaga ang arm64-v8a, armeabi-v7a, at x86

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

Kung napagsama-sama mo na ang isang hanay ng mga split APK file at napanood na ibinalik ng iyong telepono ang "Hindi naka-install ang app," o mas masahol pa, napanood mo itong maayos na na-install at nag-crash lang sa sandaling na-tap mo ang icon, may isang disenteng pagkakataon na ang tunay na problema ay walang kinalaman sa isang sira na pag-download. Ito ay halos tiyak na tungkol sa arkitektura: isang hindi pagkakatugma sa pagitan ng CPU na pinapatakbo ng iyong telepono at ang CPU kung saan pinagsama-sama ang native code ng app. Karamihan sa mga gumagamit ng Android ay hindi kailanman kailangang isipin ang tungkol dito, hanggang sa sandaling ito ay tahimik na masira ang isang bagay, at pagkatapos ay mabilis itong nagiging may kaugnayan. Narito ang ibig sabihin ng arkitektura ng CPU para sa isang APK, kung bakit lihim na ipinapadala ang isang app sa Play Store bilang ilang iba't ibang build ng sarili nito, at kung paano suriin ang compatibility bago ka mag-install ng anuman.

Ano ang ABI

Ang ABI ay nangangahulugang Application Binary Interface. Sa mga praktikal na termino, ito ang set ng pagtuturo na nauunawaan ng isang chip — ang format ng raw machine code na maaaring direktang isagawa ng isang processor. Karamihan sa isang Android app, ang mga bahaging nakasulat sa Java o Kotlin, ay naipon sa bytecode na tumatakbo sa loob ng Android Runtime (ART), at ang ART ay hindi partikular na nagmamalasakit kung aling chip ang nangyayaring nakaupo. Ang layer na iyon ay architecture-agnostic sa pamamagitan ng disenyo, na isang malaking bahagi kung bakit ang mga Android app sa pangkalahatan ay "gumagana lang" sa isang malawak na hanay ng hardware.

Ang native code ay ibang kuwento. Maraming app, lalo na ang mga laro, camera app, machine-learning tool, at anumang bagay na gumagawa ng mabibigat na pagpoproseso ng audio o video, ang nagpapadala ng mga native na library na nakasulat sa C o C++ sa pamamagitan ng Android NDK. Ang mga aklatan na iyon ay naipon nang maaga sa machine code para sa isang partikular na set ng pagtuturo, at ang isang chip na binuo para sa isang set ng pagtuturo sa pangkalahatan ay hindi maaaring magsagawa ng machine code na isinulat para sa iba. Iyan ang buong dahilan kung bakit umiiral ang mga ABI bilang isang bagay na nagkakahalaga ng pag-unawa: sa sandaling ang isang app ay may kasamang kahit isang katutubong .so library, ang pagiging tugma nito ay maiuugnay sa mga arkitektura kung saan ginawa ang library.

Ang Mga Arkitektura na Mapapasukan Mo

Dati ay may mas maraming pagkakaiba-iba sa espasyong ito (tandaan ang plain armeabi, o MIPS?), ngunit pagsapit ng 2026, lumiit ang field sa apat na ABI na dapat malaman:

ABIBit na lapadMga tipikal na deviceMga Tala
arm64-v8a64-bit na ARMHalos lahat ng telepono ay naibenta mula noong humigit-kumulang 2019Ang default na target para sa mga bagong app; Nangangailangan ang Google ng 64-bit na suporta para sa mga bagong pagsusumite sa Play Store sa loob ng ilang taon na ngayon.
armeabi-v7a32-bit na ARMMas luma o may badyet na mga device, ang ilang murang telepono ay ibinebenta pa rin sa mga umuusbong na merkadoIpinadala pa rin ng maraming app para sa backward compatibility, kahit na hindi na kailangan ng karamihan sa mga aktibong device.
x8632-bit na IntelMga lumang tablet na nakabase sa Intel, mga legacy na emulatorKaramihan ay lipas na; bihira kang makatagpo ng totoong 32-bit x86 na telepono ngayon.
x86_6464-bit na IntelIlang Chromebook, desktop Android emulator, ilang x86 tabletMahalaga kung susubukan mo ang mga app sa isang emulator tulad ng isang x86-based na Android Studio AVD o ilang partikular na build ng BlueStacks.

Kung may hawak kang teleponong binili anumang oras sa nakalipas na lima o anim na taon, ito ay halos tiyak na arm64-v8a. Ang mga pagbubukod na dapat tandaan ay ang mga emulator at Chromebook, na sa halip ay tumatakbo sa x86_64, dahil tumutugma iyon sa pinagbabatayan na laptop o desktop CPU.

Bakit Nag-aabala ang Mga App sa Pagpapadala ng Maramihang Build

Ang isang malinaw na tanong ay kung bakit hindi lang i-cram ng mga developer ang mga native na library ng bawat arkitektura sa isang APK at tapos na ito. Ganito ang ginagawa ng ilang app, at tinatawag itong universal o "fat" APK. Ang downside ay laki. Ang isang laro na may mga native na library para sa arm64-v8a, armeabi-v7a, x86, at x86_64 na pinagsama-samang lahat ay madaling doble o triple ang laki kumpara sa isang build na naglalaman lang ng isang arkitektura na kailangan ng iyong device. I-multiply iyon sa milyun-milyong pag-install at tumitingin ka sa isang tunay na malaking halaga ng nasayang na bandwidth at storage, para sa code na hindi kailanman tatakbo sa device na iyon.

Upang maiwasan ang pag-aaksaya na iyon, hinati ng Google Play at ng Android App Bundle na format ang isang app sa isang maliit na base APK at isang serye ng mga configuration APK, na ang isa ay nakatuon sa arkitektura. Kapag hiniling ng iyong telepono ang app, ihahatid ng Play Store ang batayang APK kasama lamang ang hating arkitektura na tumutugma sa iyong chip, kasama ang pagtutugma ng densidad ng screen at paghahati ng wika. Magtatapos ka sa isang pag-install na kumikilos tulad ng isang app ngunit binuo mula sa ilang layunin-built na piraso sa likod ng mga eksena.

Paano Ito Ginagamit ng Mga Split APK at App Bundle

Kung nagbukas ka na ng .apks o .xapk package at napansin ang mga filename tulad ng split_config.arm64_v8a.apk, split_config.armeabi_v7a.apk, split_config.xxhdpi.apk, at split_config.en.apk na nakaupo sa tabi ng isang base.apk, iyon mismo ang system na ito na gumagana, na-export lang bilang isang set ng mga file sa halip na ihatid nang tahimik ang Play Store. Ang density at paghahati ng wika ay karaniwang ligtas na i-install nang walang pinipili dahil babalewalain lang ng isang telepono ang mga mapagkukunang hindi nito kailangan. Ang hati ng arkitektura ay iba: i-install ang maling isa, o mabigong i-install ang katugmang isa, at magkakaroon ka ng tunay na problema.

Kapag gumamit ka ng converter upang pagsamahin ang isang split package pabalik sa isang solong mai-install na APK, ang proseso ng pagsasama ay kailangang pumili kung aling arkitektura ang maghahati upang mai-fold.

Ano ang Mangyayari Kapag Hindi Nagtutugma ang Arkitektura

Mayroong dalawang natatanging mga mode ng pagkabigo na dapat malaman, dahil iba ang hitsura at pakiramdam ng mga ito sa isang regular na user.

Ang una ay isang tahasang pagkabigo sa pag-install. Kung ang isang app ay binuo halos sa paligid ng native code na walang makabuluhang fallback, tatanggihan ng manager ng package ng Android na i-install ito, kadalasan ay lumalabas ang isang error tulad ng INSTALL_FAILED_NO_MATCHING_ABIS. Hindi mo na mabubuksan ang app; pinipigilan ka ng installer sa pintuan.

Ang pangalawa, mas nakakabigo na kinalabasan ay isang tahimik na bahagyang tagumpay. Kung ang isang app ay may Java o Kotlin entry point na naglo-load nang maayos sa sarili nitong, ngunit pagkatapos ay sumusubok na tumawag sa isang native na library na wala lang para sa iyong arkitektura, ang pag-install ay nakumpleto nang normal. Mukhang maayos ang lahat hanggang sa i-tap mo ang icon, kung saan halos agad na nag-crash ang app, madalas na may UnsatisfiedLinkError na nakabaon sa mga log. Ito ang klasikong "Na-convert ko ito, na-install ito, pagkatapos ay nagsasara lang agad" na kuwento, at ito ay halos palaging isang problema sa arkitektura sa halip na isang sirang file.

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

Paano Suriin ang Arkitektura ng Iyong Sariling Telepono

Para sa karamihan ng mga tao ito ay simple: kung ang iyong telepono ay mula sa 2019 o mas bago, ipagpalagay ang arm64-v8a at magpatuloy. Kung gusto mong maging tiyak, o nakikipag-ugnayan ka sa isang mas luma o hindi pangkaraniwang device, ilang praktikal na opsyon:

Paano Suriin Kung Ano ang Mga Arkitektura na Sinusuportahan ng APK

Bago mag-install ng file mula sa labas ng Play Store, sulit na kumpirmahin kung ano ang nasa loob nito sa halip na hulaan. Ang mga native na library ng APK ay nakatira sa mga folder na pinangalanan sa kanilang arkitektura sa loob ng direktoryo ng lib/, gaya ng lib/arm64-v8a/ o lib/armeabi-v7a/. Maaaring sabihin sa iyo ng anumang tool na maaaring mag-inspeksyon sa panloob na istraktura ng APK kung alin sa mga folder na ito ang naroroon, na eksaktong nagsasabi sa iyo kung saang mga device tatakbo ang file.

Suriin bago mo i-install

Binabasa ng aming Tool sa Impormasyon ng APK ang panloob na folder ng lib/ ng APK at inililista ang bawat arkitektura kung saan ito binuo, para makumpirma mo ang pagiging tugma bago mag-sideload ng anuman. Kapag nag-convert ka ng split package gamit ang aming XAPKS sa APK converter, awtomatiko din namin itong ilalabas pagkatapos ng bawat conversion, na naglilista ng mga arkitektura na makikita sa pinagsama-samang file at ibina-flag ito kapag ang isang build ay tila nawawala ang isang slice na kakailanganin ng mga karaniwang device.

Universal APK vs Single-ABI APK: Alin ang Dapat Mong Gamitin?

SukatanUniversal / fat APKSingle-ABI APK
Laki ng fileMas malaki, minsan 2-4xMaliit, naglalaman lang ng kung ano ang kailangan ng iyong device
PagkakatugmaGumagana sa halos anumang deviceGumagana lamang sa isang katugmang arkitektura
Pinakamahusay para saPagbabahagi ng isang file na dapat gumana kahit saan, hindi siguradong mga tatanggapAng iyong sariling aparato, kapag alam mo na ang arkitektura nito
PanganibNapakababa ng panganib ng ABI mismatchMabibigo o babagsak kung mali ang napili mo

Mga Karaniwang Pagkakamali na Nagagawa ng mga Tao Sa Mga Split Package

Mga Pangunahing Takeaway

  • Ang ABI ay ang set ng pagtuturo na naiintindihan ng isang chip; mahalaga lang ito para sa mga app na may kasamang native (C/C++) code.
  • Sinasaklaw ng arm64-v8a ang halos lahat ng modernong telepono; armeabi-v7a ay para sa mas lumang mga aparato; Ang x86/x86_64 ay kadalasang lumalabas sa mga emulator at Chromebook.
  • Ang mga app ay karaniwang hinahati ayon sa arkitektura upang maiwasan ang pagpapadala ng hindi kinakailangang native code sa bawat device.
  • Ang isang hindi tugmang arkitektura ay maaaring direktang humarang sa pag-install o nagdudulot ng agarang pag-crash pagkatapos ng isang tila matagumpay na pag-install.
  • Maaari mong suriin ang parehong arkitektura ng iyong device at ang mga sinusuportahang arkitektura ng isang APK bago mag-install ng anuman, na iwasan ang mga hula.

Mga Madalas Itanong (FAQ)

Kailangan ko bang malaman ang arkitektura ng aking telepono upang mag-install ng isang normal na Play Store app?

Hindi. Awtomatikong nade-detect ng Play Store ang iyong device at naghahatid lamang ng katugmang hating arkitektura, kaya nagiging may-katuturan lamang ito kapag nag-sideload ka ng mga APK mula sa labas ng Play Store.

Maaari bang suportahan ng isang APK ang maraming arkitektura nang sabay-sabay?

Oo. Ang isang unibersal o matabang APK ay nagsasama ng mga native na library para sa bawat sinusuportahang arkitektura sa isang file. Mas malaki ito ngunit mai-install sa anumang katugmang device anuman ang chip.

Bakit na-install ang aking na-convert na APK ngunit nag-crash kaagad?

Karaniwan itong nangyayari kapag ang app ay may kaunting Java code na nag-i-install nang maayos, ngunit pagkatapos ay sumusubok na mag-load ng katutubong library na hindi kasama para sa arkitektura ng iyong device, na naglalagay ng UnsatisfiedLinkError sa runtime.

Ang arm64-v8a backward ba ay tugma sa armeabi-v7a app?

Sa pangkalahatan oo. Karamihan sa mga arm64-v8a chip ay maaari ding magsagawa ng 32-bit na mga tagubilin sa ARM, kaya ang isang armeabi-v7a-only na APK ay karaniwang tatakbo pa rin sa isang modernong arm64 na telepono, ngunit hindi sa kabaligtaran.

Ang mga x86 Android device pa ba ay nasa 2026?

Bihira na ang mga ito sa mga telepono ngayon, ngunit makikita mo pa rin ang x86 o x86_64 sa ilang mas lumang Intel-based na tablet, ilang Chromebook na nagpapatakbo ng Android app, at karamihan sa mga desktop Android emulator.

Hindi mo kailangang isaulo ang alinman dito. Ang maikling bersyon: ang mga modernong telepono ay halos palaging arm64-v8a, ang mga app ay nahahati sa pamamagitan ng arkitektura upang makatipid ng espasyo, at kung may tumanggi na mag-install o mag-crash pagkatapos magbukas, ang hindi pagkakatugma ng arkitektura ay isa sa mga unang bagay na dapat alisin bago ipagpalagay na ang file mismo ay sira.

Ininhinyero at Dokumento ni Mst Shaefale Punong Developer at Arkitekto ng Package sa Android • Na-verify sa Android 12–15

Pinapanatili ni Mst Shaefale ang client-side na XAPK/APKS merger, binary manifest parser, at APK v1+v2 signing tool sa xapktoapk.com. Makita ang isang hindi napapanahong command o pagbabago ng OS? Magpadala ng editoryal na tala.