顯示具有 Android 標籤的文章。 顯示所有文章
顯示具有 Android 標籤的文章。 顯示所有文章

2010年1月3日 星期日

深入淺出Android程式設計(30)-結言

深入淺出Android程式設計的系列文章,就告一段落了。發表這一系列的文章。可以說明從Android的基礎說明到初步的開發流程。

而進階的程式設計及介面上的討論,我是會在下一個系列的文章,再跟各位來進行討論。而下一個系列的文章就是「從無到有-實戰Android系統開發」,就是從一個簡單的記帳系統為例子,來跟大家分享如何從使用者的需求進行分析、設計系統的介面、資料庫的分析、撰寫程式要注意的重點等系統開發的過程。

2009年12月22日 星期二

深入淺出Android程式設計(29)-如何將Eclipse中文化及方便的小工具DroidDraw

在這個最後的章節,我們要介紹如何將Eclipse中文化及方便的小工具DroidDraw的安裝及用法。

如何將Eclipse中文化,首先,先啟動Eclipse,接下來在選取選單「Help」中的「Software Updates....」選項。
在點選「Software Updates....」選項後,就會出現Software Updates的視窗,切換頁標籤至「Available Software」,再點選「Add Site...」按鈕。就會出現要新增外掛的網址輸入視窗。
在新增外掛的網址輸入視窗,在Location欄位輸入「http://download.eclipse.org/technology/babel/update-site/ganymede
」,再按下「OK」按鈕。就會回到原來的Software Updates視窗。
在Software Updates視窗,就會多出剛才輸入的網址而產生出來的選項,點選開來,再勾選「Babel Language Packs in traditional Chinese」選項,再按下「Install」按鈕,進行安裝動作,如圖75、圖76所示。再重新開啟Eclipse,就變成中文化的介面,如圖77所示。


圖75


圖76


圖77

而方便的小工具DroidDraw,是一個可以讓我們在設計Android介面的好工具,在Eclipse的開發介面沒有提供類似其他開發工具那樣,可以直接拖曳物件的功能,所以,有人就用Java寫了類似的工具,幫助Android的開發人員可以比較直覺的方式來拖曳物件,完成Android的介面。
首先,在連到DroidDraw的網頁(參考網址如下:http://www.droiddraw.org/ ),就會直接出現可以編輯的畫面,如圖78所示。在編輯畫面,可以先設定畫面的層次及螢幕的尺寸。可以選取的選項,如下所述:
Root Layout(畫面層次):Absolute Layout、Linear Layout、Relative Layout、Scroll View、Table Layout

Screen Size(螢幕尺寸):QVGA Land scape、QVGA Portrait、HVGA Land scape、HVGA Portrait


圖78

可以拖曳物件到編輯畫面上,再選取要編輯的物件,在右上方的視窗,切換到Properties(屬性頁籤)來設定此物件的屬性。編輯好介面後,在右下方,按下「Generate」按鈕來產生對應的XML內容,如圖76所示。
下一步就可以將這個XML內容選取後,複製到Eclipse的介面XML檔案。


圖79

總算結束了鐵人賽的連續發文,謝謝大家的支持。有關Android的介紹不是結束,而是開始。
我會再整理一些有關Android程式開發方面的文章,再分享給大家。預計會用一些程式範例,來說明如何驅動事件、每一個控制項的運作方式、資料庫SQLite的應用、如何使用Map View控制項等進階主題。
如果大家在it邦看不到圖片的話,大家也可以來看我的部落格:http://estyleservice.blogspot.com/,我會陸續更新之前我寫的文章及後面的進階主題。

深入淺出Android程式設計(28)-如何用非Eclipse平台來建立專案,以「Hello,Android!」專案說明

在這個章節要來介紹有關如何用非Eclipse平台來建立專案,以「Hello,Android!」專案說明。

如果不想使用Eclipse,而想用其它IDE開發介面,或者像傳統的C那樣,使用文字編輯器與命令列工具,那麼ADT外掛套件就無法協助來處理這些需求,不過,不用擔心,如果開發人員不會因為不使用Eclipse ADT外掛套件而失去之前章節,所提到的那些功能。

ADT外掛套件只是將一系列有關Android SDK的工具加以包裝(這些工具,例如:模擬器、aapt、adb、ddms)並且整合在Eclipse平台上,因此,是有可能用其它工具來包裝這些工具,如「Ant」。

Android SDK會建立的樣版檔案包含了一個可以跟「Ant」相容的build.xml檔案與檔案名稱為「activityCreator.py」的python檔案(在Windows平台為「activityCreator.bat」檔案名稱),可以為專案建立所有的基本目錄與檔案,讓開發人員可以從命令列建立專案,或者選擇整合到其它的IDE開發工具中。

例如,可以在Dos視窗,用以下命令建立與Eclipse建立類似的專案架構。請參考之前的章節-「如何在其他IDE或工具開發Android應用程式(上)」當中的描述。

activityCreator.py --out HelloAndroid com.google.android.hello.HelloAndroid

下一步,為了建立出專案,開發人員得接著執行「ant」相關命令,然後會在專案路徑底下的bin目錄下會產生一個HelloAndroid.apk檔案,而.apk檔案是一個Android對應用程式的封裝檔案,最後再使用「adb」工具就可以安裝到模擬器來進行測試。

上述這些運作方式及工具的操作,請參考之前的章節,由深入淺出Android程式設計(15)的章節到深入淺出Android程式設計(21)的章節,都有提到這方面的運作。

深入淺出Android程式設計(27)-如何進行專案除錯,以「Hello,Android!」專案說明

在Eclipse的ADT外掛與Eclipse的除錯整合的非常好,為了要測試這樣的機制,讓我們在程式碼裡插入一個bug,修改一下專案的程式碼如下所述:

public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Object o = null;
o.toString();
setContentView(R.layout.main);
}
}

