標籤:android style blog class code c
1.首先要會普通的cpp 打包成Android APK
以下所說的是在cocos2d-x 2.2.2 或者 2.3 版本中。本文在Eclipse總用ndk編譯cocos2d-x。
老生常談cocos2d-x JSB不是簡單的js代碼,涉及到C++代碼,如果是Android的話又涉及到Java代碼,有點複雜,如果搞過Android下的Jni的話會熟悉些。可以看下這篇文章:《Android Jni 例子 Hello JNI,ndk》
Android為了提高開發人員開發應用的速度,降低難度,選擇了Java,但是也可以用c或者c++,在某個版本引入了ndk。cocos2d-x是用C++開發的,所以剛好也可以在Android中使用,但是就涉及到ndk了。其實如果有Linux環境,Android完整源碼,ndk編譯還是比較容易的。但是大部分cocos2d-x都用windows開發,而在windows下搞ndk就比較複雜。
2.首先是一些軟體準備
JDK安裝,弄好環境變數,略。
去www.android.com下載ADT
google搜尋ndk下載最新ndk,設定環境變數
去www.cocos2d-x.org 下載2.3版本的cocos2d-x,解壓。
google搜尋python 27 ,設定環境變數 (老的cocos2d-x版本不是用python 來建立項目的,vs和xcode都有模版,剛開始比較好用,但是跨平台比較麻煩,後來改用python,只需要一次建立,跨平台比較好用)
把C:\Python27;加入到PATH中。
這裡還是扯下環境變數的作用,很多人不熟悉環境變數,來看下Python這個例子,假設我是安裝在C盤,開啟C:\Python27, 是不是看到一個exe叫做python.exe,它可以解析python代碼,但是每次都要弄完整路徑來解析會很麻煩的,所以就把C:\Python27加入到PATH中,這樣無論在哪個目錄下都可以直接存取到phthon.exe了。
3.首先建立一個javascript的cocos2d-x項目
進入cocos2d-x/tools/project-creator 目錄,win7的,可以按住Shift,右擊滑鼠"此處開啟命令視窗",輸入python create_project.py -project TestJs -package com.test.example -language javascript
基本可以。大家可以開啟create_project.py查看下源碼,裡面就有建立的例子的。也可以把下面的代碼儲存到txt中,尾碼改成bat,雙擊運行下,但本質還是執行create_project.py。
@echo off set /p projectName=請輸入項目名稱(例如:test): if "%projectName%"=="" goto inputError set /p packageName=請輸入項目包名(例如:org.cocos2dx.test): if "%packageName%"=="" goto inputError set /p projectLanguage=請輸入程式設計語言(例如:選填cpp ,lua ,javascript): if "%projectLanguage%"=="" goto inputError python create_project.py -project %projectName% -package %packageName% -language %projectLanguage% pause :inputError @echo 項目名稱或者包標示名不可為空! pause
複製JS代碼到assets目錄。這裡要扯下,Android開發一般把圖片,xml等資源放在res目錄下的,等打包成APK的時候,會打包成一個檔案。Java代碼中也很容易訪問的。但是除了標準的資源,像js,音樂等只能放在assets下了,打包成APK也不會是一個檔案,解壓APK,assets裡面的資源還是原來的,不會做任何處理。這些jsb開頭的js好像要下載Cocos2d-JS才有。
注意到這裡有一個檔案叫cocos2d-jsb.js ,這個是啟動js,要跟Classes/AppDelegate.cpp中的對應起來,applicationDidFinishLaunching中有個調用 ScriptingCore::getInstance()->runScript("cocos2d-jsb.js");
3.ADT中匯入兩個項目
在左邊,右擊Import
位置是下面兩個地方:
cocos2d-x-2.3\cocos2dx\platform\android\java
cocos2d-x-2.3\projects\TestJs\proj.android
4.設定Build 屬性
開啟菜單Window->Preferences->Android->NDK 編輯NDK路徑到你NDK的路徑,注意我這裡修改了預設的ndk名字。一般是比較長。
右擊TestJs項目,選擇Properties->Builders->New->Program,
在Main標籤下的Location,選擇Browse File Systerm...,選擇到android NDK下面的ndk-build.cmd檔案 。
Working Directory,選擇Browse Workspace...,選擇本項目。
在Environment標籤下,點擊new,
Name:NDK_MODULE_PATH
Value:
C:\D4\cocos2d-x-2.3;C:\D4\cocos2d-x-2.3\cocos2dx\platform\third_party\android\prebuilt(注意自己的實際目錄,這裡定義了兩個值,一個是cocos2d引擎的根目錄,另外一個是....prebuilt)
選擇Ok確認,返回Builders介面,去掉CDT Builder前面的勾選,並將你自己剛剛建立的Builder移動到最上面,全部配置好之後OK確認。
串連手機,運行應該就可以了。APK會產生在Bin目錄下,全部的C++檔案會打包成一個libcocos2djs.so放在libs/armeabi目錄下。
5.常見錯誤
1."bash" is not found in PATH,這個錯誤我也不知道怎麼就解決了,用Eclipse編譯有時候就是會抽風,多Project->Clean幾次,或者刪除項目重新Import試試,再或者只能下載cygwin了,把cygwin的bin目錄加入到系統內容變數中。
2.Syntax and Semantic Errors,這個錯誤是點擊了jni目錄下的main.cpp產生的,可以在Eclipse中對這個錯誤進行關閉:右擊你的項目 Properties-> C/C++ General -> Code Analysis -> Syntax and Semantic Errors,去掉勾。
3. unable to process assets while packaging xxx,這個錯誤是因為assets的許可權不夠,像我在Win7的C盤中建立項目,就會有這個問題,在proj.android目錄中,按shift右擊開啟命令視窗,給assets較高許可權即可: chmod 777 -R assets/
4.還有些錯誤,記得右擊項目屬性,開啟Builder刪除出錯的Builder.
5。還有個錯誤關於模擬器不支援OpenglES2.0的,可以用BlueStacks軟體,它比ADT中的模擬器強大很多。當然最好還是用真機。
6.TestJs APK下載:
http://www.waitingfy.com/archives/1126/testjs
參考:
cocos2d jsb Android