APKファイルの構造

APK(Androidのパッケージ)ファイル圧縮ファイルは、のの.apk接尾辞と呼ばれる、APKファイルをAndroidアプリケーション、アプリケーションのインストールに使用Androidプラットフォームのファイルのすべての内容が含まれています。

  • 資産 APKの静的ファイルにパッケージ化する必要が格納されています
  • LIBストアアプリケーションは、ネイティブライブラリに依存します
  • 解像度は、アプリケーションのリソースファイルを保存します
  • META-INFストア署名と証明書の用途
  • AndroidManifest.xmlをアプリケーション構成ファイル
  • classes.dex DEX実行ファイル
  • resources.arseリソースインデックステーブル間のマッピング関係、リソースファイルとリソースレコードID

RES

リソースのIDを直接使用、R.id.filenameにアクセスしたときにすべてのファイルがこのフォルダに存在する略語リソース、ストレージリソースファイルは、対応するIDを生成し、.RファイルでのAndroidプロジェクトにマップされますされています。
解像度でフォルダが複数のフォルダを含むことができ、ここで

  • aim アニメーションファイルが保存され
  • drawable 画像リソースのディレクトリ
  • layout ファイルレイアウトのためのディレクトリ
  • valuesディレクトリは、いくつかの特性値を記憶しcolors.xml、記憶された色の色値をdimens.xml値の大きさ、規定string.xml値が定義されている文字列、styles.xml定義されたスタイルオブジェクトを
  • xml任意のファイルを格納するフォルダのXML実行時にResources.getXML()で読み込むことができ
  • rawこれは、コンパイルせず、デバイス上のファイルのいずれかに直接割り当てることができます

LIB

典型的には、ライブラリーは、CPUの種類に応じて、4 libに異なるタイプを含んでいてもよいC / C ++で書かれたアプリケーションに依存するネイティブライブラリを、記憶され、それはに分けることができARM、、 、ARM-v7a ARMアーキテクチャに対応し、腕- V7アーキテクチャ、MIPSアーキテクチャおよびX86アーキテクチャ。MIPSX86

ライブラリの対応バージョン、およびディレクトリの固定構造は、ユーザーがこのディレクトリに応じて自分のライブラリを保存できるので、別のディレクトリに対応する異なるCPUアーキテクチャは、各ディレクトリには、多くを置くことができます。現在、市場で使用され、携帯端末のほとんどはARMアーキテクチャまたはARM-V7aに基づいており、モバイルインテリジェント端末のX86とMIPSアーキテクチャは、いくつかのアプリケーションのlibディレクトリのみarmeabi armeabi-v7aディレクトリまたはディレクトリが含まれているので、比較的小さいです。

META-INF

アプリケーションの署名情報保存、署名情報は、APKファイルの整合性を確認することができます。AndroidSDK APKはAPK、整合性をパッケージ中にパッケージ内のすべてのファイルの整合性を計算し、META-INFフォルダにこれらの保存、アプリケーションが最初のインストールでAPK META-INFファイルに応じてクリップの整合性をチェックします私たちは、APK内のすべてのファイルが改ざんされないことを確実にすることができるということ。順番にAPKは、アプリケーションが不正に変更が加えられていないか、ウイルス感染、ヘルプは、Androidアプリケーションのシステムのセキュリティと整合性を確保することを確実にします。

そこの下にファイルが含まれているMETA-INFディレクトリCERT.RSACERT.DSACERT.SFおよびMANIFEST.MFCERT.RSA開発者はAPKの署名ファイルに署名する秘密鍵を利用することで、CERT.SFは、MANIFEST.MFファイル内のファイルのSHA-1ハッシュ値を記録しました。

AndroidManifest.xmlを

Androidアプリケーションの設定ファイルは簡単な言葉でAndroidアプリケーション「総合的な情報」ファイルを設定し、AndroidのシステムへのAndroidのアプリケーション設定ファイルの「自己紹介」と同等のものを記述するために使用され、Androidシステムは、この「自己に基づくことができます紹介「ITアプリケーションのAPK完全に理解するには、各AndroidアプリケーションはAndroidManifest.xmlファイルが含まれている必要があり、その名前が固定されており、変更することはできません。

私たちは、一般的にサービス、プロバイダとレシーバーは、AndroidManifest.xmlをしてAndroidアプリケーションの開発期間に対応するシステムコンポーネントを起動する唯一の方法を登録し、このファイルには、いくつかの追加の権利の宣言と使用が含まれ、それぞれの活動のためのコードを考えてSDKのバージョン情報など。

パッケージ化された場合、コンパイラはAndroidManifest.xmlにシンプルで、簡単にAXML形式、下に示されているようなフォーマットをコンパイルした後に、Androidのシステムを認識するだろう。

AXMLヘッド:固定値0x00080003で固定表さAXMLファイル、
AXMLファイル長:識別するファイルサイズAXML
StringDataSegment:XML文書、全てこの文字列型で保存。
ResourceIdSegment:リソースファイルID xmlファイルは、ここでは声明の中で保存されます。
XmlContentSegment:XMLコンテンツセグメントは、XMLファイル構造に従って順次XMLデータ内容に格納され、配置されています。

classes.dex

従来のJavaプログラム、クラスファイル、バイトコードにコンパイルされたJavaファイル最初のプットは、Java仮想マシンが解釈を通じてこれらのクラスファイルを実行することができ、クラスファイルに格納されています。

Dalvik仮想マシンは、通常の状況下で、Javaバイトコードから変換されたのDalvikバイトコード最適化のDalvikバイトコードが実行されるJava仮想マシン、AndroidアプリケーションでAndroidSDK介してパッケージDXツールは、のDalvikバイトコードにJavaバイトコードに変換します。

DXツールは、組換え、最適化は、ボリュームを減らすために達成することができ、クラスファイルの複数の運転時間を短縮するために組み合わせることができます。下に示すように、DXツール変換処理、:

DXツール.classファイルのそれぞれの各領域の内容が重くなるためには、上記のように、組換え、最適化されたファイルが再配置DEXファイルは、のDalvik仮想マシンの実行中に発生させることができるDEX、より速く生成します。

resources.arsc

リソースファイルとリソースIDの間のマッピング関係を記録するために使用、それはリソースIDに応じてリソースを検索するために使用しました。

Androidのは、サブモジュールを開発した特異的に)コードにリソースファイルを呼び出すために必要がある場合、ディレクトリはリソースファイルを格納するために使用されるresは、ちょうどfindviewbyIdを(呼び出しRESがファイルを配置するフォルダたびリソースファイルを取得することができ、AAPT自動的に.Rファイルに格納されている対応するIDを生成します、我々はこのIDを呼び出すことができる、唯一このIDは、.Rファイルのみを検索しIDに応じて、コンパイラが指定されていないことを、実際には、プログラムは、システムを実行していることを確認するために、十分ではありませんリソースパスに対応し、記録ファイルのファイルresources.arscのIDとリソースファイルなどの位置対応関係に使用されています。


上記より転載https://blog.csdn.net/aha_jasper/article/details/104944929

おすすめ

転載: www.cnblogs.com/huaranmeng/p/12595135.html