1. 程式人生 > >Libgdx Developer's Guide(Libgdx開發者手冊)-2(專案建立、執行和除錯)

Libgdx Developer's Guide(Libgdx開發者手冊)-2(專案建立、執行和除錯)

專案建立

由於它的Android 和HTML5/GWT後臺,libgdx 與Eclipse緊密結合。本章討論怎樣在Eclipse中建立一個libgdx專案。如果你使用的是IntelliJ, 請檢視guide to use libgdx with IntelliJ IDEA 。如果你更喜歡使用其他的IDE,請參考文章末尾列出的詳細說明。iOS專案的libgdx應用使用MonoTouch和設定UI生成的一個Ant指令碼進行管理。


使用 "Libgdx Setup"

在0.9.3版本中,Aurelien Ribon 引入了一個易用的應用叫做"Libgdx Setup"。下面的步驟將建立開發桌面,Android, iOS和HTML5所需的一切。

  1. 下載 gdx-setup-ui.jar,地址: http://libgdx.badlogicgames.com/nightlies/dist/gdx-setup-ui.jar. 該jar同樣包含於所有的穩定版本和每日構建版本中。
  2. 雙擊執行這個jar,或者從命令列執行: java -jar gdx-setup-ui.jar
    1. 指定專案配置 (配置面板)
    2. 指定libgdx穩定/每日構建版本的zip檔案,或者按下其中一個按鈕下載最新的版本(選擇庫面板) Use the nightlies if you want to deploy to iOS!
    3. 點選 "Generate projects" 按鈕(建立面板)
  3. 開啟Eclipse並匯入生成的工程到你的workspace
    1. File -> Import -> Existing Projects into Workspace
    2. 點選"Browse", 選擇包含生成專案的資料夾.
    3. 確保選中所有的工程, 點選"Finish"
    4. 修復 HTML5/GWT 的專案error, 開啟"Problems"檢視, 右鍵點選錯誤資訊 "The GWT SDK JAR gwt-servlet.jar is missing in the WEB-INF/lib directory" 並選擇 "Quick Fix". 點選"Finish".
  1. For the iOS Project, launch Xamarin Studio on Mac OS X and open the solution in the folder of the ios project. Build the application once, then reopen the solution.Please read this article for more information on the iOS backend!

專案佈局

假設在配置頁面把專案命名為 "my-gdx-game" ,結束後將包含4個工程:

  • Core project ("my-gdx-game"): 包含應用的所有程式碼,沒有所謂的啟動類。所有其他專案都連結至該工程。該工程通常被引用為"core project"。
  • Android project ("my-gdx-game-android"): 包含啟動類和其他在Android中執行應用所需的檔案。assets/ 資料夾儲存應用中所有平臺的資源。
  • Desktop project ("my-gdx-game-desktop"): 包含在桌面執行應用的啟動類。連結至Android工程的 assets/ 資料夾 和"core project"。
  • HTML5 project ("my-gdx-game-html"):包含以本地HTML5應用的方式執行應用的啟動類和其他所需檔案。連結至Android工程的 assets/ 資料夾(see gwt.xml) 和"core project"。
  • iOS project ("my-gdx-game-ios"): 包含以本地iOS應用的方式執行應用的啟動類和其他所需檔案。連結至Android工程的 assets/data 資料夾。包含一個Ant指令碼,該指令碼將在每次build前呼叫用以編譯"core project"的原始碼為.Net集(.dll file),這些.Net集最終被用來構建本地應用。Please read this article for more information on the iOS backend!

應用的所有資源都應該儲存在Android工程的 assets 資料夾中。桌面,iOS和HTML5工程連結至該資料夾,因而無需再次重複儲存這些資源。 

Note for iOS: Xamarin Studio will not automatically add files you put into your Android project's assets folder. You have to add those manually by right clicking the project and linking to the files. You then have to set the "Build Action" of each newly added file to "Content", otherwise the file will not be included in the final build output! Also, please read throughthis article You'll also have to manipulate a script that comes with the iOS SDK!

