Android Archi構造: アプリケーション層、フレームワーク、コンポーネント

Android このオペレーティングシステムの最初のリリースは2008年でした。その当初から、オペレーティングシステムの背後にあるチームは巨人たちの肩の上にそれを構築しました。 Android OS は表面レベルで存在し、複数の層で構成されています。これらのレイヤーには、数十年にわたって継続的に開発されてきたカスタム コードとオープンソース テクノロジが含まれます。

Android Android は、多くの企業による大規模な共同作業と投資を通じて開発されてきました。Android 開発の背後にある主な企業は Google です。その他の企業としては、Samsung、LG などのデバイス メーカー、Intel、ARM などのプロセッサ メーカーなどがあります。

私たちが話すとき Android 建築とは、 Android システムは設計され、レイヤーに分割され、システムとして機能するように構築されています。このような複雑なシステムを構築するには、すべてのコンポーネントが連携して機能するように注意深く構造化する必要があります。そのアーキテクチャにより、多くのコンポーネントがクラッシュすることなく全体として機能することが保証されます。

以下は、 Android 図にラベル付けされたアーキテクチャ:

  1. 検査に対応
  2. アプリケーションフレームワーク
  3. Android ランタイムライブラリとコアライブラリ
  4. Linuxカーネル

モバイル デバイス用のオペレーティング システムの開発には、一連の課題が伴います。この階層化アーキテクチャを使用すると、さまざまな問題がさまざまなレベルで細分化され、解決されます。

階層化アーキテクチャは、懸念事項を分離するのに役立ち、Android ソフトウェア開発者が常に低レベルの問題に対処する必要がなくなります。代わりに、開発者は作業しているレイヤーに関連するビジネス価値の提供に集中できます。

開発者は、アプリケーション フレームワークの実装について心配する必要がないアプリの作成に取り組んでいます。 その作業は、アプリケーション フレームワークに取り組むシステム開発者に残されています。

アプリケーション フレームワークの開発者は開発者エクスペリエンスに重点を置き、低レベル ドライバーについて心配する必要はありません。低レベル システム エンジニアは、Bluetooth やオーディオ ドライバーなどの低レベル コンポーネントに完全に集中できます。

Androidの階層構造により、バグ修正や改善を含む更新を各階層に独自に適用することができます。これにより、レイヤー間の変更が相互に干渉しないことが保証されます。これにより、新しいアップデートやリリースが行われるときに、OS の異なるレベルで作業している人々が互いに妨害しながら作業することが可能になります。

Android 検査に対応

Android 検査に対応
Android 検査に対応

これは、エンドユーザーが対話するレイヤーです。 アプリケーション開発者が実行するアプリケーションを公開するのはこの層です。

Androidには、Android デバイスを最初から使用可能にする一連のアプリケーションがデフォルトで付属しています。

  1. ホーム: のホームページ Android エンドユーザーがすぐにアクセスできる、一般的に使用されるアプリケーションのランチャー アイコンで構成されます。これらのアプリのランチャーをクリックすると、アプリを起動できます。画面の最上部には、ネットワーク、バッテリーレベル、日付、時刻を表示するウィジェットがあります。
  2. コンタクト: Androidは、デフォルトで連絡先を保存および取得する手段を提供します。機能を強化するために、連絡先情報が他のアプリ間で共有されます。
  3. メッセージ: Android SMS メッセージを送受信する機能を提供します。
  4. Email: Android メールサービスのネイティブサポートが付属しています。 Android デバイスにはGmailアカウントが必要です。Gmailを設定すると、他のメール依存コンポーネントが有効化されます。 Android メールに依存する機能には、セキュリティや回復メカニズムなどがある。メールに依存するもう1つの機能は、Playストアへのアクセスである。 Android 分野の様々なアプリケーションで使用されています。
  5. ブラウザ: Android デフォルトのブラウザが付属しています。
  6. 通知ドロワー: 画面を下にスワイプすると、通知ドロワーが表示されます。これは、ユーザーが知っておくべきアプリケーション イベントを提供します。通知の上には、ユーザーが切り替えることができる、よく使用されるデバイス設定へのショートカットのセットがあります。これらの設定には、Bluetooth や Wi-Fi などのさまざまなハードウェア コンポーネントのオン/オフの切り替えが含まれます。これらのイベントを長押しすると、構成ページに移動できます。

