cocos2dxandroid
A. Cocos2dx適不適合開發安卓單機游戲
cocos2dx適合2D或者偽3D的手機游戲。一般來說小型和中型項目都可以用。所以你說的如果是2D游戲,就可以使用。但是cocos2dx是用C++或者lua,js等編寫完畢和java混編以後成為安卓游戲。理論上cocos2dx可以跨所有平台。就是說IOS,ANDROID,WP的游戲都可以使用。
B. cocos2dx android 打包不成功,求幫助
step 1. vs2012下好,安好。有人說vs2013cocos2d-x有一些問題也不知道真的假的,反正我原本就用的是vs2012。 2 step 2. ADT Bundle 下載下來記住放在哪裡 step 3. JDK 既然要想搞android JDK怎麼可以沒安 ,不解釋怎麼安這個東東,僅僅注意添加環境變數。 step 4. 安裝CDT插件,這是個Eclipse的插件,用來支持Eclipse中C/C++語言的開發。從Eclipse的官網下載,下載之後,將文件夾裡面的內容復制到Ecplise安裝目錄下對應的文件夾之後就可以了。 step 5. 安裝NDK ,這是進行C/C++與Java混合編譯的必要工具。記下下載之後解壓到的目錄,因為到之後的安裝中會用到,我把它的目錄添加到Path里了個人習慣。 step 6. 安裝ANT,Cocos的Android開發需要用到它,所以下載下來安裝好吧。 step 7. 安裝python 2.7 cocos2d-x裡面經常使用python做一些配置環境,創建什麼什麼的。注意不要3.x以上的類似print 2.x和 3.x就不一樣cocos的python是2.x所以我們就下2.x 記得添加環境變數。 step 8. 解壓縮cocos2d-x-3.2alpha0,不容易啊第8步才到這,安裝目錄里有個setup.py 運行它 或者進入cmd 到文件目錄下 python setup.py step 9. 創建項目 在cmd下鍵入 cocos new 文件名 -p 包名(xx.xx.xx注意是三層) -l 所用語言(cpp) -d 路徑(E:\cocos2dx) step 10. 運行項目 找到創建好的目錄下的proj.win32裡面的xx.sln文件,雙擊運行(裝好了vs2012的前提下),少年想怎麼搞就怎麼搞吧。 step 11. 搭 建android,把安裝目錄下的cocos2d-x-3.2alpha0\cocos2d-x-3.2alpha0\cocos\platform \android\java\src 復制到你項目目錄的proj.android下合並src,proj.android\jni文件夾下有個Android.mk用記事本打開找到 LOCAL_SRC_FILES := hellocpp/main.cpp \ ../../Classes/AppDelegate.cpp \ ../../Classes/HelloWorldScene.cpp\在這里把你自己要用的cpp加進去,然後運行build_native.py。 step 12. 運 行ADT Bundle下的eclipse,打開eclipse後點擊file->Import選擇android下的那個,然後下一步。再點擊Browse 選擇你項目裡面的proj.android文件夾然後導入,等待片刻,導入完成後在eclipse中右擊導入的項目選擇run as->android application。之後會在bin目錄下生成apk,如果你沒有安裝android虛擬機最後會提示你安裝配置一個虛擬機,可以選no,其實這時已 經生成一個apk在你項目的bin文件夾下,用自己的手機搞起吧。
C. cocos2dx移植Android平台
如果你用的是windows系統作為開發環境,使用的是cocos2d-x3.2最新版的,你在一開始安裝cocos2d-x的時候,會要求輸入
NDK_ROOT
ANDROID_SDK_ROOT
ANT_ROOT
最新版的cocos2d-x使用了python來進行安裝和編譯程序的,所以你要先在你的windows系統上安裝上python.安裝好之後,下載最新版的cocos2d-x,然後,cd到這個目錄下,你會看到一個有一個setup.py的文件,.py後綴的文件就是python的腳本文件了。是要用python來運行的。如果你安裝好python之後設置好了python的環境變數,這個時候,你只要在命令行里運行:
python setup.py就可以了。
然後你就可以看到要求你輸入的這三個路徑了。
這三個工具的所在路徑,這幾個路徑輸入對了之後,你的cocos2d-x就安裝好了,這個時候,在cmd里創建一個新項目,創建的方法是在命令行里輸入:
cocos new youprojectname -p com.youcom,youprojectname -l cpp -d 你的新建項目所在路徑
然後回車,你就可以看你的的項目會在你的新建項目路徑下有一個youprojectname的文件夾,打開,你就可以看到里邊有各個系統的project文件夾了,還有一個Class和Resources的文件夾。這個時候,你在命令行里cd到你的proj.android文件夾下,使用命令:
python bulid_native.py
就可以對你的安卓新建的helloworld項目進行編譯了。不出意外,要不然一分鍾就編譯好了。會生成一個libcocos2dcpp.so在你的pro.android/libs/armabi的路徑下。然後打開你的ADT,也就是eclipse,進入pro.android目錄,導入android項目到eclipse。這個時候可能會報一個cocos2d-x的lib庫錯誤,只要把cocos2d-x的
cocos2d/cocos/platform/android/java/src
目錄下的文件夾復制到pro.android/src下就可以解決這個問題了。
然後,接上你的android手機,並且在手機中打開開發者模式。點擊程序遠行設置,選擇使用設備運行。在彈出的一個選擇手機設備的框時選擇run,不一會,你的helloworld項目就可以在手機上看到了。
如果要調試,你可以在eclipse中打開logcat,看到cocos2d-x的log輸出信息。
總的來說,android最好的開發環境還是mac系統。因為在mac系統下很多linux命令都可以使用。不像windows系統比較蹩腳。
D. cocos2dx android 代碼混淆
1. 下載cocos2dx 2.2.1
去cocos2dx官網下載就好,最好是2.2.1版本。3.0版本變化比較大,也沒測試過。
3. 創建工程
使用cocos2dx目錄下的tools/project-creator/create_project.py創建一個工程。
4. 編譯android版本
網上很多文章說,編譯cocos2dx的Android版本時需要安裝cygwin之類的,其實這對於目前的ndk版本來說是不必要的,因為高版本的ndk都集成了cygwin的一些功能。我這里使用的是ndk
r9d。下面來說一下操作步驟。
我編譯的習慣是直接在jni目錄下預先ndk-build命令,因為在Windows下使用.sh結尾的文件太怪異了。首先來看一下build_native.sh乾的工作:
這是build_native.sh中實際工作的部分。可以看到它使用NDK_ROOT下的ndk-build來編譯,還導入了NDK_MODULE_PATH,
這個NDK_MODULE_PATH是為Android.mk中的import-mole提供路徑選擇。
現在來導入NDK_MODEL_APTH, 在Android.mk的import-mole之前加上cocos2dx中的幾個路徑:
$(call import-add-path, G:/cocos2dx)
$(call import-add-path,
G:/cocos2dx/cocos2dx/platform/third_party/android/prebuilt)
運行ndk-build, 編譯。
編譯時可能出現這樣的錯誤:error: GLES2/gl2.h: No such file or
directory,這是因為低版本的Android版本不支持opengl es2.0,在Application.mk中加上:
APP_PLATFORM := android-17
5. 生成apk包
在eclipse下打開創建的工程,導入相關的包後,在AndroidMenifest.xml中加入:
android:debuggable="true"
表明這是一個可以調試的包。運行,結果出現:
這是因為該工程默認使用build_native.sh編譯:
因為build_native.sh現在已經沒用了,所以把它改成:
這個意思是,直接使用NDK_ROOT環境變數下的ndk-build.cmd來編譯工程,編譯成debug版本,編譯成armeabi和armeabi-v7a兩種指令格式的庫,執行這個命令的目錄是工程目錄下的jni文件夾。debug版本和armeabi-v7b主要是為了後面使用visualGDB調試做准備。
再編譯,就可以生成apk包了。
VisualGDB調試
1. 下載並安裝VisualGDB, 安裝完成後,在Visual Studio的目錄中可以看到Android選項:
2. 配置VisualGDB, 在Android -> Setup SDK/NDK location
主要配置JDK,SDK,NDK,ANT路徑
3. 設置要調試的apk包。Android -> Debug a Custom APK file
4 設置完成後,在代碼中設置斷點,點擊Debug, 開始調試
5. 等apk安裝完成後,程序會運行到斷點出,就可以開始用Visual Studio調試了
E. android和cocos2dx可以互調嗎
在cocos2dx里訪問/互調android里的activity方法/變數
不得不感嘆下COCOS2DX的強大。。同一份游戲代碼不加改動的可以放到android和iphone上面。
而最近在往ANDROID上放的時候,需要集成其它非官方運營渠道的API,而對方提供的API是jar包。所以需要在cocos2dx C++源文件中調用JAVA的API,因此有了以下DEMO代碼:
activity里有如下定義:
Java代碼
public void cppCall_nonStatic_logsth(){
//非靜態方法
Log.i("cppCall_nonStatic", "test2~~~~!!!");
}
public static Object cppCall_logsth(){
//靜態方法
Log.i("cppCall", "test~~~~!!!");
return activity;
}
AppDelegate.cpp里:
加上預定義(for android)
C++代碼
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <jni.h>
#include <JniHelper.h>
#include <android/log.h>
#if 1
#define LOG_TAG "JniHelper"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
#else
#define LOGD(...)
#endif
#endif
關鍵代碼片段:
C++代碼
JniMethodInfo minfo;
jobject jobj;
bool b = JniHelper::getStaticMethodInfo(minfo,
"com/loy/puzzles/Puzzles", //類路徑
"cppCall_logsth", //靜態方法名
"()Ljava/lang/Object;"); //括弧里的是參數,後面的是返回值。
if (!b) {
LOGD("JniHelper::getStaticMethodInfo error...");
}else{
jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
}
JniHelper::getMethodInfo(minfo,
"com/loy/puzzles/Puzzles",
"cppCall_nonStatic_logsth",
"()V");
if(!b){
LOGD("JniHelper::getMethodInfo error...");
}else{
LOGD("ready to invoke method...");
minfo.env->CallVoidMethod(jobj, minfo.methodID);
}
最終LOGCAT列印日誌如下:
12-29 12:46:33.891: D/JniHelper(2008): testing~~~
12-29 12:46:33.891: I/cppCall(2008): test~~~~!!!
12-29 12:46:33.891: D/JniHelper(2008): ready to invoke method...
12-29 12:46:33.891: I/cppCall_nonStatic(2008): test2~~~~!!!
12-29 12:46:33.891: D/JniHelper(2008): testing over~~~
即表示調用成功。
F. 新手,cocos2dx移植到android平台不知道怎麼導入sqlite3庫
1.准備三個工具:並解壓放置在Documents目錄下 a.Android開發環境包ADT已經集成在Eclipse中,我的是adt-bundle-mac-x86_64-20130917 mac下默認已經安裝了JDK b.AndroidNDK即Android環境本地編譯C++的包,用r8的,r9的貌似有問題去網路空間下android-ndk-r8 c.cocos2d-x開發包,我的是cocos2d-x-2.1.42.添加全局變數vi~/.bash_profile 其中添加如下:路徑不要有空格 exportNDK_ROOT_LOCAL=/Users/user/Documents/android-ndk-r8 exportNDK_ROOT=$NDK_ROOT_LOCAL exportANDROID_NDK_ROOT=$NDK_ROOT exportANDROID_SDK_ROOT=/Users/user/Documents/adt-bundle-mac-x86_64-20130917/sdk exportANDROID_SDK_ROOT_LOCAL=$ANDROID_SDK_ROOT exportCOCOS2DX_ROOT=/Users/user/Documents/cocos2d-x-2.1.4 exportPATH=$ANDROID_NDK_ROOT:$PATH exportPATH=$ANDROID_SDK_ROOT:$PATH exportPATH=$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$PATH 這樣以後就不需要在create-android-project.sh build_native.sh這兩個腳本中再重新修改添加響應的路徑了3.直接cd到cocos2d-x-2.1.4目錄下並執行「./create-android-project.sh」根據提示輸入相應的包名,項目名和版本號。 生成的項目會在cocos2d-x-2.1.4目錄下(這里假設項目名為PPP),然後cd到PPP/proj.android下,執行「./build_native.sh」如此編譯生成C++的相關靜態庫,有時某些頭文件需要include 如:/Users/user/Documents/cocos2d-x-2.1.4/cocos2dx/platform/android/CCFileUtilsAndroid.h4.打開Eclipse導入剛剛生成的項目PPP,並修改AndroidManifest.xml中得icon名稱,另外還需在Eclipse里導入cocos2d-x的兩個工程庫 最終如下: libcocos2dx位於/User/users/Documents/cocos2d-x-2.1.4/cocos2dx/platform/android/java libPluginProtocol位於/User/users/Documents/cocos2d-x-2.1.4/plugin/protocols/proj.android 另外還需滑鼠選擇項目PPP 然後菜單--》Project--》Properties--》Andriod然後如下:
G. 如何用android studio開發cocos2dx
AndroidStudio安裝步驟:打開瀏覽器搜索「android-studio」下載即可看到很多下載鏈接,下載完成後android-studio。雙擊安裝;按照提示進行安裝。選擇安裝路徑;設置了安裝路徑後,點擊安裝即可進行繼續安裝。等待安裝過程結束;安裝過程中會自動配置一些環境,後會安裝完成,點擊完成即可;啟動android-studio,第一次安裝默認選擇即可;啟動後,可以選擇open項目或者new一個;新建一個項目,點擊next,選擇模板樣式。完成創建後,啟動下載需要的組件。
H. cocos2dx怎麼編譯到android
如果你用的是windows系統作為開發環境,使用的是cocos2d-x3.2最新版的,你在一開始安裝cocos2d-x的時候,會要求輸入
NDK_ROOT
ANDROID_SDK_ROOT
ANT_ROOT
最新版的cocos2d-x使用了python來進行安裝和編譯程序的,所以你要先在你的windows系統上安裝上python.安裝好之後,下載最新版的cocos2d-x,然後,cd到這個目錄下,你會看到一個有一個setup.py的文件,.py後綴的文件就是python的腳本文件了。是要用python來運行的。如果你安裝好python之後設置好了python的環境變數,這個時候,你只要在命令行里運行:
python setup.py就可以了。
然後你就可以看到要求你輸入的這三個路徑了。
這三個工具的所在路徑,這幾個路徑輸入對了之後,你的cocos2d-x就安裝好了,這個時候,在cmd里創建一個新項目,創建的方法是在命令行里輸入:
cocos new youprojectname -p com.youcom,youprojectname -l cpp -d 你的新建項目所在路徑
然後回車,你就可以看你的的項目會在你的新建項目路徑下有一個youprojectname的文件夾,打開,你就可以看到里邊有各個系統的project文件夾了,還有一個Class和Resources的文件夾。這個時候,你在命令行里cd到你的proj.android文件夾下,使用命令:
python bulid_native.py
就可以對你的安卓新建的helloworld項目進行編譯了。不出意外,要不然一分鍾就編譯好了。會生成一個libcocos2dcpp.so在你的pro.android/libs/armabi的路徑下。然後打開你的ADT,也就是eclipse,進入pro.android目錄,導入android項目到eclipse。這個時候可能會報一個cocos2d-x的lib庫錯誤,只要把cocos2d-x的
cocos2d/cocos/platform/android/java/src
目錄下的文件夾復制到pro.android/src下就可以解決這個問題了。
然後,接上你的android手機,並且在手機中打開開發者模式。點擊程序遠行設置,選擇使用設備運行。在彈出的一個選擇手機設備的框時選擇run,不一會,你的helloworld項目就可以在手機上看到了。
如果要調試,你可以在eclipse中打開logcat,看到cocos2d-x的log輸出信息。
總的來說,android最好的開發環境還是mac系統。因為在mac系統下很多linux命令都可以使用。不像windows系統比較蹩腳。
I. cocos2dx寫的程序能在android運行嗎
有的人有疑問,不知道cocos2dx寫的程序能在android運行嗎?今天找到了相關的內容。
cocos2dx開發的在android平台下運行的程序,是以一個.so用戶庫文件提供給JAVA層調用。所以我們在JAVA層實現檢查更新,下載最新庫文件,並跳過載入原來庫文件,載入新庫文件即可。
1. 首先,在AndroidManifest.xml里新增一個activity,以供執行更新。
b.下載更新: 如果有更新根據規則,選擇適合自己CPU架構的庫文件下載。 下載
完成之後進行完整性校驗。
3. 載入.so文件
修改原來的Cocos2dxActivity.java文件,加入跳過載入原來庫文件邏輯。
public final static String FLAG_SKIP_LOAD_LIB = "key-isSkipLoadLib";protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Boolean isSkipLoadLib = false;
if(savedInstanceState != null)
isSkipLoadLib = savedInstanceState.getBoolean(FLAG_SKIP_LOAD_LIB);
if(!isSkipLoadLib)
onLoadNativeLibraries();
sContext = this;
this.mHandler = new Cocos2dxHandler(this);
Cocos2dxHelper.init(this);
this.init();
if (mVideoHelper == null) {
mVideoHelper = new Cocos2dxVideoHelper(this, mFrameLayout);
}
}
4. 還差ZIP壓縮下載和MD5校驗。
J. 如何用cocos2dx開發android游戲
cocos2d-x在win32平台上開發出來的代碼還需要交叉編譯後才能生成android可以使用的包,具體操作見這個文檔
另:使用cocos2d-x引擎的優勢在於便於移植性。其開發出的C++代碼只要在各平台上只要稍加改動就可以使用。而單使用ECLIPSE或Xcode環境使用的語言分別是java和Object-c,如果直接讓它們相互轉換難度肯定要大的多。