【程式】Android 教學筆記 建立新專案

建立Android專案  
(模擬器啟動可參照:啟動Android模擬器)
1. 建立新專案
開啟 Eclipse , File -> New -> Project...  
2. 指定應用程式型態
選 Android -> Android Application Project,按「Next」
AD0301
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 版本代號。
 AD0302  
AD0305ssss
AD0306  
4. 大部份都是內定值,最後按「Finish」,即完成專案的建立!
5. 完成後會出現以下畫面,即可開始寫入要加入的程式。
AD0307  
6. 執行程式:menu -> Run -> Run
AD0308  

7. 查看程式碼。開啟 工作目錄下的\BMI\AndroidManifest.xml,
AD0309  
切換到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 應用程式的運作流程: 

  1. Activity 
  2. Broadcast Intent Receiver
  3. Service
  4. 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.011
2.3.310
2.39
2.28
2.17
2.0.16
2.05
1.64
1.53
1.12
1.01
 目前各版本佔有率可以參考官方的版本佔有率圖表:
 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
  

留言