web-dev-qa-db-ja.com

Android:APKインストールプロセスについて

私はapkがAndroidにどのようにインストールされるか、具体的にはAndroid adb install経由のSDKエミュレーター(テスト中))のプロセスを理解しようとしています。

検索では、「apkは単に/ data/appにコピーされ、実行時にインストールされます。apkのアイコンがメニューにどのように表示されるかを説明していないため、これは満足のいくものではありません」問題。

Windowsのバックグラウンドから来て、.exeまたはインストーラを実行してプログラムをインストールすると、レジストリ、ファイル、サービスなどが変更されます。Androidにapkをインストールしたときに、これまたは同様の現象が発生するかどうかを理解する必要があります。

だから誰かが私にapkがAndroidにインストールされたときに具体的にどのような出来事が起こるかを説明できるなら、私はそれを大いに感謝するだろう。

また、Dalvik VM "zygote"がインストールに関係するのか、それとも下位のLinuxカーネルレベルで発生するのかを知りたいのですが。

ここでの私の最終目標は、straceを使用してapkのインストールプロセスをキャプチャし、システムの変更、ファイルの作成、ネットワークアクティビティ、およびその他の重要なイベントを文書化することです。

45
user1631295

主にAndroidアプリケーションの2つのカテゴリがあります。

  1. システムアプリ:システムの初期化時にインストールされます
  2. ユーザーアプリ:ADBを使用するか、SDカードの.apkファイルをコピーして、Playストアからインストールします。

以下は、段階的なインストールプロセスです。

  1. AndroidManifest.xmlが解析され、情報が抽出され、/ data/system/packages.xmlおよび/data/system/packages.listに保存されます
  2. .apkファイルが特定のディレクトリにコピーされ、このアプリのデータストレージ用のディレクトリが作成されます

XML解析、リソース分析、および.apkファイルのコピーは、

PackageManageService.Java

ただし、ディレクトリの作成は

installd.c

PackageManageService.Javaは、/ dev/socket/installedにあるローカルソケットを介してinstalld.cと通信します

.apkファイルがコピーされたパッケージは、システムアプリとユーザーアプリで異なります。システムアプリの場合

/ system/app /

ユーザーアプリは.apkファイルにコピーされた.apkファイルがコピーされる場所

/ data/app

.apkファイルから抽出された.dexファイルは、/ data/dalvik-cache /にコピーされます。

パッケージマネージャーは、データディレクトリ/ data/data //を作成して、データベース、共有設定、ネイティブライブラリ、およびキャッシュデータを保存します

25
sappu

あなたが知りたいことはすべて、Android develeperウェブサイト http://developer.Android.com/tools/building/index.html アプリ自体のパッケージングを理解するために、ここにイメージがあります(APKのインストールプロセスではありませんが、apkの構造とインストールを理解するのに役立ちます)。 dexは、アプリケーションのサブストラクチャです。Javaとコンパイルされたクラスを含みます。1つのdexファイルには、Java dexファイルはJavaバイトコードをDXツールで変換します。これはAndroid SDK。その結果として、すべてのアプリケーションをDalvik仮想マシンの独自のインスタンスを持つ独自のプロセス。 apk

10
pandabear

これは2つのレベルで実行されます。 InstalldおよびPackageManagerServiceは、ソケット通信を使用して通信します。使用されるソケット自体がインストールされます。 initでのソケット作成については、init.rcを参照できます。

0
Yogesh Sharma