いくつかのandroid
アプリをインストールした後、スマートフォンでodex
はファイルに変更される(ではないapk
)ことがわかりました。それはどのように起こりますか?誰が教えてくれるのか、とても興味があります。
いくつかのandroid
アプリをインストールした後、スマートフォンでodex
はファイルに変更される(ではないapk
)ことがわかりました。それはどのように起こりますか?誰が教えてくれるのか、とても興味があります。
回答:
ブログ記事はほとんど正しいですが、完全ではありません。odexファイルの機能を完全に理解するには、アプリケーションファイル(APK)がどのように機能するかについて少し理解する必要があります。
アプリケーションは基本的に栄光のZIPアーカイブです。Javaコードはclasses.dexというファイルに保存され、このファイルはDalvik JVMによって解析され、処理されたclasses.dexファイルのキャッシュは電話のDalvikキャッシュに保存されます。
odexは基本的に、Dalvikで実行可能なアプリケーションのclasses.dexの前処理バージョンです。アプリケーションがodexされると、classes.dexはAPKアーカイブから削除され、Dalvikキャッシュには何も書き込まれません。odexされていないアプリケーションは、classes.dexファイルの2つのコピーで終了します。APKにパッケージ化されたものと、Dalvikキャッシュに処理されたものです。また、Dalvikはclasses.dexファイルを抽出して処理する必要があるため、最初の起動には少し時間がかかります。
カスタムROMを構築している場合は、ユーザーがインストールしたアプリの内部ストレージスペースを最大化するために、フレームワークJARファイルとストックアプリの両方をodexすることをお勧めします。テーマを設定したい場合は、単にdeodex->テーマを適用-> reodex->リリースします。
実際にdeodexするには、smallとbaksmaliを使用します。
このブログ記事では、ODEXファイルの内部について説明しています。
ODEXファイルとは何ですか?
Androidファイルシステムでは、アプリケーションは拡張子.apkのパッケージで提供されます。これらのアプリケーションパッケージまたはAPKには、スペースを節約することを目的とした特定の.odexファイルが含まれています。これらの「odex」ファイルは、実際には、起動前に最適化されたアプリケーションの一部のコレクションです。これを行うと、アプリケーションの一部がプリロードされるため、ブートプロセスが高速化されます。一方、コーディングの一部は実行前に別の場所に抽出されているため、これらのアプリケーションのハッキングも困難になります。
APKs contain certain .odex files
?!
アート
ドキュメントによると:http://web.archive.org/web/20170909233829/https://source.android.com/devices/tech/dalvik/configure.odex
ファイル:
APKのメソッドのAOTコンパイル済みコードが含まれています。
さらに、アプリを入手した場合は次のことを確認するため、通常の共有ライブラリのように見えます。
file /data/app/com.android.appname-*/oat/arm64/base.odex
それは言う:
base.odex: ELF shared object, 64-bit LSB arm64, stripped
そして、aarch64-linux-gnu-objdump -d base.odex
動作しているようですし、いくつかの意味の解体(だけでなく、いくつかのゴミのセクション)を得ました。