このレイヤーは、主にアプリケーション開発向けに調整されている下のレイヤーとは対照的に、ユーザーレベルとも呼ばれます。アプリケーション開発者は、このレイヤーでアプリのエクスペリエンスを作成し、カスタマイズします。アプリケーションレイヤーの下のレイヤーは、アプリケーション開発者によってカスタマイズされません。これらはシステムレイヤーの一部と見なされます。これらのレイヤーは、デバイスメーカー、Google Androidチーム、またはAndroidを使用したいサードパーティによってカスタマイズされます。 Android 製品や研究のソースコード。

アプリケーションフレームワーク

XNUMXμmの波長を持つ Android OS は、基礎となるライブラリと機能を公開します。 Android 使用しているデバイス Java APIです。これは Android フレームワーク。このフレームワークは、安全かつ統一された利用手段を公開します。 Android デバイスのリソース。

アプリケーションフレームワーク
アプリケーションフレームワーク

1) アクティビティマネージャー

アプリケーションは Android アプリへのエントリ ポイントを提示するためのアクティビティ コンポーネント。 Android アクティビティは、アプリのユーザーが操作するユーザー インターフェイスを収容するコンポーネントです。エンドユーザーが対話するとき、 Android デバイスに接続すると、多くのアプリケーションを開始、停止、前後にジャンプします。各ナビゲーション イベントは、それぞれのアプリケーションの多くのアクティビティのアクティブ化と非アクティブ化をトリガーします。

XNUMXμmの波長を持つ Android ActivityManager は、アプリケーションの移行中に予測可能で一貫した動作を担当します。 ActivityManager は、アプリ作成者が次のときにアプリを反応させるためのスロットを提供します。 Android OS はグローバル アクションを実行します。アプリケーションは、デバイスの回転、メモリ不足によるアプリの破棄、アプリのフォーカスが外れるなどのイベントをリッスンできます。

アプリケーションがこれらの遷移に反応する方法の例としては、ゲーム内のアクティビティの一時停止、通話中の音楽再生の停止などが挙げられます。

2) ウィンドウマネージャー

Android 画面情報を確認して、アプリケーションのウィンドウを作成するために必要な要件を判断できます。 Windows アプリのユーザー インターフェイスを表示できるスロットです。 Android は、ウィンドウ マネージャーを使用して、アプリとシステムの実行時にこの情報を提供し、デバイスが実行されているモードに適応できるようにします。

ウィンドウ マネージャーは、カスタマイズされたアプリ エクスペリエンスの提供に役立ちます。アプリは没入型エクスペリエンスのために画面全体を埋めたり、他のアプリと画面を共有したりできます。 Android 各アプリにマルチウィンドウを許可することでこれが可能になります。

3) ロケーションマネージャー

ブリッジ Android デバイスには、メートル単位の精度の衛星情報を使用してユーザーの位置を取得できる GPS デバイスが装備されています。プログラマは、ユーザーに位置情報の許可を求め、位置情報と認識エクスペリエンスを提供できます。

Android また、ワイヤレス技術を活用して、デバイスが密閉された空間にある場合の位置情報の詳細をさらに充実させ、カバレッジを拡大することもできます。 Android は、Location-Manager の傘下でこれらの機能を提供します。

4) テレフォニーマネージャー

ブリッジ Android デバイスは電話通信において主要な役割を果たします。 Android は、TelephonManager を使用してハードウェアとソフトウェアのコンポーネントを組み合わせ、テレフォニー機能を提供します。ハードウェア コンポーネントには、SIM カードなどの外部部品と、マイク、カメラ、スピーカーなどのデバイス部品が含まれます。ソフトウェア コンポーネントには、ダイヤル パッド、電話帳、着信音プロファイルなどのネイティブ コンポーネントが含まれます。開発者は、TelephoneManager を使用して、デフォルトの通話機能を拡張または微調整できます。

5) リソースマネージャー

Android 通常、アプリにはコード以外のものが付属しています。また、アイコン、オーディオおよびビデオ ファイル、アニメーション、テキスト ファイルなどの他のリソースもあります。 Android これらのリソースへの効率的かつ応答性の高いアクセスを確保するのに役立ちます。また、適切なリソースがエンドユーザーに確実に提供されるようになります。たとえば、アプリのフィールドにデータを入力するときに、適切な言語のテキスト ファイルが使用されます。

