2012-11-14 12 views
5

official instructionsに従って、4.0.1_r1 Androidソースコードリポジトリをダウンロードしました。リポジトリの基本的な命名規則を理解するのに役立つ人はいますか?Androidソースコードリポジトリの基本的な命名方式を理解する

たとえば、リポジトリのルートディレクトリで、正確には "frameworks"ディレクトリは何ですか?これは "packages"ディレクトリとどのように違うのですか?

答えて

6

私は過去数年間、アンドロイドのソースコードの周りにかなりの時間を費やしてきたので、ルートのさまざまなフォルダについて説明しましょう。これらは、大きく分けて(Androidのバージョンのビットに依存)している:

  • 生体

    • 使用され、具体的に開発さ標準のCライブラリ。
  • ブータブル

    • (デバイスの製造は、通常提供)ブートローダと電話機が回復モードで起動されたときに実行され、回復アプリケーションを含みます。
  • ビルド

    • Androidは、それ自体は、通常のメイクファイルの上に構築された非常にユニークなモジュラービルドシステムを、持っています。たとえばbuild/target/productsには、lunchを起動すると表示されるすべての汎用ビルドターゲットがあります。
  • CTS

    • Compatibility Test Suite。デバイスの製造元がデバイスの認定を取得したい場合(つまり、Google Playやその他の独自のアプリケーションを入手する場合)、CTSに合格する必要があります。 CTSのソースはこのディレクトリに含まれています。
  • のDalvik

    • The dalvik virtual machine。 Androidはすべてのアプリだけでなくフレームワークのより良い部分にjavaを使用します。各アプリケーションは独自の仮想マシン内で独自のプロセスとして実行されるため、仮想マシンのメモリ占有量は小さくなければならないため、Android用にdalvikというカスタム仮想マシンをJava用に選択しています。 dalvikのソースはここに置かれます。
  • 開発

    • 私は本当にこのリポジトリを使用していないが、それはここに置かれAndroidアプリを開発するためのものをサポートしているようです。
  • デバイス

    • 各デバイスのベンダーは、ここで彼らの特定のデバイスを定義するすべてのものを置きます。たとえば、お使いの端末用に構築する必要があるアプリケーションを正確に定義するdevices/{yourname}/products/{yourdevice}.mkを指定できます(他にもいくつかの点があります)。これにより、ランチメニューに{yourdevice}という名前のエントリを追加できます。
  • ドキュメント私の知る限り、これは実際にhttp://source.android.comの源であることを理解として

  • 外部

    • ほぼすべてのAndroidプルでサードパーティのプロジェクトやどのAndroidのLinuxのOSがここにありますベースを構成しています。彼らは独自のgitリポジトリで管理されているので、上流から新しいバージョンを簡単に取得できます。 bzip2dbuspingtcpdumpなど多くのプロジェクトがあります。
  • フレームワーク

    • これは、Androidフレームワークのソースです。 Android用のアプリを作成するときに使用するすべてのもの。私はそれが約50%のJavaコードと50%のC++(と時にはC)のどちらかであり、これはjniを使って結合されていると思います。たとえば、アプリでオーディオを再生する場合は、おそらくAudioManagerにアクセスしている可能性があります。 AudioManagerのソースと、AudioManagerをサポートするすべての内部Androidソースは、frameworks/base/mediaの下に配置されています。 Android SDKの大部分は、frameworks/base/の下に実装されています。 (等バイブレータ、ライト、近接センサ、GPS、オーディオ、など)、ハードウェアを制御するライブラリのセットに
  • ハードウェア

    • アンドロイド協議。これらのライブラリはまとめてHAL(Hardware Abstraction Layer)と呼ばれます。一部の既定の実装はhardwareフォルダに含まれていますが、製造元は独自のライブラリを実装してhardware/{manufcaturename}(またはdevice/{manufacture})に配置します。
  • libcore

    • 私はこの1つのことは知りません。
  • (CおよびC++通常で)ネイティブコードとしてのアプリのアプリの開発者は、いくつか(またはすべて)をコードすることができ

      native development kit
    • をNDK。基本的には、Androidが動いているさまざまなCPUアーキテクチャにクロスコンパイルするためのツールチェーンです。

      • アウト
    • すべて Androidのビルド成果物がここに配置されています。したがって、outフォルダを削除すると、ソースが完全に消去されます。 outは異なるフォルダに分割され、主なものはhosttargetで、ホストマシン(たとえばadb)とターゲットデバイス(ほとんどのアンドロイドシステム)用にコンパイルされたものが分離されています。以下のサブディビジョンがあります。一般にoutフォルダはかなり整理されていますので、ちょっと自分で調べてください。

  • パッケージ

    • これらの含まれているすべてのデフォルトのアプリ、プロバイダ、inputmethods、というように、アンドロイドと一緒に構築されています。電話アプリ、連絡先、カレンダー、電卓、デフォルトのソフトキーボードなどがここに配置されます。彼らはサードパーティーのアプリではなく、内部のアプリであり、その多くは非公開のアンドロイドのapiに対してビルドされています。したがって、ここのアプリのほとんどは公開Android SDK(eclipseなど)には対応できませんが、完全なAndroid構築プロセスの一部として構築する必要があります。バイナリとしてアンドロイドと一緒に配布され
  • ビルトイン

    • スタッフ。ここにある主なものは、ARM用のAndroidを構築するためのクロスコンパイラです(これもx86です)。実際にクロスコンパイラを構築する必要はありません。
  • SDK

    • などDDMSなどのAndroid SDKの一部であるすべてのツール、(あなたがAndroidのほかにもcrosscompilersをコンパイルしなければならない場合。これは非常に時間がかかるかもしれません) 、エミュレータ、sdkmanagerなど
  • システム

    • アンドロイドデバイスで実行されているコアシステムプロセス。これらはネイティブ(cまたはC++)プログラムです。 Mediaserviceはそのようなシステムサービスの例です。

これはAndroidのソースでの作業との私の経験から、すべてのですが、私は任意の(他の)参照を持っていません。私はこれがあなたがフォルダ構造の概要を得るのを助けることを願っています。

+1

非常に役に立ちます。ありがとうございました! – jgro

+1

正確に何が必要なのですか...ありがとう – Pawan