當這樣的變動,加入「Object o = null;」及「o.toString();」等錯誤的程式碼,就會出現「Null Pointer Exception」的錯誤資訊,再一次執行專案時,就會顯示有錯誤訊息,如圖73所示。

圖73

如果要找出那裡發生錯誤,可以在「Object o = null;」這一行程式碼建立中斷點,使用的方式就是在Eclipse行號左邊區域建立中斷點,如圖74所示,然後選取選單「Run」中的選取「Debug」選項,來載入最後程式進入除錯模式。程式會重啟模擬器,但是,執行到中斷點時,程式會中斷,然後就可以在Eclipse的除錯模式下,一步一步的執行程式碼,如同除錯其它程式一樣。


圖74

2009年12月13日 星期日

深入淺出Android程式設計(26)-如何將介面升級到以XML方式來排版,以「Hello,Android!」專案說明

在這個章節要來介紹有關如何將介面升級到以XML方式來排版,以「Hello,Android!」專案說明。

如何將介面升級到以XML方式來排板

在上一個章節,我們所介紹的「Hello,Android!」專案是用開發人員稱之為程式化開發的介面,也就是說直接用程式碼來建構使用者介面,但是,這樣的建構介面的方式會發生許多問題,而小小的排版變動可能導致大部分的程式變更,最大的問題是容易忘記的是如何把正確的介面顯示在螢幕上,這可能導致發生錯誤並浪費時間除錯。

這也是為什麼Android SDK會提供另一種介面的建立模式,使用XML排版檔案來記錄介面的資料,最簡單了解的方法就是看下述的範例,下面的XML排版檔案內容就是跟剛編譯的程式同樣的的排版建構:




在上述的XML檔案中的標籤(Tag)可以自由使用,結構也很簡單,標籤(Tag)的名稱就是View物件的類別名稱,在這個範例,標籤(Tag)就只有一個「TextView」,開發人類可以使用任何繼承自View物件的類別做為標籤(Tag)名稱,包含一些開發人員所做的類別,這樣的結構比較容易快速建立界面,比起開發人員的程式碼要簡單的多了,這樣的模式受到Web開發的啟示,將參數從程式邏輯抽離只用來填入與取得資料。

在這個XML使用了一些屬性,大致說明如下:
xmlns:android

名稱空間宣告,讓Android工具參考Android名稱空間的一般屬性,大部分的XML排版檔必須使用這個名稱空間。

android:layout_width

這個屬性宣告View要佔螢幕多少空間,在這個例子,唯一的View要佔用全部的螢幕,所以使用「fill_parent」這個參數,就是填滿的意思。

android:layout_height

就像android:layout_width的屬性一樣,除了它是指螢幕可用的高度。

android:text

設定TextView包含的文字屬性,這上述的範例中,就是設定成「Hello,Android!」

那麼這個XML檔案會放在那裡呢?目前的設定是放到專案目錄下的res目錄底下的layout目錄,預設的檔案名稱是main.xml,如圖72所示。



圖72

下一步,打開Package Explorer下原始碼目錄內的R.java檔案,看起來的內容如下所述:

public final class R {
public static final class attr {
};
public static final class drawable {
public static final int icon=0x7f020000;
};
public static final class layout {
public static final int main=0x7f030000;
};
public static final class string {
public static final int app_name=0x7f040000;
};
};

Android專案的R.java檔用來索引定義在這個檔案的內裡使用的資源,開發人員可以在程式碼內使用這個類別來做為方便參考的索引記錄。

參考資料:
Android SDK Document http://code.google.com/android/documentation.html

深入淺出Android程式設計(25)-執行程式碼,以「Hello,Android!」專案說明

如何執行程式碼

在Eclipse使用ADT外掛套件,就很容易就可以執行專案程式,進入Eclipse平台,選取選單「Run」中的「Run Configurations…」選項,如圖65所示。




圖65

進入Run Configurations視窗,選取左邊的專案型態為「Android Application」的項目,按下滑鼠右鍵,選取「New」選項,建立新的配置設定,預設會依目前的專案,自動建立所屬的配置設定。如圖66所示



圖66

新的配置設定視窗,如圖67所示。在「Name」欄位上輸入「HelloAndroid」配置名稱欄位值,切換到「Android」頁標籤,點選「Browse...」來選擇所屬的專案,而ADT外掛套件會掃瞄專案內的每一個Activity的子類別加到Activity標籤下的下拉項目,因為目前Hello,Android專案只有一個Activity,所預設值就直接選取即可,其他項目使用預設值即可。如圖68所示。



圖67



圖68

接下來就是要執行程式了,進入Eclipse平台,選取選單「Run」中的「Run」選項,來執行應用程式。如圖69所示。



圖69

下一步在執行那一種應用程式的視窗,選取「Android Application」,就會啟動Android的模擬器,來執行應用程式,如圖70所示。完成執行後,就會在模擬器畫面上出現結果。如圖71所示。



圖70



圖71

上述就是執行的步驟,在下一個章節就是介紹如何安排介面上設計及其他檔案的作用。

