Android platfrom、Dalvikバイトコード、またはネイティブマシンコードの処理中にどのようなコードですか?

shijun zhao:

AndroidプラットフォームのLinuxプロセスにどの種類のコードがロードされるのか、私にはよくわかりません。

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

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

ダイオキシン:

Android 5.0 (Lollipop)以降、Dalvikはネイティブバイナリを処理するAndroid Runtime (ART)完全に置き換えられました

Androidランタイムでのアプリの動作の確認

Androidランタイム(ART)は、Android 5.0(APIレベル21)以降を実行するデバイスのデフォルトのランタイムです


インストール時に、ARTはデバイス上のdex2oatツールを使用してアプリをコンパイルします。このユーティリティはDEXファイルを入力として受け入れターゲットデバイス用にコンパイルされたアプリ実行可能ファイルを生成します

より具体的には、Dalvikは、Dalvikが解釈またはJITコンパイルするために前処理されたdexファイルの最適化バージョンであるodexファイルの使用を促進します。

ARTは、ELFファイルの使用を促進します。ELFファイルは、特定の機能とオブジェクトを、インストール時に実行されるデバイスのネイティブ命令にリンクするための一般的な形式です。

ウィキペディア-Androidランタイム

Dalvikとは異なり、ARTは、インストール時にアプリケーション全体をネイティブマシンコードにコンパイルすることにより、事前(AOT)コンパイルの使用を導入します


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

実行可能およびリンク可能な形式-アプリケーション

Androidは、JavaネイティブインターフェイスにELF .so(共有オブジェクト)ライブラリを使用します。Android 5.0(Lollipop)以降のデフォルトであるAndroidランタイム(ART)では、すべてのアプリケーションがインストール時にネイティブELFバイナリにコンパイルされます。

ARTにはDalvikのインスタンスは含まれておらず、ほとんど互換性がありますが、Dalvikでサポートされている一部の機能はARTでサポートされていないことが言及されています。

Androidランタイムでのアプリの動作の確認

ただし、Dalvikで機能する一部の技法は、ARTでは機能しません。このドキュメントでは、ARTと互換性を持つように既存のアプリを移行する際の注意事項について説明します。ほとんどのアプリは、ARTで実行する場合にのみ機能するはずです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

FlutterコードはどのようにしてAndroidまたはIOSネイティブコードに変換されますか?

分類Dev

Androidで、ネイティブコードに、システムの代わりに自分のバージョンの共有ライブラリを使用させるにはどうすればよいですか?

分類Dev

Android Studioはネイティブコード用にさまざまなアーチをどのように構築しますか?

分類Dev

ネイティブAndroidコードをLibGDXに追加するにはどうすればよいですか?

分類Dev

ネイティブAndroidコードをLibGDXに追加するにはどうすればよいですか?

分類Dev

どのプログラムまたはアプリケーションがJavaサーバーコード、Androidクライアントコード、および非同期タスクコードをコンパイルできますか?

分類Dev

マテリアルコンポーネントライブラリからAndroidの入力フィールドにチップを追加するにはどうすればよいですか?

分類Dev

FlutterのネイティブAndroidコードにエラーが表示されるのはなぜですか?

分類Dev

NDKのネイティブコードからAndroid画面に印刷するにはどうすればよいですか?

分類Dev

lldbを使用してAndroidのC ++コードをコマンドラインでデバッグするにはどうすればよいですか?

分類Dev

Codename OneでAndroidネイティブコードスニペットをテストするにはどうすればよいですか?

分類Dev

ネイティブAndroidウィジェットからreactNativeのコンポーネントを呼び出すにはどうすればよいですか?

分類Dev

Android用のコードネーム1にネイティブアクセラレータの読み出しコードを実装するにはどうすればよいですか?

分類Dev

jniで実行されるネイティブCコードとAndroidのシェルで実行されるコードは異なります

分類Dev

私のAndroid描画アプリケーションがネイティブコードのどこかでクラッシュしています

分類Dev

Androidデータバインディングライブラリによって生成されたコードはどこで確認できますか?

分類Dev

反応ネイティブでコンパイルコマンドを実行せずにAndroidエミュレーターで監視するにはどうすればよいですか?

分類Dev

ネイティブC ++コードの実行がAndroidのJavaよりもはるかに遅いのはなぜですか?

分類Dev

音声コマンドを使用してAndroidのホーム画面ロックをバイパスしてアプリをアクティブ化するにはどうすればよいですか?まずはガイドラインを教えてください

分類Dev

アンドロイド開発:Androidの他のソーシャルメディアのように、私の意図/アイコンはどのようにユーザーのリストに追加されますか

分類Dev