6) ビューシステム

Android また、アプリの操作に必要な共通のビジュアルコンポーネントを簡単に作成する手段も提供します。これらのコンポーネントには、ボタンなどのウィジェット、ImageView などのイメージ ホルダー、ListView などの項目のリストを表示するコンポーネントなどが含まれます。コンポーネントはあらかじめ作成されていますが、アプリ開発者のニーズやブランドに合わせてカスタマイズすることもできます。

7) 通知マネージャー

通知マネージャーは通知する責任があります。 Android アプリケーションイベントのユーザー。これは、イベントの発生時にユーザーに視覚、音声、振動信号、またはそれらの組み合わせを与えることによって行われます。これらのイベントには外部トリガーと内部トリガーがあります。内部トリガーの例としては、バッテリー低下を示す通知をトリガーするバッテリー低下ステータス イベントなどがあります。別の例としては、アラームなどのユーザー指定のイベントがあります。外部トリガーの例には、新しいメッセージや新しい Wi-Fi ネットワークの検出などがあります。

Android プログラマーとエンドユーザーが通知システムを微調整する手段を提供します。これは、ユーザーと現在の環境に最適な方法で通知イベントを送受信できることを保証するのに役立ちます。

8) パッケージマネージャー

Android インストールされているアプリケーションに関する情報へのアクセスも提供します。 Android インストールおよびアンインストール イベント、アプリが要求する権限、メモリ消費量などのリソース使用率などのアプリケーション情報を追跡します。

この情報により、開発者は、コンパニオン アプリによって提供される新機能に応じて、アプリケーションの機能をアクティブまたは非アクティブにすることができます。

9) コンテンツプロバイダー

Android には、コンテンツ プロバイダーを使用してデバイス上のアプリケーション間でデータを共有する標準化された方法があります。開発者はコンテンツ プロバイダーを使用して、データを他のアプリケーションに公開できます。たとえば、外部検索アプリケーションからアプリ データを検索できるようにすることができます。 Android それ自体は、同じシステムを使用してカレンダー データ、連絡先データなどのデータを公開します。

Android ランタイムおよびコア/ネイティブ ライブラリ

Android ランタイムおよびコア/ネイティブ ライブラリ
ライブラリ

1) Android ランタイム

Android 現在使用しています Android アプリケーション コードを実行するためのランタイム (ART)。ART の前には、開発者コードを Dalvik 実行可能ファイル (Dex ファイル) にコンパイルする Dalvik ランタイムがあります。これらの実行環境は、モバイル デバイスのプロセッサとメモリの制約を考慮して、Android プラットフォーム用に最適化されています。

ランタイムは、プログラマーが記述したコードを計算を実行するマシンコードに変換し、Android フレームワーク コンポーネントを使用して機能を提供します。 Android は、それぞれがプロセスで実行される複数のアプリケーションとシステム コンポーネントをホストします。

コアライブラリ

このセグメントでは、 Android オペレーティング·システム。

2) メディアフレームワーク

Android また、一般的なメディア コーデックもネイティブにサポートしているため、 Android マルチメディア コンポーネントをすぐに使用/再生できるプラットフォーム。

3) SQLite

Android また、持っています SQLite データベース これにより、アプリケーションはサードパーティのライブラリを必要とせずに、非常に高速なネイティブ データベース機能を使用できるようになります。

4) フリータイプ

Android には、高速で柔軟なフォント エンジンがプリインストールされています。これにより、アプリケーション開発者はアプリケーションのコンポーネントをスタイル設定し、開発者の意図を伝える豊かなエクスペリエンスを提供できるようになります。

5) OpenGL

Android OpenGL グラフィックス システムも付属しています。役立つCライブラリです Android 2D および 3D グラフィックスのリアルタイム レンダリングでハードウェア コンポーネントを使用します。

6)SSL

Android また、アプリケーション間の安全な通信を可能にするセキュリティ層も組み込まれています。 Android およびサーバー、他のモバイルデバイス、ルーターなどの他のデバイス 6.

7) SGL

Android Androidプラットフォームのグラフィックを効率的にレンダリングする低レベルコードで実装されたグラフィックライブラリが付属しています。 Android フレームワーク Android グラフィックスパイプライン。

8) リビック