參考資料:
Android SDK Document http://code.google.com/android/documentation.html

2009年11月16日 星期一

深入淺出Android程式設計(24)-如何建立介面,以「Hello,Android!」專案說明

在這個章節要來介紹有關如何建立介面,以「Hello,Android!」專案說明。

如何建立介面

在上個章節,我們建立好專案了。但是,只有自動產生出來的樣版程式。接下來,我們就要撰寫簡單的程式碼,來在螢幕顯示出「Hello,Android!」的字串,下述為最後要完成的程式碼,後續會將每一行程式碼進行說明。

public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
TextView tv = new TextView(this);
tv.setText("Hello,Android!");
setContentView(tv);
}
}

第一步,首先,要先加入TextView的類別,請先撰寫加入的程式碼在程式的最上面。
import android.widget.TextView

在Android SDK中,使用者介面是稱為View的子類別所組成,而View簡單的說就是一個繪圖物件,例如:radio button、動畫或是文字標籤,處理文字的View子類別則稱為TextView。

下述程式碼為TextView的建構式
TextView tv = new TextView(this);

TextView的建構參數是Android的Context Instance,Context表示一個系統操作的憑藉介面,它提供諸如解析資源、存取資料庫與設定喜好等服務,Activity就是繼承自Context,因為我們的HelloAndroid專案繼承自Activity,所以也是一個Context,所以用來當作TextView的建構參數。

在建構好TextView之後,就是要設定它要顯示的文字,使用setText屬性,如下所述的程式碼:
tv.setText("Hello,Android!");

這時,我們既然已經建構了TextView並且設定好它要顯示那些文字屬性,最後一個步驟就是將TextView物件顯示在螢幕上,如下所述的程式碼:
setContentView(tv);

Activity的setContentView()指令,是讓Android系統應當將View關聯到Android的介面,如果Activity不使用這個方法,除了空白螢幕外,就什麼也不會顯示出來,而我們的目的就是要顯示出文字,所以將剛建立的TextView物件關聯到Android的介面。

這就是建構好一個TextView物件,並且設定好相關屬性的方式,接下來下一個章節就是要執行專案了。

2009年7月24日 星期五

深入淺出Android程式設計(23)-如何建立專案,以「Hello,Android!」專案說明

很抱歉,之前公司比較忙碌。所以,預計八月份會陸續更新文章。而且,會以Android 1.5的版本來更新文章。

在之前的章節中,從如何安裝Android SDK、如何安裝Eclipse等開發工作,到如何在Eclipse平台上建立Android專案並設定載入配置、如何執行程式、如何進行除錯程式的動作。
但是,都是分別來說明,沒有將這些步驟連接起來。所以,從這個章節開始,會以一個簡單的「Hello,Android!」專案,來將所有步驟連接起來講解,也會將程式結構內一些重要的屬性、方法來加以描述。

「Hello,Android!」專案,主要的功能,只有在模擬器上顯示「Hello,Android!」等字串的作用,也許會覺得很簡單,但是,卻可以讓讀者了解Android的基本程式架構,為後續更複雜的範例專案打下基礎。
主要的操作步驟及內容說明,如下所述:
A. 如何建立專案
B. 如何建立介面
C. 執行程式碼

後續再說明比較詳細的說明:
D. 如何將介面升級到XML方式來排版
E. 如何進行專案除錯
F. 如何用非Eclipse平台來建立專案


如何建立專案

要建立一個專案再簡單不過了,在Eclipse平台,使用ADT外掛讓Android開發在一瞬間就可以建立了,相關的安裝,請參考之前的章節。下述為建立專案的步驟:

1.進入Eclipse平台,選取選單「File」中的「New」選項,再選取「Project...」選項,進入開啟新專案的視窗,如圖63所示。


圖63

進入開啟新專案的視窗,如圖63所示。在專案類別中,選取「Android」裡面的「Android Project」,然後按下「Next」按鈕,進行下一個步驟。

2. 填入Android專案所需要的明細資料,如下所述:
在建立新專案的視窗填入這個專案的相關細節,所屬欄位意義:
輸入欄位意義如下:
欄位名稱
欄位描述
Project Name
專案名稱,包含這個專案的檔案夾或是目錄的名稱。
Package Name
套件名稱,Java的習慣是用套件名稱來區分不同的類別(class),依照專案的不同,會起不同的路徑名稱。
Activity Name
這個專案的主要類別的名稱,這個類別是一個Android的Activity類別的子類別。一個Activity類別是一個簡單的啟動程式和控制程式的類別。它可以根據需要建立介面。
Application Name
顯示在應用程式上的標題名稱。

要輸入的欄位值如下:
欄位名稱
欄位輸入值
Prjoect Name
HelloAndroid
Package Name
com.android.hello
Activity Name
HelloAndroid
Application Name
Hello,Android

圖64

3. 當按下「Finish」按鈕後,Eclipse ADT就會自動產生的樣版程式HelloAndroid.java,內容如下所述:

public class HelloAndroid extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
}
}

再下一個章節,再來修改程式碼,來顯示字串「Hello,Android!」。

參考資料:
Android SDK Document http://code.google.com/android/documentation.html

2008年11月14日 星期五

深入淺出Android程式設計(22)-在Eclipse開發上的提示

在這個章節要來介紹有關在Eclipse開發上的提示。