執行應用

  • Desktop: 右鍵桌面工程, Run As -> Java Application.選擇桌面啟動類 (e.g. Main.java).
  • Android: 確保你已經連線了一個裝置並且該裝置已顯示在DDMS中。如果你不清楚這是什麼意思, 請參考 Android Developer Guide. 右鍵 Android 工程, Run As -> Android Application.
  • iOS: In Xamarin Studio, select a release or debug profile (either simulator or device) then hit the build and run button.
  • HTML5:有兩種模式可以執行你的應用。
    1. development/hosted mode: 通過GWT外掛執行真正的Java程式碼,允許除錯和熱插拔程式碼(某種程度而言).
      1. 右鍵HTML5 工程, Run As -> Web Application.
      2. 在 "Web Development" 檢視中,單擊 URL.開啟 標準瀏覽器。如果你還沒安裝GWT外掛,系統會提示你安裝。安裝完外掛後,簡單地重新整理下瀏覽器。
    2. production/web mode: 需要一個web伺服器服務這些編譯好的檔案 (e.g. Ngnix 或允許從本地檔案執行javascript的瀏覽器 .
      1. 右鍵HTML5 工程, Google -> GWT Compile
      2. 一旦編譯完成,把war/ directory 下的內容放置到你的web伺服器的服務目錄下。忽略WEB-INF資料夾。
      3. 把瀏覽器指向一個顯示.html檔案的URL。

除錯應用

  • Desktop: 右鍵桌面工程, Debug As -> Java Application. 選擇桌面啟動類 (e.g. Main.java). 在需要的地方設定斷點,熱插拔程式碼(在除錯時編輯和儲存)以快速測試更改和重啟應用。
  • Android: 假設已連線了一個裝置, Debug As -> Android Application. 不支援熱插拔, 但可以使用 DDMS 檢視來檢視記憶體使用情況, to check your memory usage, 分析應用等等。參考 Android Development Guide 獲取更多資訊.
  • iOS: in Xamarin Studio, select a debug profile (either simulator or device) then hit the build and debug button.
  • HTML5:
    1. development/hosted mode: 通過GWT外掛執行真正的Java程式碼,允許除錯和熱插拔程式碼(某種程度而言).
      1. 右鍵HTML5 工程, Debug As -> Web Application.
      2. 在 "Web Development" 檢視中,單擊 URL.開啟標準瀏覽器。
      3. 在Java程式碼中設定斷點。如果編輯和儲存程式碼,你必須重新整理瀏覽器來使更改生效。這實質上會重啟應用。不過這總比重新編譯要快。
    2. production/web mode:
      1. 右鍵HTML5 工程, Google -> GWT Compile
      2. 更改 "Advanced"中的標記為 -strict -draftCompile ,並更改"Output Style" 為 "detailed". 這會生成非常可讀的Javascript, 可以1:1的匹配到你的程式碼。
      3. 一旦編譯完成,把war/ directory 下的內容放置到你的web伺服器的服務目錄下。忽略WEB-INF資料夾。
      4. 把瀏覽器指向一個顯示.html檔案的URL。
      5. 開啟 Firebug 或類似工具, 開啟Javascript並設定斷點, 觀察callstack等等. 查詢Java類方法,直接搜尋package/class/method 名。
手動設定專案

注意:目前iOS專案還不支援手動設定模式。最好是使用setup-ui來建立專案,然後拷貝覆蓋iOS專案資料夾至你的專案裡,並修改convert.properties檔案。

注意:目前Java 1.7 與Android結合有問題。請確保使用Java 1.6。

這部分講述怎樣配置Eclipse在桌面與Android中開發和執行libgdx應用。

建立主工程

  1. 建立一個新的Java工程: File -> New -> Project -> Java Project. 填寫工程名並點選完成.
  2. 在工程資料夾下建立一個子目錄並命名為libs。下載 nightly zip 並將 gdx.jargdx-sources.jar 放置在libs資料夾下.
  3. 在Eclipse裡, 右鍵 project -> Refresh. 再次右鍵 Properties -> Java Build Path -> Libraries -> Add JARs, 選擇gdx.jar 點選OK.
  4. gdx.jar 檔案下, 雙擊 "Source attachment", 單擊 Workspace, 選擇 gdx-sources.jar 並點選OK.
  5. 單擊 Order and Export 標籤, 選擇 gdx.jar and 點選 OK.

Note: 第 5 步建立了 gdx.jar 的一個可遞依賴。意思就是依賴於主工程的專案類路徑裡也將同時擁有gdx.jar。然而,這對於Android專案無效。

建立桌面工程

  1. 建立一個新的Java工程: File -> New -> Project -> Java Project. 填寫工程名(eg, "gamename-desktop")並點選完成. (eg, "gamename-desktop") .
  2. 在工程資料夾下建立一個子目錄並命名為libs。下載 nightly zip, 並將 gdx-natives.jar, gdx-backend-lwjgl.jar 和 gdx-backend-lwjgl-natives.jar 放置在libs資料夾下.
  3. 在Eclipse裡, 右鍵 project-> Refresh. Right click again -> Properties -> Java Build Path -> Libraries -> Add JARs, 選擇這三個JARS並點選 OK.
  4. 單擊 Projects 標籤, 單擊 Add, 選擇主工程並單擊OK.

建立Android工程

在進行前, 必須先安裝 Android SDK 

  1. 建立一個新的Java工程: File -> New -> Project -> Android Project. 填寫工程名 (eg, "gamename-android"). 構建目標選擇 "Android 1.5". 指定包名(eg, "com.gamename"). 下一頁 "Create Activity" 進入 "AndroidGame". 點選完成.
  2. 在工程資料夾下建立一個子目錄並命名為libs。 下載 nightly zip, 並將 gdx-backend-android.jar 和  armeabiarmeabi-v7a 資料夾放置在libs資料夾下.
  3. 在Eclipse裡, 右鍵 project -> Refresh. Right click again -> Properties -> Java Build Path -> Libraries -> Add JARs, 選擇 gdx-backend-android.jar 點選 OK.
  4. 再次單擊 Add JARs , 選擇主工程下的 gdx.jar 並點選OK.
  5. 單擊 Projects 標籤, 點選Add, 選擇主工程並點選兩次 OK .
  6. 單擊 Order and Export 標籤, 選擇主工程.

注意:該資料夾必須命名為"libs',這是Android Eclipse外掛的命名慣例。

設定 Asset 資料夾

Android 工程有一個自動建立的名為 assets的子資料夾。Android應用可見的檔案都必須旋轉在該資料夾下。這是有問題的,因為這些檔案同時也必須對桌面應用可見。不必手動拷貝兩份檔案,桌面應用可以配置在Android工程的assets目錄下查詢檔案:

  1. 點選 Source 標籤, 點選Link Source, Browse, 從Android工程中選擇 "assets" 資料夾並點選 OK.
  2. 指定資料夾名為 "assets" 並完成,然後點選OK.

注意: 如果你的桌面和Android應用在同一個父目錄下, 你可以使用 "PARENT-1-PROJECT_LOC/gamename-android/assets" 作為 assets資料夾連結的地址,其中 "gamename-android" 是你的Android工程名。如果你打算共享你的工程,那這比硬編碼路徑要好的多。


建立一個遊戲

在主工程裡,建立一個新類: 右鍵工程-> New -> Class. 命名為"Game" 並指定一個包 (eg, "com.gamename"). 下一步Interfaces, 點選 Add, 選擇 ApplicationListener, 並點選OK. 新建的類為:

import com.badlogic.gdx.ApplicationListener;

public class Game implements ApplicationListener {
        public void create () {
        }

        public void render () {
        }

        public void resize (int width, int height) {
        }

        public void pause () {
        }

        public void resume () {
        }

        public void dispose () {
        }
}

這些方法允許你建立和渲染你的遊戲。因為它們都是空的,當前的遊戲將是一個簡單的空屏。在做一個更有趣的事情前,先讓我們把這個簡單的遊戲執行起來。

在桌面上運行遊戲

右鍵桌面工程 -> New -> Class. 命名為 DesktopGame 並指定一個包 (eg, "com.gamename"). 點選OK。把類修改為:

import com.badlogic.gdx.backends.lwjgl.LwjglApplication;

public class DesktopGame {
        public static void main (String[] args) {
                new LwjglApplication(new Game(), "Game", 480, 320, false);
        }
}

該程式碼確定一個 LwjglApplication,為遊戲提供了一個例項,一個標題和大小。"false" 意思是不使用OpenGL ES 2.0 (將使用 1.0/1.1)。

要在桌面運行遊戲, 右鍵工程 -> Debug As -> Java Application。你會看到一個黑屏標題為 "Game"。

在 Android 中運行遊戲

開啟Android工程中自動生成的 AndroidGame 類 ,並修改為:

import com.badlogic.gdx.backends.android.AndroidApplication;

public class AndroidGame extends AndroidApplication {
        public void onCreate (android.os.Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                initialize(new Game(), false);
        }
}

這個程式碼是一個Android activity 呼叫初始化方法並傳入一個遊戲例項。同樣,“false" 意思是不使用OpenGL ES 2.0。

要在Android上運行遊戲,右鍵工程 -> Debug As -> Android Application. 螢幕會變黑, 因為目前遊戲沒有做任何事情。如果執行應用時有任何錯誤,都會顯示在Logcat視圖裡,你可以點選 Window -> Show View -> Other -> Android -> Logcat 開啟該檢視。

更新 libgdx

某些情況下你可能想升級libgdx到最新版本。要做到這一點,再次下載 nightly zip 並更新工程中的這些檔案:

Project Files
main libs/gdx.jar
libs/gdx-sources.jar
Android libs/gdx-backend-android.jar
libs/armeabi (directory)
libs/armeabi-v7a (directory)
desktop libs/gdx-natives.jar
libs/gdx-backend-lwjgl.jar
libs/gdx-backend-lwjgl-natives.jar