(1) 在E 盘下面新建文件夹InverseWar 这个文件夹。
(2) 先建立Android WorkSpace到这个目录,然后新建AndroidTencent工程
(3) 然后在VS中新建InverseWar项目到这个目录,即在VS中新建项目时,项目文件夹选E:\ 。然后VS本来要新建InverseWar目录的,但是已经存在了,就直接把项目文件放到InverseWar中了。
这样Android和VS 工程就在同一个文件夹,和公司现在游戏结构一样了。
下面新建VS工程,新建InverseWar工程完毕之后设置Cocos2d的环境变量。
Cocos2d
E:\Cocos2d-X\cocos2d-2.1rc0-x-2.1.2
然后把项目的环境变量中Cocos2d的目录用环境变量来代替。
.;
..\Classes;
$(Cocos2d)\cocos2dx;
$(Cocos2d)\cocos2dx\include;
$(Cocos2d)\cocos2dx\kazmath\include;
$(Cocos2d)\cocos2dx\platform\win32;$(Cocos2d)\cocos2dx\platform\third_party\win32;
$(Cocos2d)\cocos2dx\platform\third_party\win32\OGLES;
$(Cocos2d)\external;
$(Cocos2d)\CocosDenshion\include;%(AdditionalIncludeDirectories)
设置连接器库目录
$(Cocos2d)\Debug.win32
现在程序编译通过了。但是运行不起来,因为debug文件夹下面没有dll和lib。
把E:\Cocos2d-X\cocos2d-2.1rc0-x-2.1.2\Debug.win32 里面的所有的dll拷贝到E:\InverseWars\proj.win32\Debug.win32 里面就OK了。
建议大家直接在Cocos2d-x项目目录下面新建工程,这样调试的时候可以直接看Cocos2d的代码,而且不用上面的任何一步设置……
下面开始移植Android
上面已经新建了名为Android的安卓项目,把 E:\Cocos2d-X\cocos2d-2.1rc0-x-2.1.2\cocos2dx\platform\android\java\bin\libcocos2dx.jar 拷贝到AndroidTencent项目的libs文件夹,这是Cocos2d-x的库。
然后从HelloCpp项目下面拷贝jni文件夹到AndroidTencent项目下面。
修改Android.mk
LOCAL_PATH := $(call my-dir)
$(call import-add-path, E:\Cocos2d-X\cocos2d-2.1rc0-x-2.1.2) \
$(call import-add-path, E:\Cocos2d-X\cocos2d-2.1rc0-x-2.1.2\cocos2dx\platform\third_party\android\prebuilt) \
include $(CLEAR_VARS)
LOCAL_MODULE := InverseWars_shared
LOCAL_MODULE_FILENAME := libInverseWars
LOCAL_SRC_FILES := jni.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \
$(Cocos2d)/cocos2dx \
$(Cocos2d)/cocos2dx/include \
$(Cocos2d)/cocos2dx/kazmath/include \
$(Cocos2d)/cocos2dx/platform/android \
$(Cocos2d)/cocos2dx/platform/third_party/android \
$(Cocos2d)/external \
$(Cocos2d)/CocosDenshion\include \
$(Cocos2d)/CocosDenshion\android \
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,CocosDenshion/android) \
$(call import-module,cocos2dx) \
$(call import-module,extensions)
好像cocos2dx、cocosdenshion、box2d都是STATIC_LIBRARY,所以
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static
刚才因为没有加上cocosdenshion_static而一直报错,undefined reference to CocosDenshion。。。
Application.mk 要注意加上
APP_PLATFORM := android-8
转到AndroidTencent工程。
简单的源代码:
package com.example.androidtencent;
import android.os.Bundle;
import org.cocos2dx.lib.Cocos2dxActivity;
public class MainActivity extends Cocos2dxActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
static
{
System.loadLibrary("InverseWars");
}
}
最后注意要把项目的Resources文件夹里面的资源都拷贝到AndroidTencent里面的Assest里面。
Android 全屏的方法:
在AndroidManifest.xml中设置
<activity
android:name="com.example.androidtencent.MainActivity"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="orientation">