在Eclipse除錯模式下執行任意Java表達語法
開發人員可以在Eclipse設定中斷點,當中斷時可以執行、測試任何程式碼或變數,例如:在某一個函式中,有一個字串參數叫做「zip」,開發人員想要知知道是屬於那個套件的資訊並叫用類別方法,也可以叫用任何靜態方法,例如鍵入android.os.Debug.startMethodTracing(),將會啟動dmTrace。

在中斷程式時,選取選單「Window」中的「Show View」選項裡面的Display視窗,來顯示要觀察的參數或變數。如圖59、圖60所示。


圖59


圖60

程式語法執行於中斷點(或Single-stop)相同的執行緒(如果要手動中斷執行緒,就必須要單步執行程式碼(按「F6」功能鍵)。

如果現在停在中斷點,開發人員可以選取要觀察的參數或變數,按組合鍵CTRL + SHIFT + D執行。就會出現目前變數的值,如圖61所示。再按組合鍵CTRL + SHIFT + D,就會將變數值顯示在Display視窗。如圖62所示。


圖61


圖62

開發人員可以使用組合鍵ALT +SHIFT + ↑選取更大範圍的大括號區塊或是使用組合鍵ALT +SHIFT + ↓選取更小範圍的大括號區塊

下面是一些使用Eclipse Display視窗輸入與回應的範例
輸入:Zip 回應:(java.lang.String)
/work/device/out/linux-x86-debug/android/app/android_sdk.zip

輸入:zip.endsWith(“.zip”) 回應:(boolean) true
輸入:zip.endsWith(“.jar”) 回應:(boolean) false

手動執行DDMS
雖然建議使用ADT外掛,但是,也可以手動啟動DDMS,然後設定Eclipse於8700埠位來除錯(要先執行DDMS,有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/ddms.html )

深入淺出Android程式設計(21)-有關建置、安裝及移除Android應用程式的建議

在這個章節要來說明有關建置、安裝及移除Android應用程式的建議。

Android SDK需要用自訂的建置工具正確地建置出資源檔與Android程式的其它部分(例如:程式樣版等),所以開發人員必須為應用程式指定一個建立的環境。

而特定的Android編譯步驟包含編譯XML與其它資源檔,並產出正確的格式。編譯完成的Android程式為一個.apk檔案,是一個壓縮了.dex檔案、資源檔、資料檔與其它相關檔案。開發人員可以從無到有、或是從現有的檔案建立正確的Android專案結構。

Android目前尚未支援第三方使用原生語言(C/C++)來開發程式。

所以,目前最佳的開發方式還是建議在Eclipse平台上開發Android應用程式,這種方式提供建立、執行與除錯Android程式的整合式開發環境。

如果要使用其它IDE開發介面,則Android提供其它IDE開發工具建立與除錯Android程式,但是它們尚未加以整合在一起,所以,再使用時,可能要分成建立專案、撰寫程式碼、執行與除錯都要分開來進行。

移除Android應用程式的方式

要移除安裝在模擬器上的程式,必須執行adb刪除送往模擬器並安裝的.apk檔案,有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/adb.html ,使用「adb shell」進入模擬器裝置的Shell,移到data/app/,用「rm 應用程式.apk」移除檔案。

2008年11月4日 星期二

深入淺出Android程式設計(20)-有關在除錯時的提示



在這個章節要來說明有關在進行應用程式除錯時的有那些有用的提示。如下文所述:

A.Quick stack dump(快速堆疊轉儲)
如何從模擬器中取得堆疊轉儲的資訊,開發人員可以在進入Dos視窗,在Android SDK安裝目錄底下的tools目錄底下執行「adb shell」登錄,用「ps」找到應用程式的行程,然後下「kill-3」,則堆疊追蹤會出現在log檔案,有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/adb.html#shellcommands

B.在模擬器螢幕顯示有用資訊
在模擬器裝置可以顯示有用的資訊,例如:顯示CPU使用率或是顯示螢幕更新,開啟或關閉這些開發設定,請參考之前的章節「如何除錯及測試模擬裝置的設定」。

C.取得模擬器系統狀態資訊(dumstate)
開發人員可從Dalvik Debug Monitor Service 工具存取系統資訊,請參考adb主題頁的dumpsys and dumpstate,有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/adb.html#dumpsys
上述網址,所述的動作,主要是啟動Dalvik Debug Monitor Server (DDMS)工具,在Android SDK安裝目錄底下的tools目錄的ddms.bat批次檔。
進入DDMS視窗後,先選取「Device」選單,就會出現下拉選單,再點選「Dump device state…」選項,開發人員可以取得模擬器系統狀態資訊,如圖57所示。

D. 取得模擬器程式狀態資訊(dumsys)
開發人員可從Dalvik Debug Monitor Service 工具存取程式資訊,請參考adb主題頁的dumpsys and dumpstate,有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/adb.html#dumpsys
上述網址,所述的動作,主要是啟動Dalvik Debug Monitor Server (DDMS)工具,在Android SDK安裝目錄底下的tools目錄的ddms.bat批次檔。
進入DDMS視窗後,先選取「Device」選單,就會出現下拉選單,再點選「Run logcat…」選項,開發人員可以取得模擬器系統狀態資訊,如圖57所示。

E.Getting wireless connectivity information(取得無線連接資訊):
首先,啟動Dalvik Debug Monitor Server (DDMS)工具,在Android SDK安裝目錄底下的tools目錄的ddms.bat批次檔。
進入DDMS視窗後,先選取「Device」選單,就會出現下拉選單,再點選「Dump radio state」選項,開發人員可以取得無線連接資訊,如圖57所示。



圖57

F.記錄追蹤資料
在Activity內叫用android.os.Debug.startMethodTracing()記錄追蹤資料,請參考Running the Traceview Debugging Program,有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/traceview.html

G.記錄無線資料
原則上系統不會記錄無線連接的資料,但是開發人員可以在Dos視窗使用以下命令來記錄無線資料:
adb shell
logcat -b radio

H.執行adb
Android SDK提供一款工具叫做adb,提供不同功能,包含了模擬器上的檔案同步與移動、傳送埠與在模擬器上執行一個UNIX Shell,請參考Using adb,有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/adb.html

I.捕捉模擬器螢幕
首先,啟動Dalvik Debug Monitor Server (DDMS)工具,在Android SDK安裝目錄底下的tools目錄的ddms.bat批次檔。
進入DDMS視窗後,先選取「Device」選單,就會出現下拉選單,再點選「Screen capture…」選項,就可以捕捉模擬器螢幕的資訊,如圖58所示。



圖58

J.使用除錯輔助類別
Android SDK有提供二種除錯輔助類別,來協助開發人員進行除錯工作,可以讓開發人員,事半功倍。
例如:util.Log類別,有關此類別在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/android/util/Log.html
以及Debug類別,有關此類別在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/android/os/Debug.html,供您使用

深入淺出Android程式設計(19)-如何除錯及測試模擬裝置的設定


在這個章節要來說明如何利用Android SDK內建的模擬器來進行程式的除錯方面的設定。

在Android SDK有幾個簡單設定讓程式更容易進行測試與除錯,首先,在Dos命令視窗執行Android SDK安裝目錄底下的tools目錄底下的模擬器執行檔emulator.exe,進入模擬器時,要先按下「MENU」按鈕來解除模擬器的Locked,回到Home預設畫面。如圖51所示。


圖51

在模擬器的Home畫面,按下開啟系統選單的按鈕,如圖52所示。選取「DevTools」選項,如圖53所示。


圖52


圖53

進入「DevTools」選項,再選取「Development Settings」設定選單,如圖54所示,就會開啟開發設定畫面,再設定下述明細開發除錯選項:


圖54

● 在Debug app選項中,是要選擇要除錯的應用程式是那一個程序,點選下方「(none)」的按鈕,就會顯示目前在執行的程序,請選取您要除錯的應用程式的程序名稱即是「Package Name(套件名稱)」即可,如圖55所示。這個選項不是除錯相關的選項,但是設定這個值,可以有兩個作用:
○ 讓Android SDK除錯時,如果在中斷點暫停太久時,不致於會拋出錯誤訊息。
○ 讓開發人員可以選擇阻斷程式啟動,直到開發人員的除錯機制加入時,相關描述可以參考下一個選項說明。


圖55

● Wait for debugger(阻斷程式啟動)選項:阻斷所選程式載入,直到開發人員的除錯機制加入,這樣開發人員就可以在OnCreate()事件設定中斷,這對於要除錯Activity啟動過程是很重要的。
在執行中的程式,若是變更除錯選項,則會導致系統關閉目前所有該執行的程式,要啟用這個選項,必須要先使用上一段所提的Debug app選項或是在應用程式的程式碼加入Wait for debugger(),也可以阻斷程式啟動。如圖55所示。

● Immediately destroy activities(立即銷毀activities)選項:當activity動作停止時,就要立即銷毀activity(例如:Android必須回收記憶體時)。這對於在測試onFreeze()或onCreate()事件時是很有作用的,否則會非常困難加以強制。如果應用程式的程序沒有儲存起來的話,選用這個選項可能會引起一些問題。如圖56所示。

● Show screen updates(顯示螢幕更新)選項:在螢幕任何區塊被重繪時,閃現一個短暫的粉紅色矩形,來找出不必要的螢幕繪製時是很用的選項。如圖56所示。

● Show CPU usage(顯示中央處理器使用率)選項:在螢幕上層顯示CPU的使用率,上方的紅色棒顯示全部的CPU使用率,下方的綠色棒則顯示組成這個畫面花了多少CPU時間。如圖56所示。

備註:一旦開啟這個選項,要重新啟動模擬器才能關閉顯示。

● Show background(顯示背景)選項:當沒有Activity螢幕時,就會顯示背景模式,實際上,一般是不會出現這種情況,除非是正在除錯時才有可能會出現。如圖56所示。

設定這個選項,要注意的是在模擬器重新啟動之後仍然有效果,如果要取消設定的選項,在取消設定後要重新啟動模擬器,才會生效。


圖56

深入淺出Android程式設計(18)-如何除錯

在這個章節要來說明如何利用工具來進行程式的除錯,在Android SDK有大量的工具來幫助程式進行除錯,目前有下述工具可以進行程式上的除錯。

A.DDMS工具-圖形介面程式支援埠位傳送(如此要在IDE開發工具設定程式中斷點),模擬器的螢幕擷取,執行緒與堆疊資訊,以及其它功能,也可以執行Logcat取得Log資訊,有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/ddms.html

B.Logcat工具–轉儲系統訊息log,訊息包含模擬器發生錯誤時的堆疊追蹤,和Log訊息,有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/ddms.html#logcat

產生出來的訊息,如下述訊範例:
I/MemoryDealer( 763): MemoryDealer (this=0x54bda0): Creating 2621440
bytes heap at 0x438db000
I/Logger( 1858): getView() requesting item number 0
I/Logger( 1858): getView() requesting item number 1
I/Logger( 1858): getView() requesting item number 2
D/ActivityManager( 763): Stopping: HistoryRecord{409dbb20
com.google.android.home.AllApps}

C. Android的Log類別–在Android SDK有提供一個log類別可以在模擬器上將Log訊息輸出到檔案,如果執行Logcat工具,那可以及時讀取訊息。在撰寫程式碼加入少量的log方法叫用:
使用Log類別,要依訊息需求狀況來使用,可以應用的方式如下所述:
Log.v() (verbose等級)
Log.d() (debug等級)
Log.i() (information等級)
Log.w() (warning等級)
Log.e() (error等級)
等方法,如何使用此類別,如下述範例:
Log.i("MyActivity", "MyClass.getView() — Requesting item number " +position)

有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/android/util/Log.html

D.TraceView工具–可以使用TraceView這個圖形化介面讀取器來讀取Android所儲存檔案的log檔案,有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/traceview.html

E. 在Eclipse使用ADT外掛–Eclipse的ADT外掛包含一些整合好的除錯工具(例如:ADB,DDMS,Logcat輸出與其它功能)。下述為在ADT外掛時,如何簡單的進行除錯:

一、在專案的程式碼列的左邊設定程式中斷點(Toggle Breakpoint),先選取一段程式碼,在程式碼列的左邊的地方,按下滑鼠右鍵,就會出現選單,選取「Toggle Breakpoint」選項,那在程式碼列的左邊的地方就會出現一個中斷點的符號,如圖47所示。


圖47

二、下一步,選取選單「Run」中的選取「Debug」選項,來除錯應用程式。如圖48所示。


圖48

三、在Debug模式下,進行除錯時,就會出現整合時的DDMS視窗及LogCat視窗,如圖49、圖50所示。

圖49


圖50

F. 除錯與測試裝置設定-Android SDK也有提供多種重要訊息的設定,例如:中央處理器使用率與顯示頻率,可以參考下一章節的說明。

2008年11月1日 星期六

深入淺出Android程式設計(17)-如何在其他IDE或工具開發Android應用程式(下)

在上一個章節,將在Dos命令列利用activityCreator.bat建立Android專案,再利用ant來建置Android應用程式,在這個章節要來繼續說明如果執行Android應用程式。

執行Android應用程式
要執行編譯好Android應用程式,可以依照以下的步驟,來用Android SDK 安裝目錄底下的tools目錄中執行adb.exe執行檔工具將上一個章節產生的.apk檔案上載到手機模擬器的/data/app目錄。

A. 在Dos命令視窗執行Android SDK 安裝目錄底下的tools目錄底下的手機模擬器執行檔emulator.exe。如圖46所示。進入模擬器時,要先按下「MENU」按鈕來解除模擬器的Locked,回到Home預設畫面。



圖46

B. 在模擬器內,回到home螢幕(最好不要在應用程式執行時重新安裝應用程式,按Home按鍵離開應用程式)。
C. 執行 adb install專案目錄底下/bin/應用程式安裝.apk檔案,上載可執行檔。例如,安裝Lunar Lander範例,在命令列上切換到 <您的SDK目錄>/sample/LunarLander後鍵入../../tools/adb install bin/LunarLander.apk
D. 在模擬器內,開啟可執行程式,捲動並選擇程式啟動

備註:安裝好Activity後,最好重新啟動模擬器,因為套件管理員只會在模擬器啟動時完整檢核AndroidManifest.xml(Android程式的功能清單)。

下一步,要為Android應用程式加入除錯器,方便進行除錯。這一段說明如何在螢幕上顯示除錯資訊(如中央處理器使用率),和如何讓IDE除錯模擬器的應用程式。
使用Eclipse外掛會自動加入除錯器,但也可以設定其它的IDE來取得除錯資訊。請用以下步驟來進行除錯:

A. 啟動Dalvik Debug Monitor Server (DDMS)工具,在Android SDK 安裝目錄底下的tools目錄的ddms.bat批次檔,提供IDE開發工具與模擬器間的埠位(Port)之間的傳送服務。
B. 在模擬器設定除錯選項,如阻斷程式啟動直到除錯器加入,請注意,很多除錯選項並非需要DDMS才能使用,如顯示中央處理器使用率或是模擬器的螢幕的更新頻率。
C. 設定IDE開發工具聆聽除錯埠位到8700,相關資訊可以參考下一個章節說明。

設定IDE開發工具聆聽除錯埠位
DDMS會為模擬器上的每一個虛擬機器指定特定的除錯埠,必須設定IDE開發工具取得該埠位或是連上預設的8700埠位。
執行中的程式,若是變更除錯選項或是「Wait for debugger(阻斷程式啟動)」選項,會導致系統關閉目前執行的程式。


深入淺出Android程式設計(16)-如何在其他IDE或工具開發Android應用程式(中)

在上一個章節,在Dos命令列利用activityCreator.bat建立Android專案,所要用的一些檔案。在這個章節中,來介紹如何建置Android應用程式。

建置Android應用程式
在上一個章節,使用activityCreator建立的ant 建置檔案(build.xml)來建置Android應用程式。請用以下步驟建置Android應用程式:

A. 如果系統沒有安裝Ant,可以從Apache Ant(http://ant.apache.org/ )的網頁下載,安裝並確定它在您的執行路徑上。
B. 使用Ant前,要先需要宣告JAVA_HOME環境變數指定到JDK的安裝路徑。請參考之前的章節來設定環境變數。

備註:在Windows安裝JDK預設路徑會裝到"Program Files"目錄下,因為中間有空白的關係,會導致Ant失敗,修正這個問題的方式就是指定JAVA_HOME環境變數,例如:Set JAVA_HOME=c:\Progra~1\Java. 更簡單的方法則是將JDK安裝到沒有空白的路徑如:c:\java\jdk1.6.02

C. 如果尚未完成,請照上述建立新專案的方式設定專案。
D. 您現在可以在build.xml同在的目錄下鍵入ant指令執行建置,每次改變程式碼或是資源檔,您應該重新執行ant以打包最新的發佈檔案。

在Eclipse平台,已經有內建ant。相關的用法,後續的章節會陸續介紹。有興趣的讀者可以參考下述網址資訊:
http://ysl-paradise.blogspot.com/2008/09/eclipse-ant-android.html

深入淺出Android程式設計(15)-如何在其他IDE或工具開發Android應用程式(上)

在這個章節中,來介紹如何在其他IDE或工具用開發Android應用程式。

在開發工作上,雖然推薦以Eclipse平台加上Android外掛來開發應用程式(也同時整合了程式編輯、建置與除錯功能),但是,Android SDK還是提供工具讓其它IDE(包括intelliJ)來開發應用程式。

建立Android專案
在Android SDK包含一個activityCreator程式,這個程式可以為Android專案建立一些樣板程式與建置檔,也可以用該程式建立新專案或為已有的程式碼建立專案(如Android SDK內附的範例程式)。

這個程式在Linux與Mac系統,檔案名稱叫做activityCreator,Python則是activityCreator.py,Windows系統則是用activityCreator.bat批次檔,不管是那個平台,都可直接使用activityCreator來執行建立Android專案。

用以下步驟執行activityCreator建立專案(以Windows平台為例):
1.在Windows系統上,執行Dos命令視窗,先變更切換到Android SDK安裝目錄底下的tools目錄,並為專案建立一個新目錄;如果要為已經存在的程式碼建立專案,請變更目錄到應用程式的目錄。
2. 在Dos命令視窗執行activityCreator,必須指定完整的類別名稱做為參數,如果是新建專案,則會以完整的類別名稱建立樣板程式碼;如果是從已存在的程式碼建立專案,則必須指定套件內的Activity類別名稱。

命令列參數還包括:
--out <目錄>:要設定輸出目錄,預設是現在所在的目錄,如果您要將專案檔案放在其它目錄,請用這個參數來指定。
--ide intellij:在建立專案時產生 intellij相關檔案。
Project Name:專案名稱
Package Name:套件名稱
Activity Name:Activity名稱

範例如下:
~/android_linux_sdk/tools $ ./activityCreator.py --out myproject your.package.name.ActivityName
package: your.package.name
out_dir: myproject
activity_name: ActivityName
~/android_linux_sdk/tools $


在Windows系統上,執行Dos命令視窗。執行如圖44所示的命令:
activitycreator -out HelloAndroid com.android.HelloAndroid

圖44

activityCreator批次檔,會建立以下的檔案與目錄,如圖45所示(但是不會覆蓋已經存在的程式):
1. bin/ ant建置檔案的輸出路徑。
2. libs/ Android libs。
3. res/ 資源檔案目錄。
3.1 layout:版面配置目錄,以XML格式顯示。
3.2 values:參數值目錄,記錄所有使用XML格式的參數值。
4.src/ 原始碼目錄,包含所有Android應用程式中的原始程式碼。
5.AndroidManifest.xml:Android程式的功能清單。
6. build.xml:ant 建置檔案,可以建置/安裝程式。

現在可以帶著建立好的目錄到處開發了,但是不要忘了,使用tools目錄內的adb程式把檔案送給模擬器。但是,應當避免移動Android SDK所在的目錄,因為這會破壞建立檔案的設定。

圖45

深入淺出Android程式設計(14)-如何在Eclipse上開發Android應用程式(下)

在這個章節中,接續上一個章節,來介紹如何進行應用程式的執行與除錯工作。

當依照之前的章節將應用程式設定好專案與載入配置,就可以依下述步驟來進行應用程式執行與除錯:

在進入Eclipse平台,選取選單「Run」中的「Run」選項或是選取「Debug」選項,來執行或除錯應用程式。如圖43所示。


圖43

若要修改或設定有效的載入配置,請依上一個章節的描述來設定。

執行或除錯應用程式會觸發以下動作:
A. 模擬器如尚未執行則啟動模擬器,並執行應用程式。
B. 如果程式建置完成,但是,又有過修改,則會重新編譯專案,並將程式安裝到模擬器。
C. 執行時,如果啟動程式除錯,則將程式啟動為"Wait for debugger"模式,並開啟Eclipse平台的除錯檢視功能。

在這個章節中,陸續介面了有關Android專案在Eclipse平台上操作步驟。接下來要介紹的是如果沒有Eclipse這樣的IDE操作介面是不是也可以像Java或C語言那樣,用純手工的方式來寫程式碼,在Dos視窗來執行呢?


答案是可以的,Android SDK有提供一些工具來使用,例如:執行一些批次檔來建立專案、執行模擬器等工作。


後續也會開始介紹一些簡單的範例程式,來了解程式是如何執行的。


深入淺出Android程式設計(13)-如何在Eclipse上開發Android應用程式(中)

在這個章節中,接續上一個章節,來介紹如何建立載入配置的工作。

建立載入配置
當建立好新的專案後,必須再建立載入配置以便能讓Eclipse執行與除錯應用程式,載入配置指定專案載入、啟動Activit,使用模擬器選項等作業。

請依下述步驟建立載入配置:

1. 在進入Eclipse平台,選取選單「Run」中的「Run Configurations…」選項或是選取「Debug Configurations…」選項。如圖38所示。


圖38

2. 進入Run Configurations視窗,選取左邊的專案型態為「Android Application」的項目,按下滑鼠右鍵,選取「New」選項,建立新的配置設定,預設會依目前的專案,自動建立所屬的配置設定。如圖39所示。


圖39

3. 在新的配置設定視窗,在「Name」欄位上輸入這個應用程式的配置名稱。如圖40所示。
4. 在新的配置設定視窗,切換到「Android」頁標籤,點選「Browse...」來選擇所屬的專案與設定Launch Action,讓Eclipse了解目前要執行那個專案。如圖40所示。


圖40

5.在新的配置設定視窗,切換到「Target」頁標籤,設定所屬專案想要執行的螢幕格式(Screen Size)與網路屬性(Network options),和其它的模擬器啟動選項。如圖41所示。一些細部的設定,可以參考下述網址:http://code.google.com/android/reference/emulator.html#skins

圖41

6.在新的配置設定視窗,切換到「Common」頁標籤,設定其它想要的選項,如圖42所示。
7. 最後,按下「apply」按鈕,來儲存載入配置或是酌情按Run或Debug選項。


圖42

設定好專案的配置後,就可以進行執行或除錯的動作。

深入淺出Android程式設計(12)-如何在Eclipse上開發Android應用程式(上)

在Eclipse平台上開發Android應用程式,首先要建立Android專案並設定載入配置,再來可以撰寫程式碼、執行程式與如果有錯誤再進行除錯程式的動作。

在進行本章節時,是假設您已安裝好Eclipse相關的執行環境,如果您還未安裝Eclipse開發環境,請參考之前的章節。

建立Android專案
Eclipse的ADT外掛有提供專案精靈,讓我們可以快速為已經存在的程式碼或是建立全新的專案,請依下述步驟建立Android專案:

1. 在進入Eclipse平台,選取選單「File」中的「New」選項,再選取「Project...」選項,進入開啟新專案的視窗。如圖34所示。


圖34

2. 進入開啟新專案的視窗,如圖35所示。在專案類別中,選取「Android」裡面的「Android Project」,然後按下「Next」按鈕,進行下一個步驟。


圖35

3. 在這個步驟中,主要為Android專案選擇是要新建立專案或是開啟已存在的程式碼而建立專案,如圖36所示。
A. 選擇Create new project in workspace:
建立新的專案,要輸入Project name(專案名稱)、屬性方面也要設定Package name(套件名稱)、Application name(應用程式名稱)與Activity name(主要類別的名稱),來建立專案樣板的.java檔案。相關說明,會在後續的節章提出。

B. 選擇Create project from existing source:
為已存在的程式碼建立專案,可以使用這個選項來執行Android SDK所附的範例程式,這些程式放在Android SDK的安裝路徑底下的samples目錄。按下「Browse…」按鈕來瀏覽已存在的程式碼。

4. 按下「Finish」按鈕,完成專案的建立。


圖36

依上述的專案設定,ADT(Android Development Tools)外掛會為建立下述的目錄與檔案,如圖37所示:
1. src/原始碼目錄,包含所有Android應用程式中的原始程式碼。
2. res/資源檔案目錄。
A. drawable:儲存靜態的圖片目錄,在程式使用到的.png、.gif、.jpg等格式的檔案,都會放在這個目錄中。
B. layout:版面配置目錄,以XML格式顯示。
C. values:參數值目錄,記錄所有使用XML格式的參數值。
3. AndroidManifest.xml:Android程式的功能清單。


圖37

2008年10月31日 星期五

深入淺出Android程式設計(11)-如何進行Android的開發與除錯

在之前發佈了一列系的深入淺出Android程式設計中,從Android的架構、如何安裝相關軟體、安裝時的操作步驟。相信讀書已經可以進行基本的程式設計了。

後續將開始介紹如何在Eclipse上或是利用Android SDK來設計、除錯程式。預計大概章節如下所述:
A. 如何在Eclipse上開發Android應用程式
B. 如何在其他IDE或工具開發Android應用程式
C. 如何數位簽署應用程式
D. 如何使用ApiDemos範例應用程式
E. 如何除錯
F. 如何除錯及測試模擬裝置設定
G. 有關在除錯時的提示
H. 如何建置與安裝Android應用程式
I. 如何移除Android應用程式
J. 在Eclipse開發上的提示

接下來,將從基本的一個Hello Android程式專案,來了解一個Android程式如何在Eclipse平台開發的開始到結束。會自動建立那些檔案及檔案的程式結構如何等章節。

A. 如何建立專案
B. 如何建立介面
C. 執行程式碼

D. 如何將介面升級到以XML方式來排版
E. 如何進行專案除錯
F. 如何以Eclipse建立專案

最後,再介紹一個設計Android介面的小工具DroidDraw(參考網址如下:
http://www.droiddraw.org/ ),方便設計出好用的Android介面。也會提到如何將Eclipse開發平台中文化...等小技巧。