1. 程式人生 > >Cocos2d-x 3.0正式版及android環境搭建詳細教程

Cocos2d-x 3.0正式版及android環境搭建詳細教程

 今天cocos2d-x 3.0正式版終於釋出了,下午特地下載了來嚐嚐鮮,廢話不多說了。3.0正式版的環境搭建和之前的RC版其實是一樣的,太多的教程也寫了如何搭建,今天來寫寫我自己是如何來搭建的。
我的開發環境是:mac + xcode + eclipse ,其實現在win下面的環境和這個都是一樣的,唯一不一樣的就是環境變數的配置。

下面主要介紹cocos2d-x環境的設定以及android的環境搭建
1、下載cocos2d-x 3.0正式版
       http://www.cocos2d-x.org/download


2、下載android的sdk以及ndk
      http://developer.android.com/sdk/index.html

3、下載ant
      http://ant.apache.org

(注:cocos2d-x的環境變數配置需要用到ant,主要是android需要使用到它)

4、下載python 2.7.6(不要下載python3.0以上的版本,正常mac上都有自帶,也無需下載)
https://www.python.org/download/releases/2.7.6/


必備工具都下載好了,現在開始搭建環境了。

4、配置.bash_profile(該檔案在/Users/xuzhiwei/.bash_profile下,沒有可以自行建立)

複製程式碼
  1. export NDK_ROOT=/Users/xuzhiwei/Develop/program/android/android-ndk-r9d
  2. export ANDROID_SDK_ROOT=/Users/xuzhiwei/Develop/program/android/adt-bundle-mac-x86_64/sdk
  3. export ANT_ROOT=/Users/xuzhiwei/Develop/program/apache-ant-1.9.3
  4. export PATH=$ANT_ROOT/bin:$PATH


以上配置了android sdk、ndk還有ant的環境變數,這樣就好了

5、現在開始配置3.0的環境變數,這個方便了很多
只需要執行3.0的目錄下setup.py就好了
複製程式碼
  1. python setup.py 

如圖:



根據提示執行
複製程式碼
  1. source /Users/xuzhiwei/.bash_profile

命令重新整理一下配置檔案就可以了。這樣的環境搭建就完成了。

6、建立專案,相信使用過3.0的大俠們都知道有個cocos的命令。
這裡執行下   cocos -h 看下幫助



這個其他教程也說了很多遍了,我就不多說了。直接建立專案.



7、找到建立的目錄


使用xcode開啟專案,然後執行編譯即可



整個環境就這樣搭建完成了。


8、接下來要說的還是android的相關部分了。
首先,進入到proj.android下通過命令執行
複製程式碼
  1. python build_native.py 

然後他就開始進行編譯了。



編譯完成後開啟,使用eclipse開啟,並匯入可以看到有紅色的“*”.


這裡是因為少了包,右擊屬性可以看到

  

到test3.0/cocos2d/cocos/2d/platform/android/java/src下把類包拷到當前專案的src下即可,或者通過類庫專案的方式進行引用。



這樣就沒有問題。

不過問題來了,每次這麼建立都要去copy實在是太麻煩了。

接下來修改一下模板中的build_native.py檔案,以後就讓命令來幫我們一起將類包考進去。


9、修改模板類中的build_native.py
  你可以在“cocos2d-x-3.0/templates/cpp-template-default/proj.android”下找到build_native.py進行修改。


貼下程式碼吧,以上中文就是我修改的地方,下面只貼關鍵部分程式碼,大家自行copy
複製程式碼
  1. def copy_resources(app_android_root):
  2.     # remove app_android_root/assets if it exists
  3.     assets_dir = os.path.join(app_android_root, "assets")
  4.     if os.path.isdir(assets_dir):
  5.         shutil.rmtree(assets_dir)
  6.     # copy resources
  7.     os.mkdir(assets_dir)
  8.     resources_dir = os.path.join(app_android_root, "../Resources")
  9.     if os.path.isdir(resources_dir):
  10.         copy_files(resources_dir, assets_dir)
  11. #--------copy cocos_lib_path start------------
  12. def copy_src_files(src, dst):
  13.     
  14.     for item in os.listdir(src):
  15.         path = os.path.join(src, item)
  16.         
  17.         if not item.startswith('.') and os.path.isfile(path):
  18.             shutil.copy(path, dst)
  19.         if os.path.isdir(path):
  20.             new_dst = os.path.join(dst, item)
  21.             if not os.path.exists(new_dst):
  22.                 os.mkdir(new_dst)
  23.             copy_src_files(path, new_dst)
  24. def copy_src(app_android_root,cocos_root):
  25.    
  26.     android_src_dir = os.path.join(app_android_root,"src")
  27.     
  28.     cocos_src_path = os.path.join(cocos_root, "cocos/2d/platform/android/java/src")
  29.     
  30.     if not os.path.exists(android_src_dir) :
  31.         os.mkdir(android_src_dir)
  32.     
  33.     if os.path.isdir(cocos_src_path):
  34.         copy_src_files(cocos_src_path,android_src_dir)
  35. #--------copy cocos_lib_path end------------
  36. def build(ndk_build_param,android_platform,build_mode):
  37.     ndk_root = check_environment_variables()
  38.     sdk_root = None
  39.     select_toolchain_version()
  40.     current_dir = os.path.dirname(os.path.realpath(__file__))
  41.     cocos_root = os.path.join(current_dir, "../cocos2d")
  42.     app_android_root = current_dir
  43.     copy_resources(app_android_root)
  44.     #-----------------add copy src ------------
  45.     copy_src(app_android_root,cocos_root)
  46.     
  47.     if android_platform is not None:
  48.                 sdk_root = check_environment_variables_sdk()
  49.                 if android_platform.isdigit():
  50.                         android_platform = 'android-'+android_platform
  51.                 else:
  52.                         print 'please use vaild android platform'
  53.                         exit(1)
  54.         
  55.     if build_mode is None:
  56.           build_mode = 'debug'
  57.     elif build_mode != 'release':
  58.         build_mode = 'debug'
  59.     
  60.     do_build(cocos_root, ndk_root, app_android_root,ndk_build_param,sdk_root,android_platform,build_mode)


好了,修改模板的好處就是一次修改,多次使用哈。
下面你可以在建立一個專案,然後執行   python build_native.py  看看是不是把類包一起打包進專案了哈。

以上就是整個的環境搭建過程,看起來有點兒多,不過最好還有一個東西也是要放到模板下的。

那就是為了方便以後copy 建立的cpp檔案到android.mk下,往模板的proj.android下的JNI下新增list.sh檔案。
下載包:   list.sh.zip (1 K) 下載次數:634   
使用方法很簡單:
複製程式碼
  1. ./list.sh ../../Classes




這樣就可以列出Classes下的cpp了,這樣就可以直接copy到android.mk目錄下了。也可參考 http://xuzhiwei.blog.51cto.com/978424/1357298


哈,好了,完成了整個的建立過程了,感覺很爽。唯一不爽的就是整個程式碼編輯器,死活我都加亮加不了