cocos2dx2.2移植到Android

準備:
1.vs2010
2.搭建好Android開發平臺的eclipse
3.下載Android NDK(我下的是android-ndk-r9)

我的cocos2dx解壓路徑:D:\cocos2d-x-2.2\cocos2d-x-2.2
NDK路徑:D:\cocos2d-x-2.2\cocos2d-x-2.2\android-ndk-r9

步驟一、配置AndroidDNK編譯環境

運行eclipse,配置一下ndk路徑就可以瞭 window->Preferences,如下圖

環境搭建好瞭,下面寫個測試程序驗證一下vcD4KPHA+CrzytaW0tNLi0ru49mFuZHJvaWS5pLPMo6zP4LWx09poZWxsb3dvcmxko6y0tL2ousO688rzserT0rz8uaSzzMP719ZBbmRyb2lkIFRvb2xzLT5BZGQgTmF0aXZlIFN1cHBvcnQuLi7V4sqxxOO74beiz9a5pLPMtuDBy9K7uPZqbmnEv8K8PC9wPgo8cD4KPGltZyBzcmM9″file:///C:/Users/Administrator/AppData/Local/YNote/Data/zhengweii%40126.com/583d028dbf8542c99e7ec2426984a534/0131009183401609″ alt=”\”>

測試demo比較簡單,實現android端與C++的相互調用

步驟二、資源移植
1.先將D:\cocos2d-x-2.2\cocos2d-x-2.2\cocos2dx\platform\android\java\src下的org目錄拷貝到D:\cocos2d-x-2.2\cocos2d-x-2.2\projects\Helloworld\proj.android\src下
2.將D:\cocos2d-x-2.2\cocos2d-x-2.2\projects\Helloworld\Classes下的全部C++文件拷貝到D:\cocos2d-x-2.2\cocos2d-x-2.2\projects\Helloworld\proj.android\jni\hellocpp
3.由於第二步轉移瞭C++文件的路徑,因此在D:\cocos2d-x-2.2\cocos2d-x-2.2\projects\Helloworld\proj.android\jni下的Android.mk
文件裡也要指明這些C++文件的路徑,要修改隻有如下的項LOCAL_SRC_FILES

LOCAL_SRC_FILES := hellocpp/main.cpp \
hellocpp/AppDelegate.cpp \
hellocpp/HelloWorldScene.cpp
即將(AppDelegate.cpp 和HelloWorldScene.cpp)與main.cpp的相對路徑改瞭

4.將路徑D:\cocos2d-x-2.2\cocos2d-x-2.2\projects\Helloworld\proj.android
下的Android工程導入Ecllipse中
再將路徑D:\cocos2d-x-2.2\cocos2d-x-2.2\projects\Helloworld\Resources下的資源全部拷貝到Android工程的assets目錄下

步驟三、設置編譯方式
1.右鍵移植的Android工程,選擇properties,再選擇Builders->New->program
在mian頁面填入NDK編譯路徑和本工程路徑,如下:(註意第二項Working Directory 要對應自己的Android工程名稱)
D:\cocos2d-x-2.2\cocos2d-x-2.2\android-ndk-r9\android-ndk-r9\ndk-build.cmd
${workspace_loc:/HelloCpp}


2.在Environment界面新建環境變量:
內容如下:
NDK_MODULE_PATH
D:\cocos2d-x-2.2\cocos2d-x-2.2;D:\cocos2d-x-2.2\cocos2d-x-2.2\cocos2dx\platform\third_party\android\prebuilt


步驟四、編譯運行成功

步驟五、分辨率

在 AppDelegate.cpp的 bool AppDelegate::applicationDidFinishLaunching() 方法裡,加上

CCEGLView::sharedOpenGLView()->setDesignResolutionSize(576,324,kResolutionNoBorder);即可解決分辨率適配問題。

其中,576,324 是筆者在win32設計遊戲時采用的寬度和高度,大傢改為自己所設置的寬高即可。kResolutionNoBorder是指在屏幕拉伸時采用的其中一種策略,保證拉伸後無邊界,但是設計時界面的邊緣部分可能在最後被遮蓋。筆者通過 “go to definition”操作找到瞭如下的定義。以下即是全部的適配策略瞭。

復制代碼

enum ResolutionPolicy
{
    // The entire application is visible in the specified area without trying to preserve the original aspect ratio.
    // Distortion can occur, and the application may appear stretched or compressed.
    kResolutionExactFit,
    // The entire application fills the specified area, without distortion but possibly with some cropping,
    // while maintaining the original aspect ratio of the application.
    kResolutionNoBorder,
    // The entire application is visible in the specified area without distortion while maintaining the original
    // aspect ratio of the application. Borders can appear on two sides of the application.
    kResolutionShowAll,

    kResolutionUnKnown,
};

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *