Cocos2d-x移植安卓的笔记
一、下载所需软件
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移植安卓的笔记的更多相关文章
- 安卓开发笔记——深入Activity
在上一篇文章<安卓开发笔记——重识Activity >中,我们了解了Activity生命周期的执行顺序和一些基本的数据保存操作,但如果只知道这些是对于我们的开发需求来说是远远不够的,今天我 ...
- 安卓开发笔记——自定义广告轮播Banner(实现无限循环)
关于广告轮播,大家肯定不会陌生,它在现手机市场各大APP出现的频率极高,它的优点在于"不占屏",可以仅用小小的固定空位来展示几个甚至几十个广告条,而且动态效果很好,具有很好的用户& ...
- 安卓第六天笔记--ListView
安卓第六天笔记--ListView 1.AdapteView AdapteView 继承ViewGroup它的本质是容器 AdapterView派生了3个子类: AbsListView AbsSpin ...
- 安卓开发笔记——丰富多彩的TextView
随手笔记,记录一些东西~ 记得之前写过一篇文章<安卓开发笔记——个性化TextView(新浪微博)>:http://www.cnblogs.com/lichenwei/p/4411607. ...
- 安卓开发笔记——关于开源项目SlidingMenu的使用介绍(仿QQ5.0侧滑菜单)
记得去年年末的时候写过这个侧滑效果,当时是利用自定义HorizontalScrollView来实现的,效果如下: 有兴趣的朋友可以看看这篇文件<安卓开发笔记——自定义HorizontalScro ...
- 安卓开发笔记——打造万能适配器(Adapter)
为什么要打造万能适配器? 在安卓开发中,用到ListView和GridView的地方实在是太多了,系统默认给我们提供的适配器(ArrayAdapter,SimpleAdapter)经常不能满足我们的需 ...
- 安卓开发笔记——关于Handler的一些总结(上)
接上篇文章<安卓开发笔记——关于AsyncTask的使用>,今天来讲下在安卓开发里"重中之重"的另一个异步操作类Handler. 今天打算先讲下关于Handler的一些 ...
- 安卓开发笔记——Fragment+ViewPager组件(高仿微信界面)
什么是ViewPager? 关于ViewPager的介绍和使用,在之前我写过一篇相关的文章<安卓开发复习笔记——ViewPager组件(仿微信引导界面)>,不清楚的朋友可以看看,这里就不再 ...
- 安卓学习笔记---Activity
由于学期实训的要求,我开始学习安卓了.从本月一号开始,学了五天了.时间短,刚学到的东西容易忘,我记一下笔记. 首先是对Activity的理解.activity首先是一个java类,我们创建一个新的ac ...
随机推荐
- 常见shell脚本命令整理
1.cat /dev/null > test.txt txt的文件内容被清空. 2.ls | xargs rm 目录中大量文件的删除 3.查看文件夹下文件个数 ls | wc -w 查看有多少个 ...
- deque 类
题外: 'A' +1='B' 1.deque被称为双端队列,它也是一种顺序容器.可通过迭代器存取元素 ,也可以通过下标顺序 存取元素 for(i=0;i<d1.size();i++) { cou ...
- Kafka介绍 (官方文档翻译)
摘要:Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. 这种动 ...
- 北京集训TEST12——PA( Mortal Kombat)
题目: Description 有一天,有N个外星人企图入侵地球.地球派出全球战斗力最强的M个人代表人类对抗外星人.根据外星的战斗规则,每个外星人应该分别与一名地球人对战(不同的外星人要与不同的地球人 ...
- 【CF696B】Puzzles(树形DP,期望)
题意:n 个节点的树,初始位置为 1 号节点,初始时间为 1.每次随机地走向任何一个没有走过的子树并且令时间 +1求问走到每一个点时的时间的期望值 思路:比较少见的一道自顶向下的树形DP dp[i]表 ...
- net2:DropDownList的使用
原文发布时间为:2008-07-29 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- 关于记忆力:遵从一些原则,自省增加经验,there is a way out of almost everything
年轻人记忆力减退的原因不同于老年人,由疾病所引起的占极少数,一般都是由于学习生活等因素造成精神高度紧张或连续用脑过度使神经疲劳所致. 学会科学的分析和考虑问题的方法,对提高记忆力来说是最为首要的. 保 ...
- ubuntu16.04安装ibus中文输入法
按照网上给的安装方法,没成功,在切换ibus的时候总是报错,记录下解决办法. 安装语言包 System Settings–>Language Support–>Install/Remove ...
- Perl语言入门--3--perl的控制结构
表达式真假值总结: 表达式不一定是逻辑表达式,但一定要得出真假值 假值:逻辑值为假 值为0 字符串为空 列表为空 undef 其他情况为真 1.if {} elsif {} else {} 2.u ...
- Sort colors系列
75. Sort Colors 问题描述: 给一个包含n个数字的数组,其中有0,1,2:排序使得所有相同的数字相邻,且按照0,1,2的顺序. 思路: (1)计数排序: 需要扫两遍数组,一遍统计个数,第 ...