Linux 下開發 Android Cocos2d-x 遊戲

本文出自[無間落葉](轉載請保留出處):http://blog.leafsoar.com/archives/2013/04-22-22.html

開發 Android 應用的首選 IDE 是什麼,是 Eclipse ,而開發 Android 平臺的 cocos2d-x 遊戲呢,當然也是 Eclipse 。

Eclipse Android 開發環境搭建

  • 如果你的 Eclipse 不支持 Java 開發,請安裝相關插件,或者使用 Eclipse IDE for Java Developers 版本集成的 Java 開發環境。
  • 僅僅 Java 開發環境還不夠,我們還需要 ADT(Android Development Tools) ,顧名思義,通過它,我們才能在 Eclipse 建立 Android 項目,與 Eclipse 集成,打包生成 Android 應用程序包 Apk 文件。
  • 作爲 ADT 的依賴環境,Android SDK 也是必須的。
  • 由於 cocos2d-x 是由 C/C++ 編寫,爲了編譯 Android 平臺 C/C++ 程序,我們還需要安裝 NDK, 注意選擇 Linux 版本, 32 位或者 64 位視開發機而定。

安裝好 Eclipse、ADT 和 Android SDK、NDK,打開 Eclipse 做些簡單的配置,打開 Eclipse:

Eclipse -> Window -> Preferences -> Android
  • 在右側設置 SDK Location 爲你的 Android SDK 位置。只有當位置正確,才能正確點擊 OK。
  • Linux 下進入 Android SDK 目錄,運行 [android-sdk-linux]/tools/android ,程序,安裝相關工具,各種版本的 Android SDK Platform,代碼實例等,可以選擇 4.1.2 版本。
  • Eclipse 切換到 Java Perspective (Eclipse 右上角設置),點擊 Eclipse 菜單 Window -> Android Virtual Device Manager 創建一個虛擬機,版本對應上一步驟所安裝的 SDK 版本。
  • 爲了方便起見,我們將 Android SDK 和 NDK 的執行命令等([android-sdk-linux/tools] 和 ndk-build),添加到 Linux 系統 PATH 環境變量。

此時,通過安裝配置,要能完成在 Linux 下使用 Eclipse 開發 Android 應用和 Android Jni 應用,我們才能繼續接下來的過程,如果配置出現問題,不能開發 Android 或者 Jni 應用,那麼請先解決之 ~

環境搭建過程,如果出現什麼問題或者疑問,可以 Google 之,或者在博客之後留言交流 ~

創建 Linux Cocos2d-x for Android 項目

我們首先通過 cocos2d-x 自帶的創建腳本創建 Android cocos2d-x 項目。

cd [cocos2d-x-path]
./create-android-project.sh # 回車
...
Input package path. For example: org.cocos2dx.example
com.leafsoar.HelloWorld    # 輸入包名
...
...
----------
id: 7 or "android-16"
     Name: Android 4.1.2
     Type: Platform
     API level: 16
     Revision: 3
     Skins: QVGA, WVGA800 (default), WSVGA, HVGA, WQVGA432, WVGA854, WQVGA400, WXGA720, WXGA800, WXGA800-7in
     ABIs : armeabi-v7a
input target id:
7    # 輸入 target id,參照上面,根據自己的 sdk 版本選擇
...
input your project name:
HelloWorld          # 輸入項目名稱
cd [cocos2d-x-path]/tools/project-creator/
python create_project.py #最新創建腳本,之前的腳本會逐步捨棄
Usage: create_project.py -project PROJECT_NAME -package PACKAGE_NAME -language PROGRAMING_LANGUAGE
Options:
  -project   PROJECT_NAME          Project name, for example: MyGame
  -package   PACKAGE_NAME          Package name, for example: com.MyCompany.MyAwesomeGame
  -language  PROGRAMING_LANGUAGE   Major programing lanauge you want to used, should be [cpp | lua | javascript]


Sample 1: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame
Sample 2: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame -language javascript
python create_project.py -project HelloWorld -package org.cocos2dx.example -language cppproj.ios		: Done!
proj.android		: Done!
proj.win32		: Done!
proj.mac		: Done!
proj.blackberry		: Done!
proj.linux		: Done!
proj.marmalade		: Done!
New project has been created in this path: [cocos2d-x-path]/projects/HelloWorld
Have Fun!

