天天看點

《OpenGL ES 3.x遊戲開發(上卷)》一1.3 Hello Android應用程式的開發

本節書摘來異步社群《opengl es 3.x遊戲開發(上卷)》一書中的第1章,第1.3節,作者: 吳亞峰 責編: 張濤,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

本節首先将介紹如何在eclipse中建立一個基于android的hello world應用程式,之後将簡單介紹android應用程式的調試,為讀者以後學習進階開發鋪平道路。

本小節将向讀者介紹如何在eclipse中建立一個基于android的hello world應用程式,基本步驟如下所列。

(1)單擊eclipse.exe,啟動eclipse,依次選擇“file/new/ android application project”,如圖1-43所示。或者單擊按鈕後,系統将彈出建立項目對話框,如圖1-44所示。

《OpenGL ES 3.x遊戲開發(上卷)》一1.3 Hello Android應用程式的開發

(2)在建立項目對話框中選擇“android/android application project”,如圖1-45所示,然後單擊“next”按鈕,執行下一步,即彈出new android application對話框,如圖1-46所示。

(3)在new android application對話框中輸入應用程式的名稱(在這裡輸入的是sample_1_1),然後在project name中輸入項目名稱(這裡輸入的名稱與application name中的相同,當然也可以不同),同時在package name中輸入應用程式的包名(這裡輸入的是wyf.ytl),如圖1-46所示。

(4)接着在minimum required sdk中選擇應用程式最低版本(這裡選擇的是android 2.2版本),最後在target sdk中選擇應用程式的目标版本,都填完後,整體情況如圖1-46所示。

《OpenGL ES 3.x遊戲開發(上卷)》一1.3 Hello Android應用程式的開發
提示 建立項目輸入項目包名時,需要至少使用二級包名,否則在該對話框上會顯示“package name must have at least two identifiers.”的出錯資訊。

(5)單擊“next”按鈕後進入如圖1-47所示的界面,根據需要勾選是否建立自定義圖示,勾選“create activity”,根據需要也可更改預設的項目路徑,最後單擊“next”按鈕執行下一步。接着在如圖1-48所示的界面中選擇activity樣式,此處選擇的是“blank activity”,單擊“next”按鈕執行下一步。

(6)在如圖1-49所示的界面中輸入activity name——hello android和layout name——main,單擊“finish”按鈕完成項目的建立。此時在eclipse的project explorer界面中會自動添加建立的項目sample_1_1,其目錄結構如圖1-50所示。

《OpenGL ES 3.x遊戲開發(上卷)》一1.3 Hello Android應用程式的開發
《OpenGL ES 3.x遊戲開發(上卷)》一1.3 Hello Android應用程式的開發

(7)在項目名上單擊滑鼠右鍵,在彈出的菜單中然後依次選擇“run as/android application”,如圖1-51所示。即可運作剛剛建立的helloandroid項目,該項目在模拟器上的運作效果如圖1-52所示。

《OpenGL ES 3.x遊戲開發(上卷)》一1.3 Hello Android應用程式的開發

從上述步驟中可以看出,使用eclipse建立并運作一個android應用程式是非常簡便的。

上一小節介紹了如何通過android sdk自動生成android項目,但是沒有對該項目中的内容及組成進行介紹。本小節将對android項目中的各重要組成部分逐一進行介紹,具體情況如圖1-53所示。

《OpenGL ES 3.x遊戲開發(上卷)》一1.3 Hello Android應用程式的開發

1.src源代碼檔案夾

該檔案夾下存放了應用程式中所有開發的java源代碼。要注意的是,在更為複雜的項目中,該檔案夾下可以有很多不同的包用于存放不同功能目的的源代碼。

2.gen檔案夾

該檔案夾中存放的是eclipse中adt插件自動生成的r.java檔案。實際上r.java定義了一個r類,其中包含應用程式的使用者界面、圖像以及字元串等資源的編号。也就是每有一個資源執行個體,系統就為其在r類中生成一個相應的編号。這些編号都是系統自動生成的,使用者不應該修改。

3.assets檔案夾

該檔案夾用于存放應用程式需要使用的一些外部資源,如音頻、視訊、資料檔案等。在應用程式中可以使用“getresources().getassets().open("aa.mp3")”得到指定資源檔案的輸入流。

4.res資源檔案夾

該檔案夾下一般有drawable系列、layout及values 等檔案夾,下面對這些檔案夾逐一進行介紹。

drawable系列檔案夾。該系列檔案夾一般有drawable-hdpi、drawable-mdpi、drawable-ldpi 3個檔案夾,這3個檔案夾分别用來存放不同分辨率目标裝置的圖檔資源。當應用程式在目标裝置上運作時,系統會自動根據目标裝置的分辨率選擇使用對應檔案夾下的圖檔。

layout檔案夾。該檔案夾下包含了所有使用xml格式的界面描述檔案,這些檔案用于表述應用程式中使用者界面的布局。具體的開發中讀者會體會到,用這種方式進行布局的開發比傳統的使用java源代碼開釋出局要友善簡捷得多。

values檔案夾。本檔案夾中包含了一些xml格式的資源描述檔案,一般包括string.xml(字元串資源)、color.xml(顔色資源)、style.xml(樣式資源)等。

5.androidmanifest.xml檔案

此檔案是整個應用程式的描述檔案,應用程式中所需要的各個元件均需要在此檔案中說明。同時,應用程式需要的一些權限,如網絡通路權限、i/o讀取權限等,也需要在此檔案中進行聲明。

