一、下载所需软件

Java SDK   http://www.oracle.com/technetwork/java/javase/downloads/index.html  Windows x64

Eclipse  http://www.eclipse.org/downloads/packages/  Eclipse IDE for Java EE Developers  Windows x64

Android SDK  http://developer.android.com/sdk/index.html

Android NDK  http://developer.android.com/tools/sdk/ndk/index.html

Python

Cocos2dx

二、配置环境变量



新建变量

NDK_ROOT = 

ANDROID_SDK_ROOT = 

JAVA_HOME = 

CLASS_PATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;



在系统的Path变量最后增加 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;;C:\Python27; 改为详细路径

PATHEXT中增加  .PY;



三、编译SO文件

解压Cocos2dx3.0。使用Tool中的create_project.py创建工程

改动project下的jni/Android.mk文件内容

LOCAL_PATH := $(call my-dir)



include $(CLEAR_VARS)



#当前模块名

LOCAL_MODULE := cocos2dcpp_shared

#当前模块编译的文件名称

LOCAL_MODULE_FILENAME := libcocos2dcpp



# 开启C++11和多线程支持

LOCAL_CPPFLAGS:=-std=c++11 -pthread

# 遍历文件夹及子文件夹的函数

define walk

$(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))

endef



# 遍历Classes文件夹

ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes)

FILE_LIST := hellocpp/main.cpp

# 从全部文件里提取出全部.cpp文件

FILE_LIST += $(filter %.cpp, $(ALLFILES))

LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)

# 全部头文件文件夹(改动你自己的文件夹)

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \

$(LOCAL_PATH)/../../Classes/Animation \

$(LOCAL_PATH)/../../Classes/Combat \

$(LOCAL_PATH)/../../Classes/GameEvent \

$(LOCAL_PATH)/../../Classes/GameState \

$(LOCAL_PATH)/../../Classes/LuaGameAPI \

$(LOCAL_PATH)/../../Classes/Map \

$(LOCAL_PATH)/../../Classes/PathSeeker \

$(LOCAL_PATH)/../../Classes/Role \

$(LOCAL_PATH)/../../cocos2d/external/lua/tolua \

$(LOCAL_PATH)/../../cocos2d/extensions \

$(LOCAL_PATH)/../../cocos2d/cocos/scripting/lua/bindings





LOCAL_STATIC_LIBRARIES := curl_static_prebuilt

# 引用的静态库

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static

LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static

LOCAL_WHOLE_STATIC_LIBRARIES += cocos_lua_static

include $(BUILD_SHARED_LIBRARY)

# 包括的模块文件(相应的文件夹名下有Android.mk)

$(call import-module,2d)

$(call import-module,audio/android)

$(call import-module,scripting/lua/bindings)

#导入自己的库(这个是server的网络库。路径我是放到了2d文件夹一个层级,然后自己写mk)

$(call import-module,protocol)





改动Application.mk

NDK_TOOLCHAIN_VERSION:=4.8

APP_STL := gnustl_static

# APP_STL := stlport_static

APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCOCOS2D_DEBUG=1 -std=c++11 -fsigned-char -fpermissive

APP_ABI    := armeabi

用build_native.py编译so文件

期间改动错误





四、编译apk

打开Eclipse,Import项目下的proj.android和cocos2d/cocos/2d/platform/android/java

然后复制cocos2d3.0(注意,不是项目的。而是原始下载的cocos2d-x3.0文件夹,我也不知道为什么)下的

cocos\2d\platform\android\java\src\org\cocos2dx的lib目录

到我们project的

proj.android\src\org\cocos2dx下





然后在project属性Java Build Path中Libraries选项卡中删除多余的两项

编译。执行







五、注意事项

假设有Lua的话,须要注意下安卓和win32执行Lua的方式不同(坑!!

!)

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

CCString* pstrFileContent = CCString::createWithContentsOfFile("script/main.lua");

if (pstrFileContent)

{

pEngine->executeString(pstrFileContent->getCString());

}

#else

string path = FileUtils::getInstance()->fullPathForFilename("script/main.lua");

pEngine->addSearchPath(path.substr(0, path.find_last_of("/")).c_str());

string sub = path.substr(0, path.find_last_of("/")) + "/GameState";

pEngine->addSearchPath(sub.c_str());

pEngine->executeScriptFile(path.c_str());

#endif





并且在Lua中的require要写绝对路径

比方在asserts中有个scripts文件夹,里面有个Test.lua脚本

我们要在main.lua中

require "scripts/Test"

才行。包含绝对路径

另外,宏定义不能用## ,仅仅能用一个#

