私はここ数年、Androidのソースコードにかなりの時間を費やしてきたので、ルート内のさまざまなフォルダーについて説明してみましょう。これらは大まかに(Androidのバージョンに少し依存します):
バイオニック
- 特にAndroid用に使用および開発された標準cライブラリ。
起動可能
- ブートローダー(デバイスの製造元が通常提供する)と、電話機がリカバリモードで起動したときに実行されるリカバリアプリケーションが含まれています。
建てる
- Androidには非常にユニークなモジュラービルドシステムがあり、それ自体は通常のメイクファイルの上に構築されています。たとえば、
build/target/products
を起動したときに表示されるすべての汎用ビルドターゲットが表示されますlunch
。
cts
- 互換性テストスイート。デバイスの製造元がデバイスの認定を取得したい場合(したがって、Google Playやその他の独自のアプリを取得したい場合)、CTSに合格する必要があります。CTSのソースはこのディレクトリに含まれています。
dalvik
- dalvik仮想マシン。Androidは、フレームワークの大部分とすべてのアプリにJavaを使用しています。各アプリは独自のuidの下で独自のプロセスとして実行されるため、独自の仮想マシンでは、仮想マシンのメモリフットプリントがかなり小さくなければならないため、Androidはdalvikと呼ばれるJava用のカスタム仮想マシンを使用することを選択しました。dalvikのソースはここに配置されます。
発達
- 私はこのリポジトリを実際には使用していませんが、Androidアプリを開発するためのサポートがここに配置されているようです。
端末
- 各デバイスベンダーは、特定のデバイスを定義するすべてのものをここに配置します。たとえば
devices/{yourname}/products/{yourdevice}.mk
、デバイス用に構築する必要のあるアプリ(およびその他のいくつか)を正確に定義することができます。{yourdevice}
これにより、作成できると呼ばれるランチメニューにエントリが追加されます。
ドキュメント
- 私が理解している限り、これは実際にはのソースです
http://source.android.com
。
外部の
- Androidが取り込み、ベースのAndroidLinuxOSを構成するほとんどすべてのサードパーティプロジェクトがここにあります。それらは独自のgitリポジトリに保持されているため、アップストリームから新しいバージョンを簡単に取得できます。ここには、、、、、および他
bzip2
の多くdbus
のプロジェクトが表示されます。ping
tcpdump
フレームワーク
- これはAndroidフレームワークのソースです。Android用のアプリを作成するときに使用するすべてのもの。これは、約50%のJavaコードと50%のC ++(場合によってはC)であり、jniを使用して結合されていると思います。たとえば、アプリでオーディオを再生する場合、おそらくにアクセスしてい
AudioManager
ます。のソースとAudioManager
、サポートするすべての内部Androidソースは。AudioManager
の下に配置されframeworks/base/media
ます。Android SDKの大部分は、の下のどこかに実装されていframeworks/base/
ます。
ハードウェア
- Androidは一連のライブラリと通信し、ハードウェア(バイブレーター、ライト、近接センサー、GPS、オーディオなど)を制御します。これらのライブラリは、まとめてHAL(Hardware Abstraction Layer)と呼ばれます。一部のデフォルトの実装は
hardware
フォルダに含まれていますが、製造元は独自のライブラリを実装し、それらをhardware/{manufcaturename}
(またはdevice/{manufacture}
)に配置します。
libcore
ndk
- アプリ開発者がアプリの一部(またはすべて)をネイティブコード(通常はcおよびc ++)としてコーディングできるようにするネイティブ開発キット。基本的には、Androidが実行されているさまざまなCPUアーキテクチャにクロスコンパイルするためのツールチェーンです。
アウト
- すべてのAndroidビルドアーティファクトはここに配置されます。したがって、
out
フォルダを削除すると、ソースが完全にクリーンアップされます。out
はさまざまなフォルダーに分割され、主なフォルダーはホストマシン(adbなど)とターゲットデバイス(ほとんどのAndroidシステム)用にコンパイルされたものが分離されていますhost
。target
以下にさらに細分化されており、一般にout
フォルダは非常にうまくソートされているので、少し自分で調べてみてください。
パッケージ
- これらには、Androidとともに構築されたすべてのデフォルトのアプリ、プロバイダー、inputmethodsなどが含まれています。電話アプリ、連絡先、カレンダー、電卓、デフォルトのソフトキーボードなどがここに配置されます。これらはサードパーティのアプリではなく、非公開のAndroidAPIに対して構築された内部アプリです。そのため、ここにあるほとんどのアプリは、パブリックAndroid SDK(たとえばEclipse)に対してビルドできませんが、完全なAndroidビルドプロセスの一部としてビルドする必要があります。
構築済み
- バイナリとしてAndroidと一緒に配布されるもの。ここにある主なものは、Android for ARM(および現在はx86)を構築するためのクロスコンパイラです。クロスコンパイラを実際に自分で作成する必要がないように、事前に作成されています。(Android以外にクロスコンパイラーもコンパイルする必要がある場合、これには非常に時間がかかる可能性があります。)
sdk
- ddms、エミュレーター、sdkmanagerなど、AndroidSDKの一部であるすべてのツール。
システム
- コアシステムは、Androidデバイスで実行されているプロセスを処理します。これらはネイティブ(cまたはc ++)プログラムです。Mediaserviceは、そのようなシステムサービスの例です。
これはすべてAndroidソースでの作業経験によるものであり、(他の)参照はありません。これがフォルダ構造の概要を理解するのに役立つことを願っています。