Android工程目錄
??
如果使用Eclipse插件ADT開發應用程序,必須要熟悉工程的目錄結構,清楚各個目錄下面放置的是什么東西。Android工程主要的目錄有:src、bin、gen、res等。
不同的Android平臺目錄結構是不同的,下面以Android 2.3.3 為例介紹Android 在Eclipse 中的目錄結構,下面是目錄結構:
這里01_項目名當然就是我們的項目名了,下面分別對各目錄進行解析。
?
1. Src:
該目錄中存放的是該項目的源代碼,這個目錄包含了你即將創建的Java源代碼文件,這個目錄里的文件是根據package結構管理的,它與普通java項目中的/src目錄很相似。
如上圖所示,其中cn.com.qiang.helloworld 是包名,MainActivity.java 是默認的源代碼文件,我們可以打開看一下里面的代碼:
[java]?view plaincopy
package?cn.com.qiang.helloworld;?? ?? import?android.os.Bundle;?? import?android.app.Activity;?? import?android.view.Menu;?? ?? public?class?MainActivity?extends?Activity?{?? ?? ????@Override?? ????protected?void?onCreate(Bundle?savedInstanceState)?{?? ????????super.onCreate(savedInstanceState);?? ????????setContentView(R.layout.activity_main);?? ????}?? ?? ?? ????@Override?? ????public?boolean?onCreateOptionsMenu(Menu?menu)?{?? ?????????? ????????getMenuInflater().inflate(R.menu.main,?menu);?? ????????return?true;?? ????}?? ?????? }??
Activity 就是我們大名鼎鼎的Android 四大組件之一,主要實現我們打開app 所看到的界面。?
2.Gen:
自動生成的文件目錄。該目錄下的文件全部都是ADT自動生成的,一般并不需要去修改,實際上該目錄下只定義了一個R.java文件,該文件相當于項目的字典,為項目中用戶界面、字符串、圖片等資源都會在該類中創建其惟一的ID,當項目中使用這些資源時,會通過該ID得到資源的引用。
我們可以看看其中的代碼:
[java]?view plaincopy
public?static?final?class?drawable?{?? ???????public?static?final?int?ic_launcher=0x7f020000;?? ???????public?static?final?int?p0015=0x7f020001;?? ???????public?static?final?int?p0022=0x7f020002;?? ???}?? ???public?static?final?class?id?{?? ???????public?static?final?int?action_settings=0x7f080000;?? ???}?? ???public?static?final?class?layout?{?? ???????public?static?final?int?activity_main=0x7f030000;?? ???}?? ???public?static?final?class?menu?{?? ???????public?static?final?int?main=0x7f070000;?? ???}?? ???public?static?final?class?string?{?? ???????public?static?final?int?action_settings=0x7f050001;?? ???????public?static?final?int?app_name=0x7f050000;?? ???????public?static?final?int?hello_world=0x7f050002;?? ???}??
這是其中的一部分,我們可以看到其中各個資源的ID。
3.Android {版本號}:
這個目錄包含了項目需要的庫文件(Jar文件),這和普通Java項目中的/lib目錄很相似。同時其中還包含項目打包時需要的META-INF目錄.
?
4.Android Private Libraries:
所有的第三方JAR包引入都被放入了Android Private Libraries中
?
5.assets:
資源路徑,不會在R文件注冊。該目錄用于存放項目相關的資源文件,這個目錄和res包含的xml文件差不多,也是應用中引用到的一些外部資源。但主要區別在于這些資源是以原始格式保存,且只能用編程方式讀取。例如文本文件,視頻文件,MP3音頻等媒體文件。
?
6.bin:
編譯生成目錄。二進制文件,包括class、資源文件、dex、apk等。
可以看到,這里01_項目名.apk 就可以直接在手機里安裝使用了。
?
7.res:(這個就很重要了)
該目錄用于存放應用程序中經常使用的資源文件,其中包括圖片、布局文件以及參數描述文件等,其中包括多個目錄。
?
a) 其中以drawable開頭的四個文件夾用于存儲.png、.9.png、.jpg等圖片資源(.9.png是Android特有的圖片格式,可以根據情況進行拉伸,達到不變形的效果),他們的分變率從高到低,如果你打算在android應用中包含一個圖片或者圖標,就應該把它們放在這個目錄。
可以看到,我們的drawable-hdpi 文件中有三個圖片,注意:圖片名字不能有大寫字母和漢字,我們可以用F2修改其名字,且調用圖片時,是不需要添加.png的。
?
b)?layout文件夾存放的是應用程序的布局文件,這些layout是以xml形式保存的,關于layout的進一步信息,你可以參考android文檔中的UI layout??梢钥纯茨J的文件:
[java]?view plaincopy
<LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"?? ????xmlns:tools="http://schemas.android.com/tools"?? ????android:layout_width="match_parent"?? ????android:layout_height="match_parent"?>?? ?? ????<TextView?? ????????android:layout_width="wrap_content"?? ????????android:layout_height="wrap_content"?? ????????android:text="@string/hello_world"?/>?? ?? </LinearLayout>??
其中TextView顯示一個文件系統提供的空間。
Eclispse 同時為我們提供了Graphic Layout (可視化布局)?:
?
?
c) menu
memu主要用設置菜單文件
?
d) values
這個目錄也包含了一些xml文件,但主要是應用中要引用的key-value對。這些XML文件聲明了數組(Array)、顏色(color)、度量(Dimension)、字符串。之所以把這些東西分別放在單獨的xml文件中主要是考慮到這些值能夠在不更改源代碼的情況下用于多語言環境。例如,根據用戶語言的不同應用程序中的信息可以有多種語言版本。
1) strings.xml 文件—— 字符串資源文件,可以看一下源代碼
[java]?view plaincopy
<?xml?version="1.0"?encoding="utf-8"?>?? <resources>?? ?? ????<string?name="app_name">QQ</string>?? ????<string?name="action_settings">Settings</string>?? ????<string?name="hello_world">你好啊!!哈哈!!</string>?? ?? </resources>??
當?.xml 文件調用用strings中的字符串時,需這樣調用:
[java]?view plaincopy
android:text="@string/hello_world"??
即?@string/+<string name>,則會調用strings.xml中定義的字符串;
當Java源代碼需調用字符串時,則需要調用gen中的R.string這樣來使用字符串;
?
2) dimens.xml 文件,主要用來設置文件的寬度和高度
[java]?view plaincopy
<resources>?? ?? ????<!--?Default?screen?margins,?per?the?Android?Design?guidelines.?-->?? ????<dimen?name="activity_horizontal_margin">16dp</dimen>?? ????<dimen?name="activity_vertical_margin">16dp</dimen>?? ?? </resources>??
這里?dp—寬度,sp— 字體大小
3) stypes.xml 文件
?
8.AndroidManifest.xml:
清單文件?這個XML文件包含了android應用中的元信息,是每個android項目中的重要文件。在軟件安裝的時候被讀取,Android中的四大組件(Activity、ContentProvider、BroadcastReceiver、Service)都需要在該文件中,以及運行這個android應用程序需要的用戶權限列表,例如:電話、短信、互聯網、訪問SD卡,同時也詳細描述了android應用的項目結構。
[java]?view plaincopy
<?xml?version="1.0"?encoding="utf-8"?>?? <manifest?xmlns:android="http://schemas.android.com/apk/res/android"?? ????package="cn.com.qiang.helloworld"?? ????android:versionCode="1"?? ????android:versionName="1.0"?>?? ?? ????<uses-sdk?? ????????android:minSdkVersion="10"?? ????????android:targetSdkVersion="10"?/>?? ?? ????<application?? ????????android:allowBackup="true"?? ????????android:icon="@drawable/p0015"?? ????????android:label="@string/app_name"?? ????????android:theme="@style/AppTheme"?>?? ????????<activity?? ????????????android:name="cn.com.qiang.helloworld.MainActivity"?? ????????????android:label="@string/app_name"?>?? ????????????<intent-filter>?? ????????????????<action?android:name="android.intent.action.MAIN"?/>?? ?? ????????????????<category?android:name="android.intent.category.LAUNCHER"?/>?? ????????????</intent-filter>?? ????????</activity>?? ????</application>?? ?? </manifest>??
1)、每個activity 都要注冊,注冊的方式 寫上“包名+類名”即可:
[java]?view plaincopy
android:name="cn.com.qiang.helloworld.MainActivity</span>??
2)、必須有一個activty 作為入口界面
[java]?view plaincopy
<intent-filter>?? ????????????????<action?android:name="android.intent.action.MAIN"?/>?? ?? ????????????????<category?android:name="android.intent.category.LAUNCHER"?/>?? </intent-filter>??
intnet-filter 被稱為意圖過濾器。
?
9. proguard-project.txt:
代碼混淆相關文件
?
10.project.properties:
工程屬性的配置文件,配置編譯的版本等。ADT14 以后, project.properties和default.properties合并成了project.properties。供Eclipse使用,讀取該項目使用Android版本號
總結
以上是生活随笔為你收集整理的Android 项目在Eclipse中的目录结构的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。