のコア Android C言語で書かれたライブラリが含まれており、 C++これらは、組み込み用途向けの低レベル言語であり、パフォーマンスを最大化するのに役立ちます。Libc は、スレッド、ソケット、IO などの低レベル システム機能をこれらのライブラリに公開する手段を提供します。

9) ウェブキット

これは、ブラウザを構築するための基礎として使用されるオープンソースのブラウザ エンジンです。デフォルト Android バージョン 4.4 より前のブラウザ KitKat は、Web ページのレンダリングにこれを使用します。これにより、アプリケーション開発者は、WebView を使用してビュー システムで Web コンポーネントをレンダリングできるようになります。これにより、アプリは Web コンポーネントをその機能に統合できるようになります。

10) サーフェスマネージャー

サーフェス マネージャーは、アプリケーション画面のスムーズなレンダリングを確実に行う役割を担っています。これは、レンダリング用の 2D および 3D グラフィックスを構成することによって実現されます。さらに、オフスクリーン バッファリングを実行することでこれを実現します。

Linuxカーネル

のルートコンポーネント Android システムはLinuxカーネルです。これは、 Androidの機能。

Linuxカーネル

Linux カーネルは、開発に使用されてきた、歴戦のソフトウェアです。 OS スーパーコンピューターから小型ガジェットまで幅広いデバイスに対応。 モノのインターネット (IoT) 用のネットワーク接続された小型ガジェットのように、処理能力が限られています。

Linux カーネルはデバイスの仕様に合わせて調整できるため、メーカーは次のようなことを実現できます。 Android ユーザーエクスペリエンスに合わせてさまざまな機能を備えたデバイス。

につきまして Androidカーネルは、以下を含む多くの基本的な機能を担当します。

  1. デバイスドライバ
  2. メモリ管理
  3. 工程管理

いくつかの機能を拡張してみましょう。

デバイスドライバ

Linux カーネルには、オペレーティング システムがさまざまなハードウェア コンポーネントで動作するために必要なドライバーが格納されています。これらのドライバーは、さまざまなメーカーのハードウェア コンポーネントが動作できる標準インターフェイスを提供します。

これにより、デバイス メーカーは Bluetooth コンポーネント、Wifi コンポーネント、カメラ コンポーネントなどのさまざまなコンポーネントを調達できるようになります。メーカーが一致している限り、 Android 標準仕様なので統合もシームレスです。

1) USBドライバー

Linux も提供します Android USB デバイスとのインターフェース手段を備えています。最新のデバイスには、USB 2.0 や USB-C などの新しいバージョンの USB など、さまざまな USB ポートが搭載されています。これらのドライバーを使用すると、USB ポートを使用して充電したり、USB からのログなどのライブ データを転送したりできるようになります。 Android デバイス、そしてアンドロイドと対話する ファイルシステム.

2) Bluetoothドライバー

Linux カーネルは、Bluetooth ハードウェア コンポーネントとのインターフェイスのサポートを提供します。これは、サポートされている Bluetooth 無線周波数から受信したデータを読み書きする方法を提供します。また、次のような一連の設備も提供します。 Android Bluetooth を設定します。

3) Wi-Fiドライバー

Linux カーネルは、WiFi ネットワーク ハードウェア コンポーネントを統合するためのドライバーを提供します。モバイルデバイスに組み込まれた WiFi コンポーネントにより、 Android Wi-Fi ネットワークに接続するためのデバイス。このドライバーにより、Wi-Fi コンポーネントが Wi-Fi ネットワークをブロードキャストし、ホットスポットを作成できるようになります。

4) ディスプレイドライバー

Android ディスプレイ コンポーネントとのインターフェイスを可能にします。ほとんどのデバイスでは、インターフェイス コンポーネントは LCD タッチ スクリーンです。ピクセルの構成と描画をサポートします。

5) オーディオドライバー

Android 通常、デバイスにはオーディオ入出力用のハードウェア コンポーネントが付属しています。カーネル内のオーディオ ドライバーにより、 Android システムは、これらのコンポーネントから受信したオーディオを使用し、オーディオ出力も生成します。

6) パワーマネージャー

ブリッジ Android デバイスは電源コンセントから外された状態で使用されます。したがって、使用量の大部分はバッテリーに電力を供給する必要があります。 Linux カーネルには、それを使用するデバイスのニーズを満たすように構成可能な電源管理システムが付属しています。

