GoogleはGoogle Playを経由しないアプリ配布も認めており、APKファイルから直接インストールできるようになっており[35]、それらのアプリは野良アプリと呼ばれる。ただし一見普通のアプリに見える悪質なアプリ(マルウェア)も存在するため、公式マーケット以外からのダウンロードには細心の注意が必要である[36]。
Androidで表示されるホーム画面を表示させるアプリケーションのことはホームアプリと呼ばれる。たくさんのアプリが公開されており、ユーザーは好きなものを選ぶことができる。別名、ランチャー(Launcher)とも呼ばれる。 Androidは、カーネルからミドルウェア、ユーザーインターフェース、ウェブブラウザ、電話帳などの標準的なアプリケーション・ソフトウェア群までを1つのパッケージにして提供されている。 カーネルにはLinuxの関連技術が使用されているが、その他の部分は様々な技術が用いられており、例えば標準Cライブラリ(libc)のBionic
構成
機能携帯電話網への対応GSM、UMTS、CDMA2000、EV-DO、LTE、3G、4G、5G カーネルとライブラリ、ランタイムはほとんどがC言語またはC++で記述されているが、2021年から新規コードのデフォルト言語をRustにしており[39]、2022年12月現在では新規コードのRustの占める割合が21%に達している[39]。アプリケーションとアプリケーション・フレームワークは、Google独自に構築した仮想マシンであるDalvik仮想マシンまたはAndroid Runtime(ART)上の「Java Platform, Standard Edition(Java SE)のサブセット+Android拡張」環境で記述する[40]。プリインストールされたアプリ、エンドユーザーが後からインストールするアプリを問わず、共通の仮想マシンおよびフレームワークを使用する。 Googleが公式サポートしているCPUはARM(ARMv5以降)、MIPS、x86である。ARM以外の環境はAndroid 2.3から対応した。端末シェアの多くはARMv7とARMv8が占めているが、日本においては2014年3月に大手家電量販店のビックカメラが自社ブランド製品としてIntel Atom搭載のタブレットを発売[41]するなど、x86による製品もあった。 ChromeOSにはAndroidアプリケーションの実行環境としてAndroid Runtime for Chrome(ARC)が搭載されており、x86ベースやARMベースのCPUを搭載するChromebook端末上でAndroidアプリケーションを動作させることもできる。 Microsoft Windows 11では、専用のAndroidサブシステム(Windows Subsystem for Android:WSA)をインストールすることで、x86ベースやARMベースのCPUを搭載するWindows PC上にて、Amazon Appstore経由で入手したAndroidアプリケーションを動作させることもできる[42]。 Androidアプリケーションのパッケージ(APK)には、各種プロセッサのアーキテクチャ固有命令を含むネイティブライブラリを複数含めることができる。エミュレーションにより、x64プロセッサ上でARM32/ARM64ネイティブライブラリのみを含むAndroidアプリケーションを動作させることもできるが、オーバーヘッドを伴う。 AndroidのカーネルではLinuxカーネルに独自パッチ[1] ACK 5.4より前は各プロセッサーベンダー毎にACKを派生したベンダーカーネルがあり[44]、製品メーカーは製品毎にベンダーカーネル派生のプロダクトカーネルを用意していた[44]が、ACK 5.4以降は外部モジュールを読み込むためのカーネルモジュールインターフェース(KMI)を提供する汎用カーネルイメージ(GKI)となり[44]、各プロセッサーベンダーはベンダーモジュールを提供する形となった[44]。 種類カーネルのURL
その他のネットワーク対応Bluetooth、無線LAN、NFC
各種ハードウェアへの対応衛星測位システム、加速度センサ、磁気センサ、2D/3D描画支援ハードウェア(GPU)など
ウェブブラウザChromiumベースのブラウザが組み込まれている(4.3まではWebKitベース)。この機能は、他のアプリケーションからも利用可能である。
メールショートメッセージサービス(SMS)及びマルチメディアメッセージングサービス(MMS)が利用可能である。
その他のアプリケーションJavaで作成されたアプリケーションを独自のDalvik仮想マシン/Android Runtime上で動かすことができる。Android 5.0以降では標準の仮想マシンがAndroid Runtime(ART)に変更された。Dalvik/ARTは通常のJava仮想マシンとは異なり、メモリの消費が低く抑えられているなど、モバイル向けに最適化された設計となっている。
アプリケーションマーケットGoogleにより、Android用アプリケーションを配布、販売するGoogle Play Storeが運営されている。
マルチタッチネイティブに対応しており、HTC Heroなどの機種でサポートされている。ただし、Appleによる特許訴訟を避けるため、2010年2月までは、初期的にはカーネルレベルで無効化されていた[37]。
データストレージAPIデータ保存用にSQLiteが組み込まれている。
マルチメディアAPIMedia Frameworkと呼ばれる映像と音声用のライブラリにより、H.263、H.264(3GPP/MP4コンテナ)、H.265、 MPEG-4 SP、WebM、AMR、AMR-WB(3GPPコンテナ)、AAC、HE-AAC(MP4/3GPPコンテナ)、MP3、MIDI、Vorbis、WAV、JPEG、PNG、HEIF、GIF、BMP、WebPなどに対応している。
フォントFreeTypeフォントライブラリ[38]により、TrueType、Type1、OpenTypeなどのフォント形式に対応している。
その他のライブラリOpenGL ES、Vulkan、OpenSL ES、OpenMAX AL、Skia(SGL)、SSL、zlib、標準Cライブラリ(Bionic)、標準C++ライブラリ(libstdc++/libc++)など
プログラミング言語
対応CPU
カーネルが望まれています。
Android共通カーネル(ACK)https://android.googlesource.com/kernel/common/
CodeLinaroのカーネル関連コード
(Code Aurora Forumの後継[45])https://git.codelinaro.org/clo/la/kernel/
ハードウェア寄りでは開発組織 Linaro(英語版)がベンダー固有コードの本家Linuxカーネルへの還元(アップストリーミング)を続けている[46]。
またAndroid共通カーネルも少しずつ本家Linuxカーネルへの還元が進んでおり、本家Linuxで受け入れられなかった独自機能もだんだん標準機能やユーザー空間への置き換えが進んでいる。
機能過去のAndroidカーネルAndroidカーネル 6.1現在(太字はAndroidカーネル独自機能)
プロセス間通信(IPC)BinderBinder(./drivers/android/内)