【Android开发】Android应用程序目录结构
原文:http://android.eoe.cn/topic/summary
?
Android開發之旅:組件生命周期吳秦?Android開發之旅:HelloWorld項目的目錄結構
* HelloWorld項目的目錄結構*
(這個HelloWorld項目是基于Android 2.1的)在Eclipse的左側展開HelloWorld項目,可以看到如下圖的目錄結構:
Image:http://andriki.com/mediawiki/images/c/c8/Image_thumb_1.png
下面將分節介紹上面的各級目錄結構。
* src文件夾*
顧名思義(src, source code)該文件夾是放項目的源代碼的。打開HelloWorld.java文件會看到如下代碼:
package helloworld.test;
import android.app.Activity;
import android.os.Bundle;
public class HelloWorld extends Activity {
/* * Called when the activity is first created. * /
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
可以知道:我們新建一個簡單的HelloWorld項目,系統為我們生成了一個HelloWorld.java文件。他導入了兩個類android.os.Bundle,HelloWorld類繼承自Activity且重寫了onCreate方法。
以下說明針對沒有學過Java或者Java基礎薄弱的人 @Override 在重寫父類的onCreate時,在方法前面加上@Override 系統可以幫你檢查方法的正確性。例如,void onCreate(Bundle savedInstanceState){…….}這種寫法是正確的,如果你寫成void oncreate(Bundle savedInstanceState){…….}這樣編譯器回報如下錯誤——The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method,以確保你正確重寫onCreate方法。(因為oncreate應該為onCreate) 而如果你不加@Override,則編譯器將不會檢測出錯誤,而是會認為你新定義了一個方法oncreate。
Activity類關注創建窗口,你可以用方法Activity子類都實現的:
setContentView(int)方法定義你的UI,和用setContentView指定由哪個文件指定布局(main.xml),可以將這個界面顯示出來,然后我們進行相關操作,我們的操作會被包裝成為一個意圖,然后這個意圖對應有相關的activity進行處理。
ContentProvider保存數據)。
更多的關于Activity類的詳細信息此系列以后的文章將做介紹,如果你想了解更多請參閱相關文檔。
android.os.Bundle類:從字符串值映射各種可打包的(Parcelable)類型(Bundle單詞就是捆綁的意思,所有這個類很好理解和記憶)。如該類提供了公有方法——public boolean containKey(String key),如果給定的key包含在Bundle的映射中返回true,否則返回false。該類實現了Parceable和Cloneable接口,所以它具有這兩者的特性。
* gen文件夾*
該文件夾下面有個R.java文件,R.java是在建立項目時自動生成的,這個文件是只讀模式的,不能更改。R.java文件中定義了一個類——R,R類中包含很多靜態類,且靜態類的名字都與res中的一個名字對應,即R類定義該項目所有資源的索引。看我們的HelloWorld項目是不是如此,如下圖:
Image:R thumb.png圖2、R.java對應res
- 通過R.java我們可以很快地查找我們需要的資源,另外編繹器也會檢查R.java列表中的資源是否被使用到,沒有被使用到的資源不會編繹進軟件中,這樣可以減少應用在手機占用的空間。*
* Android 2.1文件夾*
該文件夾下包含android.jar文件,這是一個Java 歸檔文件,其中包含構建應用程序所需的所有的Android SDK 庫(如Views、Controls)和APIs。通過android.jar將自己的應用程序綁定到Android SDK和Android Emulator,這允許你使用所有Android的庫和包,且使你的應用程序在適當的環境中調試。例如上面的HelloWorld.java源文件中的:
import android.app.Activity;import android.os.Bundle;
這里兩行代碼就是從android.jar導入包。
* assets*
包含應用系統需要使用到的諸如mp3、視頻類的文件。
* res文件夾*
資源目錄,包含你項目中的資源文件并將編譯進應用程序。向此目錄添加資源時,會被R.java自動記錄。新建一個項目,res目錄下會有三個子目錄:drawabel、layout、values。
- drawabel-?dpi:包含一些你的應用程序可以用的圖標文件(* .png、* .jpg)
- layout:界面布局文件(main.xml)與WEB應用中的HTML類同,沒修改過的main.xml文件如下(HelloWorld的就沒有修改過):
main.xml
<?xml version"utf-8"?>
- values:軟件上所需要顯示的各種文字。可以存放多個* .xml文件,還可以存放不同類型的數據。比如arrays.xml、colors.xml、dimens.xml、styles.xml
* AndroidManifest.xml*
項目的總配置文件,記錄應用中所使用的各種組件。這個文件列出了應用程序所提供的功能,在這個文件中,你可以指定應用程序使用到的服務(如電話服務、互聯網服務、短信服務、GPS服務等等)。另外當你新添加一個Activity的時候,也需要在這個文件中進行相應配置,只有配置好后,才能調用此Activity。AndroidManifest.xml將包含如下設置:application permissions、Activities、intent filters等。
如果你跟我一樣是ASP.NET出生或者學過,你會發現AndroidManifest.xml跟web.config文件很像,可以把它類同于web.config文件理解。 如果你不是,你可以這樣理解——眾所周知xml是一種數據交換格式,AndroidManifest.xml就是用來存儲一些數據的,只不過這些數據時關于android項目的配置數據。
HelloWorld項目的AndroidManifest.xml如下所示:
<?xml version"utf-8"?>
關于AndroidManifest.xml現在就講這么多,此系列后面的文章將單獨詳細介紹。
* default.properties*
記錄項目中所需要的環境信息,比如Android的版本等。 HelloWorld的default.properties文件代碼如下所示,代碼中的注釋已經把default.properties解釋得很清楚了:
default.properties# This file is automatically generated by Android Tools.
Do not modify this file -- YOUR CHANGES WILL BE ERASED!
This file must be checked in Version Control Systems.
To customize properties used by the Ant build system use,
"build.properties", and override values to adapt the script to your
project structure.
Indicates whether an apk should be generated for each density.
split.density=false
Project target.
target=android-7
總結
以上是生活随笔為你收集整理的【Android开发】Android应用程序目录结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 优秀的培训机构该如何培养学生?
- 下一篇: Android应用程序之间共享文字和图片