Android OS は電源マネージャーを使用して、デバイス上の他のコンポーネントが電源を認識できるようにします。これは、さまざまな電力関連の状態をブロードキャストすることによって行われます。これらの状態は、スタンバイ、スリープ、およびローバッテリーです。の上 Android、バッテリー寿命を最大限に確保するために、電源マネージャーはデフォルトでスリープ モードになるように調整されています。

Power Manager は、アプリケーションがさまざまな電力モードに対応するための手段を公開します。 アプリケーションは、デバイスの現在の電源状態に合わせて動作を変更することもできます。

アプリケーションは、デフォルトの電源ポリシーの変更を要求することもできます。 アプリケーションは、ハードウェア コンポーネントをアクティブに保つなど、必要な機能を実現できます。 例としては、本を読んでいるときに画面をアクティブにし、ユーザーの邪魔をしないようにすることが挙げられます。 別の例としては、バックグラウンドで音楽を聴くときにオーディオ コンポーネントをオンにしておくことが挙げられます。

7) フラッシュメモリ

ブリッジ Android デバイスはストレージ手段としてフラッシュ メモリを使用します。フラッシュ メモリは高速で、必要なスペースが少ないため、小型デバイスに最適です。 Linux カーネルは、次の手段を提供します。 Android フラッシュ メモリの読み取りおよび書き込みを行うデバイス。これは、OS と他のアプリケーションがメモリ リソースを簡単かつ効率的に共有できるようにメモリを分割する手段を提供します。

8) バインダー

Android は、それぞれのプロセスで実行される多くのアプリケーションとシステム コンポーネントをホストします。ほとんどの場合、干渉やデータ破損を防ぐために、これらのプロセスは相互に分離する必要があります。しかし、あるプロセスから別のプロセスにデータを渡したい場合もあります。

Linux カーネルは、バインダー ドライバーを提供することでデータ共有機能を有効にします。 バインダー ドライバーにより、プロセス間通信 (IPC) が可能になります。 IPC プロセスを使用すると、他のプロセスを検出し、情報を共有できます。

メモリ管理

Linux カーネルのもう XNUMX つの役割はメモリ管理です。 さまざまなアプリケーションが実行されると、カーネルは、使用するメモリ空間が競合したり相互に上書きしたりしないようにします。

また、実行中のすべてのアプリが機能するために適切なメモリを確保し、単一のアプリが過剰なスペースを消費しないようにすることにも役立ちます。

工程管理

すべてのアプリ Android プロセス内で実行されます。カーネルはプロセスの管理も担当します。これは、プロセスの作成、一時停止、停止、シャットダウン、または終了を担当することを意味します。

カーネルは、複数のプロセスの同時実行、プロセス間の通信、バックグラウンドでのプロセスの実行など、さまざまな機能を可能にします。

各プロセスが正しく機能するには独自のメモリ空間が必要であるため、カーネルは各プロセスに割り当てられたメモリ空間が他のプロセスから保護されるようにします。 また、次のようなリソースも確保されます。 RAM プロセスに割り当てられたリソースは、プロセスがシャットダウンされると解放されます。

Linux カーネルは、デバイスに存在するプロセッサに作業を分散する責任もあります。 これにより、異なるアプリのプロセスが異なるコアで実行されるため、複数のコアを備えたデバイスのパフォーマンスを最大化することができます。

Linux カーネルは、セキュリティの強化など、より多くのタスクを内部で実行します。

製品概要

  • Android アーキテクチャは階層的に構成されています。
  • 各レイヤーは、固有の問題を解決します。
  • エンドユーザーはアプリケーション層でアプリを操作します
  • アプリケーション開発者は、アプリケーション層で使用するアプリを開発します。 これは、アプリケーション フレームワークによって提供されるツールと抽象化を使用して行われます。
  • Android フレームワーク層は、ネイティブ ライブラリ上に API を作成することで、低レベルのコンポーネントへのアクセスを簡素化します。
  • Android ランタイム ライブラリとコア ライブラリは、モバイル デバイス向けの最適化とともに低レベル言語を使用します。これにより、アプリケーション開発者が作成したコードは、 Android デバイスの制約。
  • 下部に Android ソフトウェア スタックは Linux カーネルです。共通のハードウェア コンポーネントとインターフェイスします。 Android デバイス。