Android應(yīng)用的目錄組織結(jié)構(gòu)及作用

轉(zhuǎn)載請注明出處:http://www.itdecent.cn/p/9e544e3fb2fb

你知道一個android項目的文件目錄結(jié)構(gòu)嗎?你知道每一個文件夾的含義和作用嗎?今天我將把自己知道的好好總結(jié)下,此篇文章將以eclipse為開發(fā)工具介紹android項目的目錄組織及每個文件夾的作用,如果有誤,歡迎指出。?

上圖為以eclipse為開發(fā)工具的android項目的目錄結(jié)構(gòu),其每個文件夾的含義分別為:

src: 該文件夾是放項目的源代碼的,存放業(yè)務(wù)邏輯java代碼;

gen: 該目錄下的文件是ADT自動生成的,并不需要人為地去修改。實該目錄下定義了一個R.java文件,該文件相當(dāng)于項目的字典,項目中用戶界面、字符串、圖片、聲音等資源都會在該類中創(chuàng)建唯一的ID。如果你引用了其他項目,在該目錄下也會包含其他項目的R.java。

Android 6.0:直接支持的jar包,數(shù)字對應(yīng)你開發(fā)選擇的版本,6.0代表選擇的API為23;

Android Private Libraries:表示引用第三方的jar包,視為私有引用,如高德地圖api、微信支付寶支付等第三方j(luò)ar包。

Android Dependencies:里面存放的是直接支持的類庫Library,會顯示引用項目,依賴于項目,如android 5.0的cardview項目。

assets:可以存放一些較大的資源文件,放置一些程序所需要的媒體文件;

bin:?工程的編譯目錄. 存放一些編譯時產(chǎn)生的臨時文件和當(dāng)前工程的.apk文件;

libs: 當(dāng)前工程所依賴的jar包,自建文件夾;

libscr:引入的jar包的注解文檔和源碼,自建文件夾;

res(resources):資源目錄,包含項目中的資源文件并將編譯進應(yīng)用程序。向此目錄添加資源時,會被R.java自動記錄。res資源目錄下的文件夾:

drawable:自定義的繪制圖形,如shape、selector、layer-list 等樣式繪制的圖形;’

drawalbe-ldpi: 低分辨率的圖片,如QVGA (240x320)

drawable-mdpi:?中等分辨率的圖片,如HVGA (320x480)

drawable-hdpi:?高分辨率的圖片,如WVGA (480x800),FWVGA (480x854)

drawable-xhdpi:至少960dp x 720dp,可以使用Resources.getDrawable(id)可以獲得資源類型。

res/layout:存放所有的布局文件,就是我們能直接看到的界面;

res/values:?存放一些資源文件的信息,用于讀取文本資源,將要定義的屬性寫在xml中,以達(dá)到資源重復(fù)利用。在本文件夾之中有一些約定的文件名稱:

·arrays.xml:定義數(shù)組數(shù)據(jù);

·dimens.xml:定義尺度,將要定義的屬性寫在dimens.xml中,以達(dá)到資源重復(fù)利用;

·strings.xml:定義字符串,可以使用Resources.getString()方法獲得這些資源;

·styles.xml:定義顯示的樣式文件;。

·colors.xml:定義表示顏色的數(shù)據(jù);

.res/raw:自定義的一些原生文件所在目錄,像音樂、視頻等文件格式。存放直接復(fù)制到設(shè)備中的任意文件,它們無需編譯,添加到你的應(yīng)用程序編譯產(chǎn)生的壓縮文件中。

res/anim:用于定義動畫對象。存放定義了補間動畫(tweened animation)或逐幀動畫(frame by frame animation)的XML文件。

res/menu/:存放定義了應(yīng)用程序菜單資源的XML文件。菜單資源文件必須放在res/menu目錄中。

AndroidManifest.xml: 記錄應(yīng)用中所使用的各種組件;該文件為應(yīng)用程序的系統(tǒng)控制文件,是項應(yīng)用程序的總配置文件,是應(yīng)用程序的全局描述文件,每一個應(yīng)用程序都必須包含它。

project.properties: 指定當(dāng)前工程采用的開發(fā)工具包的版本;

proguard-project.txt: 防反編譯、混淆文件;

.keystore: 項目生成的密鑰,打包時使用;

注意:

1.scr下的Java package和應(yīng)用包名Application package的不同。

Java package:在APP中代碼包主要組織類實現(xiàn)應(yīng)用程序的業(yè)務(wù)邏輯,但與應(yīng)用程序沒有什么關(guān)系。觀察到Android的java包只是本地應(yīng)用程序意味著我們不必?fù)?dān)心包名稱與其他的應(yīng)用程序發(fā)生沖突,所以我們可以直接把我們的java包直接復(fù)制到另一個不同的項目中去。

Application package:應(yīng)用程序包在AndroidManifest.xml中聲明的package是一個應(yīng)用程序的標(biāo)識符,這個標(biāo)識符是獨一無二的,不能有兩個應(yīng)用程序同時安裝在同一部手機上。當(dāng)你把你的應(yīng)用上傳到相關(guān)的應(yīng)用商店時,這個也是要審核,應(yīng)用商店也無法將兩個相同包名的應(yīng)用一起提供給用戶下載,即使它們長的完全不一樣。改了工程包名之后,程序就會被認(rèn)為是另外一個程序,否則相同包名的apk在手機里面會相互覆蓋。所以我們一般會以com.domain.myapp的樣式來命名我們的app,降低重名的情況。包名是我們在一開始創(chuàng)建項目的時候就要求命名的了。

經(jīng)過測試發(fā)現(xiàn),android的Java package和Application package是完全不相干的,當(dāng)應(yīng)用包名和代碼包名一致時,在清單文件中可以用.myActivity來定義類;

想了解更多請參考文章:http://blog.javia.org/android-package-name/

2.Android Support V4, V7, V13的區(qū)別和應(yīng)用?

他們的本質(zhì)是google官方提供了Android Support Library package 系列的包,其作用是用來保證高版本sdk開發(fā)的向下兼容性。

Android Support v4:? 這個包是為了1.6及更高版本而設(shè)計的,這個包是使用最廣泛的,eclipse新建工程時,都默認(rèn)帶有了。

Android Support v7:? 這個包是為了2.1及更高版本而設(shè)計的,但不包含更低。另外注意,v7是要依賴v4這個包的,即,兩個得同時被包含。

Android Support v13:這個包的設(shè)計是為了android 3.2及更高版本的,一般我們都不常用,平板開發(fā)中能用到。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容