AndroidコードはWebViewのJavascriptコードとどのようにインターフェースできますか?

分類Dev

エラー:「android」コマンドはSDKに含まれなくなりました。(サードパーティのプラグインなどによる)それへの参照はすべて削除する必要があります

分類Dev

エラー:「android」コマンドはSDKに含まれなくなりました。(サードパーティのプラグインなどによる)それへの参照はすべて削除する必要があります

分類Dev

Androidのネイティブレイヤーファイルからアプリケーションレイヤーファイルをコールバックするにはどうすればよいですか?

分類Dev

Android:adbコマンドを使用してデバイスのハードウェア情報を取得するにはどうすればよいですか?

分類Dev

Android Studioでこのスクリーンショットに従ってコードスタイルを変更し、コード行が画面幅を超えないようにするにはどうすればよいですか?

分類Dev

Androidのintentserviceに複数のコンポーネントをバインドすることは可能ですか?

分類Dev

たとえば、whatsappのようなドロップダウンでネイティブツールバーandroidに反応します

分類Dev

Android Studio + conanネイティブコードのデバッグ

Related 関連記事

  1. 1

    FlutterコードはどのようにしてAndroidまたはIOSネイティブコードに変換されますか?

  2. 2

    Androidで、ネイティブコードに、システムの代わりに自分のバージョンの共有ライブラリを使用させるにはどうすればよいですか?

  3. 3

    Android Studioはネイティブコード用にさまざまなアーチをどのように構築しますか?

  4. 4

    ネイティブAndroidコードをLibGDXに追加するにはどうすればよいですか?

  5. 5

    ネイティブAndroidコードをLibGDXに追加するにはどうすればよいですか?

  6. 6

    どのプログラムまたはアプリケーションがJavaサーバーコード、Androidクライアントコード、および非同期タスクコードをコンパイルできますか?

  7. 7

    マテリアルコンポーネントライブラリからAndroidの入力フィールドにチップを追加するにはどうすればよいですか?

  8. 8

    FlutterのネイティブAndroidコードにエラーが表示されるのはなぜですか?

  9. 9

    NDKのネイティブコードからAndroid画面に印刷するにはどうすればよいですか?

  10. 10

    lldbを使用してAndroidのC ++コードをコマンドラインでデバッグするにはどうすればよいですか?

  11. 11

    Codename OneでAndroidネイティブコードスニペットをテストするにはどうすればよいですか?

  12. 12

    ネイティブAndroidウィジェットからreactNativeのコンポーネントを呼び出すにはどうすればよいですか?

  13. 13

    Android用のコードネーム1にネイティブアクセラレータの読み出しコードを実装するにはどうすればよいですか?

  14. 14

    jniで実行されるネイティブCコードとAndroidのシェルで実行されるコードは異なります

  15. 15

    私のAndroid描画アプリケーションがネイティブコードのどこかでクラッシュしています

  16. 16

    Androidデータバインディングライブラリによって生成されたコードはどこで確認できますか?

  17. 17

    反応ネイティブでコンパイルコマンドを実行せずにAndroidエミュレーターで監視するにはどうすればよいですか?

  18. 18

    ネイティブC ++コードの実行がAndroidのJavaよりもはるかに遅いのはなぜですか?

  19. 19

    音声コマンドを使用してAndroidのホーム画面ロックをバイパスしてアプリをアクティブ化するにはどうすればよいですか?まずはガイドラインを教えてください

  20. 20

    アンドロイド開発:Androidの他のソーシャルメディアのように、私の意図/アイコンはどのようにユーザーのリストに追加されますか

  21. 21

    AndroidコードはWebViewのJavascriptコードとどのようにインターフェースできますか?

  22. 22

    エラー:「android」コマンドはSDKに含まれなくなりました。(サードパーティのプラグインなどによる)それへの参照はすべて削除する必要があります

  23. 23

    エラー:「android」コマンドはSDKに含まれなくなりました。(サードパーティのプラグインなどによる)それへの参照はすべて削除する必要があります

  24. 24

    Androidのネイティブレイヤーファイルからアプリケーションレイヤーファイルをコールバックするにはどうすればよいですか?

  25. 25

    Android:adbコマンドを使用してデバイスのハードウェア情報を取得するにはどうすればよいですか?

  26. 26

    Android Studioでこのスクリーンショットに従ってコードスタイルを変更し、コード行が画面幅を超えないようにするにはどうすればよいですか?

  27. 27

    Androidのintentserviceに複数のコンポーネントをバインドすることは可能ですか?

  28. 28

    たとえば、whatsappのようなドロップダウンでネイティブツールバーandroidに反応します

  29. 29

    Android Studio + conanネイティブコードのデバッグ

ホットタグ

アーカイブ