會在 [cocos2d-x-path] [cocos2d-x-path]/projects目錄創建一個 HelloWorld 的目錄,裏面包含文件如下:

HelloWorld/
├── Classes
│   ├── AppDelegate.cpp
│   ├── AppDelegate.h
│   ├── HelloWorldScene.cpp
│   └── HelloWorldScene.h
├── proj.android
│   ├── AndroidManifest.xml
│   ├── ant.properties
│   ├── bin
│   ├── build_native.sh
│   ├── build.xml
│   ├── jni
│   ├── libs
│   ├── local.properties
│   ├── ndkgdb.sh
│   ├── proguard-project.txt
│   ├── project.properties
│   ├── res
│   └── src
└── Resources
    ├── CloseNormal.png
    ├── CloseSelected.png
    └── HelloWorld.png

上篇博文我們簡單分析了一下這樣的目錄組織方式,和其功用。創建好 cocos2d-x android 項目,我們開始編譯,proj.android目錄下提供一個自動編輯腳本,完成的工作是,編譯 cocos2d-x C/C++ 程序,並且在 libs 目錄生成相應的 so 庫文件。

cd [HelloWorld]/proj.android
././build_native.sh
...
...
...
StaticLibrary  : libextension.a
SharedLibrary  : libgame.so
Install        : libgame.so => libs/armeabi/libgame.so
make: Leaving directory '[cocos2dx-path]/HelloWorld/proj.android' '[cocos2dx-path]/projects/HelloWorld/proj.android'

看到如上信息,說明已經編譯成功,首次編譯過程稍微緩慢一點,如果沒有出現以上結果,或者編譯錯誤,多是因爲系統環境沒有配置正確。需要環境變量 NDK_ROOTCOCOS2DX_ROOT等,根據提示具體分析。

配置集成開發環境

爲了方便項目管理,我們把 HelloWorld 目錄移動到 Ecilpse 的工作空間之中,默認實在[cocos2dx-path] [cocos2dx-path]/projects目錄。然後使用 Eclipse 導入本地項目,指定 [HelloWorld/proj.android] 目錄導入項目。

  • 導入之後我們發現項目出現感嘆號,這是因爲 Eclipse 管理此項目的依賴項目並不存在,我們繼續用 Eclipse 導入[cocos2dx-path]/cocos2dx/platform/android/java libcocos2dx 項目。
  • 我們右擊 HelloWorld 修改項目屬性,找到 Android 項,看到 Library 屬性框,所引用的項目出現問題,首先 remove 然後 重新 Add 選擇剛纔添加的 libcocos2dx 項目。
  • 我們 clean 清空一下 HelloWorld 項目。
  • 此時在我的項目中 AndroidManifest.xml 文件出現 androi:icon 圖標的錯誤,修改成 @drawable/ic_launcher
  • 右擊項目 Run as -> Android Application 就能運行此應用了

以上問題視自己的具體情況而定,可能出現不同的錯誤。

此時我們發現 Android 項目中,bin 目錄生成了 HelloWorld.apk 文件,這個就是最終的 Android 平臺 cocos2d-x 遊戲安裝包了。並且可以運行。

至此,我們已經能夠在 Linux 上運行編譯運行 Android 平臺的 cocos2d-x 遊戲,但是每次我們在編寫完 cocos2d-x 遊戲源代碼,我們都要執行 build_native.sh 命令,當然可以簡化此步驟,並且將上一偏博文的的 Linux 下開發 Cocos2d-x 遊戲,一遍編寫調試,一邊運行在 Android 平臺,或者兩個項目同時進行。這些內容將會在下一篇文章之中 ~

至此還沒有完,因爲我們移動了項目目錄,所以再次執行 build_native.sh 命令會出現問題,我們需要修改此文件中的配置:

COCOS2DX_ROOT="$DIR/../.."

將此值設置爲 [cocos2dx-path] 的絕對目錄,或者使用 COCOS2DX_ROOT 的環境變量。以保證此命令能夠執行編譯成功。這個問題留給讀者自己解決吧 : p

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章