天天看點

Android初識HelloworldHelloWorld的目錄結構有:srcgen/R.javagen/BuildConfig.javabinres

在eclipse+adt中建立helloworld非常簡單,直接按照導航下一步就可以了。本文重點不在如何建立,而在了解helloworld項目的檔案。

Android初識HelloworldHelloWorld的目錄結構有:srcgen/R.javagen/BuildConfig.javabinres

src:存放應用程式的邏輯代碼,這裡面的代碼是人工寫的

gen:存放資源代碼,這裡面的代碼是自動生成的

assets:存放mp3等視訊資源

bin:生成的可執行的二進制檔案目錄

libs:引用到的庫,這裡和bin/dexedlibs裡面的目錄是一緻的

res:資源檔案。往這個目錄添加資源的時候,會被gen/r.java自動記錄,自動那個記錄到r.java中去。

androidmanifest.xml:項目的總配置項,記錄應用中使用到各種全局的配置

ic_launcher-web.png:這個是為了google play市場使用展示的圖示,它需要的是512×512的高分辨率的圖示。

proguard-project.txt

project.properties

這兩個檔案是為了保護android項目而做的代碼混淆使用的。官方文檔在:http://developer.android.com/tools/help/proguard.html

下面一個一個看:

存放使用者代碼的檔案夾,裡面至少會有一個activity。activity的概念就是界面,相當于c#中的windows form。

Android初識HelloworldHelloWorld的目錄結構有:srcgen/R.javagen/BuildConfig.javabinres

看到至少包含了一個oncreate函數,是在渲染界面的時候調用的,這裡使用r.layout.activity_main來渲染,這個就對應于gen/r中的

Android初識HelloworldHelloWorld的目錄結構有:srcgen/R.javagen/BuildConfig.javabinres

activity_main等号後面的是資源描述符。

這裡正好可以看一下r這個類

r中的每個類都對應res中的一個資源,

比如layout對應res/layout

drawable對應res/drawable-xxdpi

是以上文中的r.layout.activity_main對應的實際是res/layout/activity_main.xml。這樣就把界面和邏輯分開了,這就是典型的mvc模式分層的概念。

裡面存放着全局的debug開關,你可以使用這個開關做日志和調試的操作。

但是如何修改這個呢?gen下面的檔案不應該手動修改,具體可以參照:http://drovik.com/html/5701262218.html

這個目錄是生成檔案的目錄,可以看到,它把apk包,androidmainifest.xml都生成一份放在檔案夾内。

java編譯後生成的java位元組碼檔案,相當于java的.class檔案。但是由于android使用的dalvik虛拟機和标準的java虛拟機是不相容的,是以dex和class是不一樣的。

現在網絡上就有一些工具能通過dex來進行反編譯出android代碼。比如這個:

<a href="http://code.google.com/p/android-apkdb/">http://code.google.com/p/android-apkdb/</a>

這個就是應用的安裝包了(application package file)。一個apk檔案内包含被編譯的代碼檔案(.dex檔案),檔案資源(res),assets,證書(certificates),和清單檔案(manifest file)。apk是基于zip檔案格式的。

這個是所有資源檔案的集合,實際上是zip格式。我們可以将它的字尾名修改,解壓可以看到裡面的結構是有mainfest,res等。

對應libs中引用的jar包

這個目錄就是所有的資源檔案了

Android初識HelloworldHelloWorld的目錄結構有:srcgen/R.javagen/BuildConfig.javabinres

res/drawable-xdpi:這裡存放的是對不同分辨率的資源

res/layout:存放布局資源,src中的oncreate方法就加載了這裡面的activity_main資源

res/menu:手機的menu菜單

res/values:用來存放一些變量,參數等。

res/values-xx:對于不同裝置或者不同的安卓版本會有不同的參數設定

繼續閱讀