Androidスタディノート04:Androidプラットフォームアーキテクチャ

ゼロ、学習目標

  1. Androidプラットフォームアーキテクチャのレイヤーを確認できる
  2. Androidデバイスモニター、特にDDMSを使用する
  3. 基本的にAndroidデバッグブリッジADBを使用してAndroid Linxuカーネルに入ります

1. Androidプラットフォームアーキテクチャ

  • AndroidはLinuxをベースにしたオープンソースのソフトウェアスタックで、さまざまなデバイスとモデル用に作成されています
  • Androidプラットフォームの主なコンポーネント
    ここに画像の説明を挿入

(1)Androidプラットフォームアーキテクチャの簡単な説明

1. Linuxカーネル

  • Androidプラットフォームの基盤はLinuxカーネルです。たとえば、Androidランタイム(ART)は、Linuxカーネルに依存して、スレッドや低レベルのメモリ管理などの低レベルの機能を実行します。
  • Linuxカーネルを使用すると、Androidは主要なセキュリティ機能を利用でき、デバイスメーカーは有名なカーネル用のハードウェアドライバーを開発できます。

2.ハードウェアアブストラクションレイヤー(HAL)

Hardware Abstraction Layer(HAL)は、上位レベルのJava APIフレームワークにデバイスのハードウェア機能を表示するための標準インターフェースを提供します。HALにはいくつかのライブラリモジュールが含まれており、それぞれがカメラやBluetoothモジュールなど、特定のタイプのハードウェアコンポーネントのインターフェースを実装しています。フレームワークAPIがデバイスハードウェアにアクセスする必要がある場合、Androidシステムはハードウェアコンポーネントのライブラリモジュールをロードします。

3. Androidランタイム

  • Android 5.0(APIレベル21)以降を実行しているデバイスの場合、各アプリケーションは独自のプロセスで実行され、独自のAndroidランタイム(ART)のインスタンスを持っています。ARTは、DEXファイルを実行することにより、低メモリデバイスで複数の仮想マシンを実行するように作成されています。DEXファイルは、Android用に特別に設計されたバイトコード形式です。最適化されており、メモリをほとんど使用しません。コンパイルツールチェーン(Jackなど)は、JavaソースコードをDEXバイトコードにコンパイルして、Androidプラットフォームで実行できるようにします。
  • Androidバージョン5.0(APIレベル21)以前は、DalvikはAndroidランタイムでした。アプリケーションがARTでうまく機能すれば、Dalvikでも機能するはずですが、その逆は必ずしも当てはまりません。
  • Androidには、一部のJava 8言語関数を含む、Java APIフレームワークで使用されるJavaプログラミング言語のほとんどの関数を提供するコアランタイムライブラリも含まれています。

4.ネイティブC / C ++ライブラリ

  • 多くのコアAndroidシステムコンポーネントとサービス(ARTやHALなど)はネイティブコードから構築されており、CおよびC ++で記述されたネイティブライブラリが必要です。Androidプラットフォームは、いくつかのネイティブライブラリの機能をアプリケーションに表示するJavaフレームワークAPIを提供します。たとえば、AndroidフレームワークのJava OpenGL APIを介してOpenGL ESにアクセスし、アプリケーションでの2Dおよび3Dグラフィックスの描画と操作をサポートできます。
  • CまたはC ++コードを必要とするアプリケーションを開発している場合は、Android NDKを使用して、ネイティブコードから直接いくつかのネイティブプラットフォームライブラリにアクセスできます。

5. Java APIフレームワーク

  • Java言語で記述されたAPIを介して、Android OSの機能セット全体を使用できます。これらのAPIは、Androidアプリケーションの作成に必要なビルディングブロックを形成します。これらのAPIは、次のコンポーネントやサービスを含む、コアモジュラーシステムコンポーネントおよびサービスの再利用を簡素化できます。リストを含む、アプリケーションのUIを構築するために使用できるリッチで拡張可能なビューシステム。グリッド、テキストボックス、ボタン、さらには埋め込み可能なWebブラウザー、ローカライズされた文字列、グラフィックス、レイアウトファイルなどの非コードリソースにアクセスするために使用されるリソースマネージャー、ステータスバーのすべてのアプリケーションを許可する通知マネージャーカスタムリマインダーの表示、アプリケーションのライフサイクルの管理に使用されるアクティビティマネージャー、一般的なナビゲーションバックスタックの提供、コンテンツプロバイダー、アプリケーションが他のアプリケーション(「連絡先」アプリケーションなど)のデータにアクセスしたり、独自のアプリケーションを共有したりできるようにしますデータ;開発者は、Androidシステムアプリケーションで使用されるフレームワークAPIに完全にアクセスできます。