除了上述檔案夾及檔案外,還有一個一般開發時不需要直接使用的default.properties檔案。此檔案為項目的配置檔案,一般不需要人為改動,系統會自動對其進行管理,有興趣的讀者可以自行打開檢視。

android sdk提供了一個強大的調試工具ddms(dalvik debug monitor service),通過ddms可以調試并監控android程式的運作,更好地幫助開發人員完成軟體的調試和開發。接下來将會詳細介紹ddms的打開與使用的方法。

一般情況下在eclipse中安裝了adt插件後,eclipse視窗的右上側會有ddms的選項按鈕,如圖1-54所示。單擊此按鈕即可切換到ddms界面,如圖1-55所示。

《OpenGL ES 3.x遊戲開發(上卷)》一1.3 Hello Android應用程式的開發

有些時候,ddms選項按鈕是隐藏的,讀者可以通過eclipse視窗界面右上側的(open perstective)按鈕來打開ddms,如圖1-56所示。

《OpenGL ES 3.x遊戲開發(上卷)》一1.3 Hello Android應用程式的開發

從前面的介紹中可以看出,ddms的一大功能就是檢視程式運作時的背景輸出資訊。實際的應用程式開發中既可以使用傳統的system.out.println方法來列印輸出調試資訊,也可以使用android特有的android.util.log類來輸出調試資訊,這兩種方法的具體使用方式如下。

1.system.out.println方法

首先介紹java開發人員十分熟悉的system.out.println方法,其在android應用程式中的使用方法與傳統java中相同,具體步驟如下。

在這裡就不再建立新的android項目,直接使用上一小節已經建立的android項目(sample1_1)。

(1)首先在eclipse中打開src檔案夾下的com.bn.sample1_1包中的mainactivity.java檔案。

(2)然後在setcontentview(r.layout.activity_main)語句後面添加代碼system.out.println(“the first”)。

(3)代碼修改完成後,再次運作本應用程式。

(4)應用程式運作後打開ddms,找到logcat面闆,更改為debug界面,如圖1-57所示。

(5)在logcat面闆下的log頁籤中可以看到輸出的列印語句,如圖1-58所示。

《OpenGL ES 3.x遊戲開發(上卷)》一1.3 Hello Android應用程式的開發

有時可能覺得在log中的輸出資訊太多,不便于檢視。這時可以在logcat中添加一個專門輸出system.out資訊的面闆。單擊右邊區域的(create filter)按鈕,系統會彈出log filter對話框,在filter name輸入框中輸入過濾器名稱,在by log tag中輸入用于過濾的标志,如圖1-59所示。

由于輸出的語句主要有system.out.println(換行)、system.out.print(不換行)兩種,是以,設定by log tag中的内容為system.out用以進行過濾。

此時再次運作應用程式觀察輸出的情況,在logcat下的system面闆中将會隻存在system.out的輸出資訊,效果如圖1-60所示。

《OpenGL ES 3.x遊戲開發(上卷)》一1.3 Hello Android應用程式的開發

2.android.util.log類

除了java開發人員熟知的system.out.println方法外,android還專門提供了另外一個類android.util.log來進行調試資訊的輸出。下面将介紹log類的使用,具體步驟如下。

(1)在mainactivity.java中注釋掉前面已經添加的列印輸出語句“system.out.println(“the first”);”,然後在後面添加代碼“log.d(“log”, “the first log”);”。

(2)運作程式,在ddms中找到logcat面闆,切換到all messages頁面,觀看列印的内容,如圖1-61所示。

《OpenGL ES 3.x遊戲開發(上卷)》一1.3 Hello Android應用程式的開發
使用log類時需要使用“import android.util.log;”語句進行導入,使用 system.out.println方法或android.util.log類輸出調試資訊各有優缺點,讀者可以在開發項目時自行體會,選用自己所需要的方式。 同時需要注意的是,ddms還有很多強大的功能,這裡隻介紹了其最基本的用法,有興趣的讀者可以參考人民郵電出版社出版的《android應用案例開發大全(第3版)》一書的第1.4節“ddms的靈活應用”或參考其他技術資料。

由于模拟器在實際項目開發中不是很友善,性能較差,是以,實際開發中一般使用真機對開發的應用程式進行聯機調試。故本小節将介紹實際裝置聯機調試的方法,基本步驟如下。

(1)下載下傳與真機型号相比對的驅動程式(注意部分手機自帶驅動程式,無須下載下傳)。

(2)用資料線将手機和開發pc相連接配接。

(3)根據提示,在pc上安裝手機驅動程式。

(4)将手機設定為允許安裝未知來源軟體,并打開手機上的usb調試。這兩項設定一般都可以在手機設定選項下的應用程式項目中找到,根據手機具體型号和android作業系統版本的不同可能略有差別。若讀者的裝置與這裡介紹的不同可以參考其他資料或上網搜尋相關機型的設定說明。

(5)再次運作前面開發的應用程式,系統将彈出android device chooser視窗,如圖1-62所示。

(6)在視窗中選擇自己的裝置,然後單擊“ok”按鈕,程式将被送入到連接配接的真機上運作。

(7)再打開ddms,檢視左上角的devices視窗,視窗中列出了真機裝置,如圖1-63所示。

(8)選中真機裝置,logcat視窗就出現了真機調試的列印内容,這樣就可以在真機中進行聯機調試。

《OpenGL ES 3.x遊戲開發(上卷)》一1.3 Hello Android應用程式的開發

繼續閱讀