2017-08-30 10 views
4

アンドロイドプラットフォームのLinuxプロセスにどのようなコードがロードされているのかよく分かりません。アンドロイドのプラットフォーム、Dalvikバイトコードまたはネイティブマシンコードのプロセスでどのようなコードですか?

アンドロイドがDalvikを採用する場合、プロセスにはDalvik VMとアプリケーションのコードが含まれていますが、Dalvikバイトコードの形式のコードですか?はいの場合、コードは.apkファイルのclasses.dexと同じですか?

アンドロイドは、classes.dexがネイティブマシンコードに変換されているため、Androidのランタイム(ART)を採用しているため、LinuxプロセスのアプリコードはDalvikバイトコードではなくネイティブマシンコード。私の理解が正しければ、Dalvik VMはまだそのプロセスに含まれていますか?

+0

Dalvikは廃止され、ARTはAOTコンパイルを使用しているため、バイナリはネイティブであると仮定します。 –

+0

ARTは実行時環境にすぎないので、ARTを採用した後にVMのAndroidが使用するものを知りたいのですか? –

+0

@AnkurSamarya私が知りたいのは、ARTが使用されている場合でもまだ必要なVMです。 –

答えて

1

、のDalvikが完全ネイティブバイナリを処理アンドロイドランタイム(ART)、で置換されている。(ロリポップ)アンドロイド5.0のように

Verifying App Behavior on the Android Runtime

アンドロイドランタイム(ART)は、アンドロイド5.0(APIレベル21)と以降を実行しているデバイスのデフォルトのランタイムです。


インストール時に、ARTはデバイス上のdex2oatツールを使用してアプリケーションをコンパイルします。このユーティリティは、入力としてDEXファイルを受け取り、ターゲット

。具体的にデバイス用にコンパイルアプリ実行可能ファイルを生成する、のDalvikは、DEXの前処理に最適化バージョンであったODEXファイルの使用を促進しますDalvikが解釈するファイルまたはJITコンパイルするファイル。

ARTは、ELFファイルの使用を促進します。これは、インストール時に実行される特定の機能とオブジェクトのネイティブ指示へのリンクを導く一般的な形式です。 Dalvikとは異なり

Wikipedia - Android Runtime

、ARTは、そのインストール時にネイティブのマシンコードにアプリケーション全体をコンパイルによって先・オブ・タイム(AOT)コンパイルの使用を紹介します。


ARTは.odexファイルが実行可能ファイルとリンク可能フォーマット(ELF)の実行可能ファイルに置き換えられながら、APKファイルの一部として標準.dexファイルを介して供給される、のDalvikと同じ入力バイトコードを使用します。アプリケーションは、オンデバイスユーティリティdex2oat ART年代を使用してコンパイルされると、

Executable and Linkable Format - Applications

AndroidがためにELFの.so(共有オブジェクト)ライブラリを使用してコンパイルしたELF実行ファイルのみから実行されますJavaネイティブインタフェース。Androidのランタイム(ART)、アンドロイド5.0「ロリポップ」以来のデフォルトでは、すべてのアプリケーションが

ARTは、のDalvikのインスタンスが含まれていないインストールでネイティブELFバイナリにコンパイルされ、そしてほとんどcompatableが、それはいくつかのことを言及していますDalvikがサポートする機能はARTではサポートされていません。

Verifying App Behavior on the Android Runtime

しかし、のDalvik上で動作するいくつかのテクニックは、ART上では動作しません。このドキュメントでは、既存のアプリをARTと互換性のある状態に移行する際の注意事項について説明します。ほとんどのアプリは、ARTを実行しているときに動作します。

+0

あなたの明確な答えをありがとう。 –

関連する問題