backport

技術ネタと野球とときどき雑談

AndroidのABI(Application Binary Interface)概要

2017/06/23
development Android

AndroidのABI(Application Binary Interface)は、ABI Management | Android Developersによると

ABI は、アプリケーションのマシンコードが実行時にシステムとやりとりする方法を詳細に定義したものです。 アプリで使用したい CPU アーキテクチャごとに、ABI を指定する必要があります。

とのこと。この文面だと何が何やらですが、その端末のCPUアーキテクチャと、その端末のCPUで使える命令セットの組み合わせ、という理解をしておけばいいみたい。

AndroidでサポートされているABIは以下の通りです。

  • ARM系: armeabi, armeabi-v7a, arm64-v8a
  • x86系: x86, x86_64
  • MIPS系: mips, mips64

ABI名に『64』を含んでいるものは64bit、そうでないものは32bitです。また、一般的には同一系統のABIなら下位互換性があるので、arm64-v8aをサポートしている端末ならarmeabi-v7a向けのアプリを動かせます。逆はNG。

ABIを意識する必要があるのはNDKを使った開発をする場合です。普通にJavaで書いている分にはAndroidの仮想マシンがCPUの差異を吸収してくれますが、NDKを使うと仮想マシンの外側を触ることになるので、どのCPUなのかを意識することになるわけです。

概念としてはこのくらい押さえておけば大丈夫かな。実際に手を動かすときには追加で調べることにします。普段NDKとか全く触らないからこのへん疎いんですよね...

参考URL



コメント欄を表示する