Cocos2d-x移植安卓的笔记的更多相关文章

  1. 安卓开发笔记——深入Activity

    在上一篇文章<安卓开发笔记——重识Activity >中,我们了解了Activity生命周期的执行顺序和一些基本的数据保存操作,但如果只知道这些是对于我们的开发需求来说是远远不够的,今天我 ...

  2. 安卓开发笔记——自定义广告轮播Banner(实现无限循环)

    关于广告轮播,大家肯定不会陌生,它在现手机市场各大APP出现的频率极高,它的优点在于"不占屏",可以仅用小小的固定空位来展示几个甚至几十个广告条,而且动态效果很好,具有很好的用户& ...

  3. 安卓第六天笔记--ListView

    安卓第六天笔记--ListView 1.AdapteView AdapteView 继承ViewGroup它的本质是容器 AdapterView派生了3个子类: AbsListView AbsSpin ...

  4. 安卓开发笔记——丰富多彩的TextView

    随手笔记,记录一些东西~ 记得之前写过一篇文章<安卓开发笔记——个性化TextView(新浪微博)>:http://www.cnblogs.com/lichenwei/p/4411607. ...

  5. 安卓开发笔记——关于开源项目SlidingMenu的使用介绍(仿QQ5.0侧滑菜单)

    记得去年年末的时候写过这个侧滑效果,当时是利用自定义HorizontalScrollView来实现的,效果如下: 有兴趣的朋友可以看看这篇文件<安卓开发笔记——自定义HorizontalScro ...

  6. 安卓开发笔记——打造万能适配器(Adapter)

    为什么要打造万能适配器? 在安卓开发中,用到ListView和GridView的地方实在是太多了,系统默认给我们提供的适配器(ArrayAdapter,SimpleAdapter)经常不能满足我们的需 ...

  7. 安卓开发笔记——关于Handler的一些总结(上)

    接上篇文章<安卓开发笔记——关于AsyncTask的使用>,今天来讲下在安卓开发里"重中之重"的另一个异步操作类Handler. 今天打算先讲下关于Handler的一些 ...

  8. 安卓开发笔记——Fragment+ViewPager组件(高仿微信界面)

    什么是ViewPager? 关于ViewPager的介绍和使用,在之前我写过一篇相关的文章<安卓开发复习笔记——ViewPager组件(仿微信引导界面)>,不清楚的朋友可以看看,这里就不再 ...

  9. 安卓学习笔记---Activity

    由于学期实训的要求,我开始学习安卓了.从本月一号开始,学了五天了.时间短,刚学到的东西容易忘,我记一下笔记. 首先是对Activity的理解.activity首先是一个java类,我们创建一个新的ac ...

随机推荐

  1. 九度oj 题目1363:欢乐斗地主

    题目描述: 如果大家玩过欢乐斗地主这个游戏,就一定知道有一个具有“提示”功能的按钮.如果你不知道你现在手里的牌有没有比上家大的牌,并且你也懒得去一张一张地看你手中的牌.这时候你就可以点“提示”按钮,系 ...

  2. Welcome-to-Swift-13继承(Inheritance)

    一个类可以继承(inherit)另一个类的方法(methods),属性(property)和其它特性.当一个类继承其它类时,继承类叫子类(subclass),被继承类叫超类(或父类,superclas ...

  3. [SDOI2013]直径 (树的直径,贪心)

    题目链接 Solution 我们直接找到一条直径 \(s\),起点为 \(begin\),终点为 \(end\). 从前往后遍历点 \(u\) ,若子树中最大的距离与 \(dis(u,begin)\) ...

  4. java面试题之BIO、NIO、AIO的应用场景

    定义: 1.BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时,服务器就启动一个线程来处理,如果这个连接不处理任何事情会造成不必要的线程开销,可以通过线程池机制改善. 2.NI ...

  5. 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作(转)

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

  6. Redis Cluster 集群的实现和管理

    系统环境 CentOS 7 集群规划 在一台物理机(实际部署应当分散到多个物理机上),创建6个Redis节点,其中3个主节点.3个从节点. 节点表: IP 端口 主从 路径 192.168.1.21 ...

  7. net6:用户添加到角色和移出角色,角色的创建与删除等Roles与Membership的使用

    原文发布时间为:2008-07-30 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...

  8. Error querying database找不到数据库的错误可能发生的原因..

    这个问题纠结了大概两个小时.原因是这样的,我刚刚换了一台新的电脑,准备把以前电脑上自己搭建的小项目放到新电脑上面,用myeclipse引入项目之后,启动项目在浏览器跑起来.然后输入账号密码登录主页,报 ...

  9. Django迁移数据库

    我们已经编写了博客数据库模型的代码,但那还只是 Python 代码而已,Django 还没有把它翻译成数据库语言,因此实际上这些数据库表还没有真正的在数据库中创建 为了让 Django 完成翻译,创建 ...

  10. ajax 分页(jquery分页插件pagination) 小例3

    <#macro ajaxPaginte url > <script type="text/javascript"> var PageSize = 10;// ...