小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Android執(zhí)行文件apk的組成結(jié)構(gòu)

 My鏡像站 2012-01-17

APK Android  PacKage 的縮寫,即 Android 安裝包。將 APK 文件直接傳到 Android 模擬器或 Android 手機中執(zhí)行即可安裝。 APK 文件其實是 zip 格式,但后綴名被修改為 apk ,在 windows 上可以通過 winrar 等程序直接解壓查看。

 

解壓 apk 后,一般的可看到的目錄結(jié)構(gòu)如下:

 

文件或目錄

作用

META-INF/

也就是一個 manifest ,從 java jar 文件引入的描述包信息的目錄

res/

存放資源文件的目錄

libs/

如果存在的話,存放的是 ndk 編出來的 so

AndroidManifest.xml

程序全局配置文件

classes.dex

最終生成的 dalvik 字節(jié)碼

resources.ars

編譯后的二進制資源文件

 

這里資源文件時相對比較重要的, sdk 文檔 ( 中文指南 ) 上有相關(guān)的詳細介紹:

 

目錄 Directory

資源類型 Resource Types

res/anim/

Define pre-determined animations.
Tween animations are saved in res/anim/ and accessed from the R.anim class.
Frame animations are saved in res/drawable/ and accessed from the R.drawable class.

定義的是預(yù)置的動畫對象。一般是逐幀動畫 (Frame animations) 或補間動畫( Tween animations )。而實際使用上,都是一些淡入淡出、縮放和移動等的補間動畫居多。

res/color

Define a color resources that changes based on the View state.
Saved in res/color/ and accessed from the R.color class

定義一些 android view 狀態(tài)變化時,使用的顏色值。這通常是綁定到一個界面元素上的,比如一個 button 被按下,彈起或 disable 時的顏色。

res/drawable/

res/drawable-hdpi

res/drawable-land-hdpi

res/drawable/mdpi

res/drawable/ldpi

res/drawable/port

Define various graphics with bitmaps or XML.
Saved in res/drawable/ and accessed from the R.drawable class.

定義要被用到的位圖資源文件。這些位圖資源可以是 bitmap ,也可以是用 xml 描述的 bitmap

注意:文件后綴為 9.png 是一種特殊的位圖,一般是通過 draw9patch 生成的,是一種可自動伸縮的位圖資源。

Drawable 的其他目錄形勢, land 是橫屏的, port 是豎屏的; hdpi 是高分辨率的, ldpi 是低分辨率的, hdpi 是高分辨率的。這里可以放置為特定情況下的界面優(yōu)化資源。

res/layout/

Define the layout for your application UI.
Saved in res/layout/ and accessed from the R.layout class.

定義的 UI layout ,被 aapt parser 后,可由 android 直接 render view 界面。

這里也有橫豎屏和 dpi 之分。

res/values/

可以被編譯成很多種類型的資源的 XML 文件。

注意 : 不像其他的 res/ 文件夾,它可以保存任意數(shù)量的文件,這些文件保存了要創(chuàng)建資源的描述,而不是資源本身。 XML 元素類型控制這些資源應(yīng)該放在 R 類的什么地方。

盡管這個文件夾里的文件可以任意命名,不過下面使一些比較典型的文件(文件命名的慣例是將元素類型包含在該名稱之中):

      array.xml 定義數(shù)組

     colors.xml 定義 color drawable 顏色的字符串值 (color string values) 。使用 Resource.getDrawable() Resources.getColor() 分別獲得這些資源。

     dimens.xml 定義 尺寸值 (dimension value) 。使用 Resources.getDimension() 獲得這些資源。

      strings.xml 定義 字符串 (string) 值。使用 Resources.getString() 或者 Resources.getText() 獲取這些資源。 getText() 會保留在 UI 字符串上應(yīng)用的豐富的文本樣式。

      styles.xml 定義 樣式 (style) 對象。

多國語言,由 values-xxx 的后綴組成。比如簡體中文 :res/values-zh-rCN

res/xml/

任意的 XML 文件,在運行時可以通過調(diào)用 Resources.getXML() 讀取。

res/raw/

直接復(fù)制到設(shè)備中的任意文件。它們無需編譯,添加到你的應(yīng)用程序編譯產(chǎn)生的壓縮文件中。要使用這些資源,可以調(diào)用 Resources.openRawResource() ,參數(shù)是資源的 ID ,即 R.raw.somefilename 。

 

 

Android 應(yīng)用程序的生成過程,輸入就是我們在 eclipse 或源碼中監(jiān)理的工程及其下面的源文件。輸出就是處理后的 apk 文件。整個過程可以如下圖所示:

 

 

 

整個過程的第一步,資源打包的工作,就是 aapt 這個工具完成的。

1.  在最后打包的 apk 中,所有的 xml 文件已經(jīng)不是原來的文本文件了,是被 aapt parser 后,直接保存下來的 xml 數(shù)據(jù)結(jié)構(gòu),這樣做的一大好處就是:到手機中無需再次 parser xml 文件,直接讀到定義好的數(shù)據(jù)結(jié)構(gòu)中就可以了。

2.        drawable 中的 png 圖片也被 aapt 給優(yōu)化過了。

3.        所有的資源文件都被自動生成一個索引,并生成到 R.java 中。為什么這么做?我想一個是效率,另一個好處就是最大限度的在編譯過程中由編譯器給你找錯 ( 通過 string 來索引很難做到 ) 。

 

其實這里,我們最關(guān)心的就是android對資源究竟做了些什么,還是看看 aapt 的代碼吧

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多