建立Android專案
(模擬器啟動可參照:啟動Android模擬器)
1. 建立新專案
開啟 Eclipse , File -> New -> Project...
2. 指定應用程式型態
選 Android -> Android Application Project,按「Next」
3. 在這裡要輸入專案的基本設置,簡略說明各個輸入欄位的意義:
名稱 | 描述 |
Project Name | 包含這個項目的資料夾的名稱 |
Application Name | 顯示在應用程式上的標題 |
Package Name | 套件(Package)名稱,JAVA 的習慣是用套件名稱來區分不同的類別(class)。依照專案的不同,我們會起不同的路徑名稱。 |
Create Activity | 使否建立這個是項目的主要類別,勾選後可以指定這個類別的名稱。這個類別是一個 Activity 類別的子類別。我們可以在「Activity」中啟動程式和控制程式流程,或是根據需要控制螢幕、界面。 |
Build Target | 選擇用來編譯專案的 SDK 版本。 當選定了 Build Target 後,開發工具會在 Min SDK Version 欄位中自動填入對應的值 |
Min SDK Version | 本應用程式所支援的最低 SDK 版本代號。 |
ssss
4. 大部份都是內定值,最後按「Finish」,即完成專案的建立!
5. 完成後會出現以下畫面,即可開始寫入要加入的程式。
6. 執行程式:menu -> Run -> Run
7. 查看程式碼。開啟 工作目錄下的\BMI\AndroidManifest.xml,
切換到xml分頁標籤,查看預設的檔案原始碼:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.bmi"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".BMI"
android:label="@string/title_activity_bmi" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Android 應用程式的運作流程:
- Activity
- Broadcast Intent Receiver
- Service
- Content Provider
程式段說明:
「manifest」 (清單) 是主要標籤
「package」 是「manifest」(清單)標籤的一個特別屬性,範例中的內容可用來標明,這個應用程式的進入點存在於「com.example.bmi」這個名稱空間/路徑中。
「android:versionCode」和「android:versionName」是應用程式版本號。 這兩個屬性是可選的(非必要)。
「android:versionName」是給使用者看的版本號,如「1.0」、「2.0」。「android:versionCode」則是開發者用的內部版本號,一般使用流水號。
「manifest」標籤中主要包含一個「application」標籤(備註1)。
「application」標籤裡面,定義了所有這個應用程式用到的 Activity、服務等資訊。「application」標籤中的「android:icon」屬性,定義了這個應用程式將顯示在 Android 主畫面中的應用程式圖示。「android:icon="@drawable/icon"」表示應用程式圖示的資源檔存在於 「res/drawable/icon」 中。圖示的大小必須超過 64x64 像素(Pixel)。「application」標籤中的「android:label」屬性可用來指定應用程式將顯示在 Home 主畫面上的名稱。也就是預設剛開好機時,可以從桌面下方拉出的應用程式列表。
「application」標籤中所有用到的 Activity ,都要包含在一個個「activity」標籤中(備註2)。
Activity 是 Android 應用程式與使用者互動的主要元素,當使用者開啟一個應用程式,第一個看到的畫面就是一個 Activity。若是一個應用程式中包含多個畫面時,會定義多個不同的 Activity,我們也必須在「application」標籤中,使用多個「activity」標籤,為不同的 Activity 添加描述。如果我們已經在程式碼中定義好了 Activity ,卻忘了在「AndroidManifest.xml」檔案中加入對應的「activity」標籤,那麼在執行中呼叫到這個 Activity 的時候,將無法開啟這個 Activity。
「activity」標籤的「android:name」屬性,指出了這個 Activity 所對應的類別(class)。「activity」標籤中的「android:label」屬性可用來指定應用程式將顯示在 Activity 畫面上方的名稱。也可以在程式碼中透過「setTitle(“名稱”)」來動態修改。
因為在上一層「Manifest」標籤屬性中已經定義了「package="com.example.bmi"」,因此在「activity」標籤的 「android:name」屬性中,「.Bmi」代表著「com.example.bmi.Bmi」的簡寫。也可以寫成「Bmi」,一樣是代表「com.example.bmi.Bmi」這個類別。
「intent-filter」標籤定義了這個「activity」的性質。 「intent-filter」中主要包含了兩個標籤:「action」跟「category」標籤。 「action」標籤中的「android:name」屬性,其內容「android.intent.action.MAIN」表示:這個 Activity 是此應用程式的進入點(就像程式中常見的 main 主程式),開啟這個應用程式時,應先執行這個 Activity。 。常見的還有「android.intent.action.EDIT」等標籤,會在之後章節用上的時候講解。「category」標籤中的「android:name」屬性,其內容「android.intent.category.LAUNCHER」表示:這個 Activity 將顯示在 Launcher 的應用程式列表中。
我們把整個檔案合到一起看,可以總結出這個檔案所傳達的訊息:在「com.example.bmi」路徑下的「Bmi.java」這個檔案中,已定義了一個主要的 Activity; 當我們打開 Android 的時候,顯示的是位於「res/drawable/icon」的圖示。一旦我們按下圖示來啟動這個應用程式,Android 應用程式框架會去尋找到定義了「android.intent.action.MAIN」內容的 「.Bmi」activity,並呼叫執行。
Android SDK 1.1 版之後引入了這條敘述,「X」代表了目標版本代號。透過指定這個參數,系統可以依此辨別應用程式是否使用相容的 SDK 版本,好決定能否在這台機器上安裝執行。這也是一個可選填的選項。但如果我們的應用程式要發佈出去,一些強勢的通路如 Google Android Market 已規定所有新發佈的應用程式必須指定「android:minSdkVersion」這個參數。
備註1
除了「application」標籤外,還有「uses-permission」(例如允不允許存取SMS、能否存取聯絡簿、相機功能)、「permission」、「instrumentation」等主要標籤。相關的內容在後續章節用到時再一併解說。
備註2
除了「activity」標籤外,對應於 Android 應用程式的運作流程,還有「service」、「receiver」、「provider」等主要元件。相關內容會在後續章節提到時作解說。
各目標版本與代號對應表如下:
目標版本 | 代號 |
3.0 | 11 |
2.3.3 | 10 |
2.3 | 9 |
2.2 | 8 |
2.1 | 7 |
2.0.1 | 6 |
2.0 | 5 |
1.6 | 4 |
1.5 | 3 |
1.1 | 2 |
1.0 | 1 |
目前各版本佔有率可以參考官方的版本佔有率圖表:
http://developer.android.com/resources/dashboard/platform-versions.html
程式專案架構
Android 插件已幫我們建立了不少檔案。 檢視新建立的 BMI 檔案夾中的內容,我們可以將一個 Android 應用程式基本的檔案結構歸納成如下:
Android 應用程式的基本檔案結構,以及各自所負責的內容。
src/ 原始碼(source)目錄
src 目錄中包含了一個 Android 應用程式中所需的各個程式碼檔案。這些檔案被包在對應 package 的子目錄下。(如本章的 BMI 例子中,子目錄指的就是 /src/com/demo/android/bmi/)
src 目錄中比較關鍵的程式有:
1. Bmi.java 這個檔案的檔名會隨著你在建立一個新的程式專案畫面中所填入「Create Activity」欄位值的不同而改變。這是新程式專案中的主要程式區塊。我們開發 Android 程式的多數時間,都是在 src 目錄下和 Android 打交道。
gen/ 自動生成(Generate)目錄
gen 目錄中存放所有自動生成的檔案。
gen 目錄中最關鍵的程式就是 R.java 檔。
1. R.java 這個檔是自動產生的。會由 ADT 插件自動根據你放入 res 目錄的 XML 描述文件、圖像等資源,同步更新修改 'R.java' 這個中介檔案。所有的 Android 程式中都會有以 R.java 為名的這個檔案,你完全不需要,也應避免手工修改 R.java 這個檔案。
R.java 中自動產生的 「R」 類別就像是個字典一樣,包含了使用者介面、圖像、字串等各式的資源與相應的編號(id)。Android 應用程式中很多時候會需要透過 R 類別調用資源。 編譯時編譯器也會查看這個資源列表,沒有使用到的資源就不會編譯進去,為手機應用程式節省不必要佔用的空間。
res/ 資源(Resource)目錄
「res」 目錄中存放所有程式中用到的資源檔案。"資源檔案"指的是資料檔案,或編譯時會被轉換成程式一部分的 XML 描述檔。Android 針對放在 「res」 目錄下的不同子目錄的資源,會有各自不同處理方式。因此我們寫程式時,最好能搞清楚各目錄下分別可放置的內容。
res/ 中的程式:
3. layout/ 版面配置(layout)目錄 「layout」目錄包含所有使用 XML 格式的介面描述檔。「layout」 中的 XML 介面描述檔就像寫網頁時用到的 HTML 檔案一樣,用來描述螢幕上的版面編排與使用的介面元件。XML 介面描述檔描述的內容可以是整張螢幕,也可以只描述一部分的介面(例如描述用來產生對話框的介面元件)。
雖然你也能直接通過 Java 來建立使用者介面,不過透過 XML 描述檔來建立使用者介面相對更簡單,架構也更清晰,以後維護時更容易釐清問題。要使用這些介面元件,應透過 「R.java」 檔中自動產生的 「R」 類別來調用。
4. values/ 參數值(value)目錄 「values」 目錄包含所有使用 XML 格式的參數值描述檔,可以在此添加一些額外的資源如字串(很常用)、顏色、風格等。使用時也是透過 「R」 類別來調用。
Android 功能清單
「AndroidManifest.xml」列出該程式功能。
當啟動時會使用到函數庫(uses-libray)、支援內容提供者(ContentProvider)
可處理資料型態、實際行動、跨應用程式等。
可用的服務有(電話功能、網路功能、GPS功能)
新增一個Activity需要先註冊這個新的Activity才能順利調用。
參考:
Creating an Android Project | Android Developers
http://developer.android.com/training/basics/firstapp/creating-project.html
http://code.google.com/p/androidbmi/wiki/ReadSource
AndroidManifest - androidbmi - 定義 Android 清單 - BMI (Body Mass Index) Calculator App on Android platform - Google Project Hosting
http://code.google.com/p/androidbmi/wiki/ReadSource
http://code.google.com/p/androidbmi/wiki/AndroidManifest
留言列表