6.システムアプリケーション

  • Androidには、メール、テキストメッセージ、カレンダー、インターネットブラウジング、連絡先などのコアアプリケーションのセットが付属しています。プラットフォームに付属するアプリは、ユーザーがインストールを選択できるアプリと同じですが、特別なステータスはありません。したがって、サードパーティのアプリケーションは、ユーザーのデフォルトのWebブラウザ、SMS Messenger、またはデフォルトのキーボード(システムの「設定」アプリケーションなど、一部の例外はあります)になる可能性があります。
  • システムアプリケーションは、ユーザーのアプリケーションとして使用でき、開発者が自分のアプリケーションからアクセスできる主な機能を提供します。たとえば、アプリケーションでテキストメッセージを送信する場合、この関数を自分で作成する必要はありません。代わりに、インストールされているSMSアプリケーションを呼び出して、指定した受信者にメッセージを送信できます。

(2)Androidの階層化アーキテクチャの利点

  • Androidシステムは、明確な構造、明確なレベル、および共同作業による、階層化アーキテクチャーの概念を採用しています。
  • Androidシステムアーキテクチャは、Androidシステムをマクロレベルで理解するだけでなく、学習と実践の方向性も示しています。Androidアプリケーション開発に従事している場合は、Androidアプリケーションフレームワークレイヤーとアプリケーションプログラムレイヤーを調査する必要があります。Androidシステム開発に従事している場合は、AndroidシステムライブラリとAndroidランタイムを調査する必要があります。Androidドライバー開発に従事している場合は、Android Linuxカーネルを調査する必要があります。 。要するに、真の知識を得るための適切なエントリーポイントと実践を見つけてください。

2. Androidデバイスモニター(ADM)

Android Device Monitorは、Android開発環境における仮想マシンのデバッグおよび監視サービスです。たとえば、テスト機器のスクリーンショットを撮ったり、特定のプロセスの実行中のスレッドとヒープ情報をLogcat表示したり、ステータス情報をブロードキャストしたり、電話をシミュレートしたり、SMSを受信したり、仮想地理座標を取得したりできます。

1. Androidデバイスモニターを起動します

  • Android SDKディレクトリのtoolsサブディレクトリに移動し、monitor.batを見つけます
    ここに画像の説明を挿入
  • monitor.batをダブルクリックして、Androidデバイスモニターを起動します。
    ここに画像の説明を挿入
  • Androidアプリケーションを起動します[HelloWorld]
    ここに画像の説明を挿入
  • Androidデバイスモニターの表示、ファイルエクスプローラーの表示(ファイルエクスプローラー)、ログキャプチャー(LogCat)
    ここに画像の説明を挿入

2. DDMSのファイルエクスプローラーを表示する

  • DDMS(Dalvik Debug Monitor Service)
  1. データメモリディレクトリ
  2. mnt外部ストレージディレクトリ
    ここに画像の説明を挿入
  • データをクリックすると、その内容は現在表示できません

  • 模拟器目前采用Android 7.0(API 24),改成Android 6.0(API 23
    ここに画像の説明を挿入ここに画像の説明を挿入

  • 点开data/data,找到我们运行的安卓程序:net.hw.helloworld
    ここに画像の説明を挿入

  • 屏幕截图的最后一行就是我们自己的安卓应用:net.hw.helloworld

  • 单击mnt,查看其内容
    ここに画像の説明を挿入 ここに画像の説明を挿入

  • sdcard: secure digital card

  • permission: 10位权限字符
    1位:文件类型(d:directory 目录;l:link 链接;-:普通文件)
    234位:表示文件所有者具有的权限(r——读;w——写;x——执行)
    567位:表示用户组成员具有的权限(r——读;w——写;x——执行)
    8910位:表示非用户组成员具有的权限(r——读;w——写;x——执行)
    从第2位到第10位,“-”表示不具有该权限。

三、安卓调试桥(ADB)

1、ADB作用

利用adb shell进入Linux内核进行相关操作。

2、ADB操作演示

  • 启动DOS,进入adb程序所在目录D:\Android\sdk\platform-tools
    ここに画像の説明を挿入
  • 输入adb shell命令,出现命令提示符#(如果是Android 7.0,那么提示符就是$
    ここに画像の説明を挿入
  • 进入/data/data目录
    ここに画像の説明を挿入
  • 查看该目录下的内容
    ここに画像の説明を挿入
    ここに画像の説明を挿入
  • data / data / com.android.providers.contactsディレクトリに入り
    ますcdコマンドを
    使用して現在のディレクトリを変更しますlsコマンドを使用して現在のディレクトリ内のファイル情報を表示し、
    次にcatコマンドを使用してテキストファイルの内容を表示します
    ここに画像の説明を挿入
  • exitコマンドを入力してadbシェルを終了します
    ここに画像の説明を挿入

3. adbを使用してサービスプロセスを強制終了して開始する

遭遇の問題:The connection to adb is down, and a severe error has occured.

  • まずAndroid Studio統合開発環境を閉じます
  • DOSを起動し、Android SDKのplatform-toolsディレクトリに入ります
  • adb kill-serverと入力します(サービスプロセスを強制終了します)
  • 次にadb start-serverと入力します(サービスプロセスを開始します)
    ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/howard2005/article/details/108535104