cocos2dx 2.2.2 android 编译配置(不用cygwin)

2023-10-26

必备安装环境:java jdk安装以及环境变量,python运行环境

cocos2dx 2.2.2版本是通过python脚本创建的,脚本位置:cocos2d-x-2.2.2\tools\project-creator\create_project.py;

这里可以写个批处理文件来方便创建;createProject.bat

@echo off
:label1
@cls
echo 欢迎使用Python创建Cocos2d-x工程
set /p project=请输入需要创建的工程名:
set /p aID=请输入需要创建的android版本包标识名:
echo 您输入的工程名为%project%
echo 您输入的android版本包标识名为%aID%
echo 确认创建工程吗?
CHOICE /C 123 /M "确认请按 1,取消请按 2,或者退出请按 3。"
echo %errorlevel%
if %errorlevel%==1 goto label2
if %errorlevel%==2 goto label1
if %errorlevel%==3 goto label3
:label2
echo 正在创建工程...
python create_project.py -project %project% -package %aID% -language cpp
:label3
pause

运行批处理,根据提示,创建出项目;

欢迎使用Python创建Cocos2d-x工程
请输入需要创建的工程名:test02
请输入需要创建的android版本包标识名:com.hugh.test
您输入的工程名为test02
您输入的android版本包标识名为com.hugh.test
确认创建工程吗?
确认请按 1,取消请按 2,或者退出请按 3。 [1,2,3]?1
1
正在创建工程...
proj.ios                : Done!
proj.android            : Done!
proj.win32              : Done!
proj.winrt              : Done!
proj.wp8                : Done!
proj.mac                : Done!
proj.blackberry         : Done!
proj.linux              : Done!
proj.marmalade          : Done!
proj.tizen              : Done!
New project has been created in this path: I:\cocosx\cocos2d-x-2.2.2\tools\proje
ct-creator/../../projects/test02
Have Fun!
请按任意键继续. . .

 

 那么在cocos2d-x-2.2.2\projects\test02\proj.android 目录已经生成了android项目

项目的c++文件类都在Classes目录下

需要把这些c++文件放到android项目的jni目录下

上面的main.cpp是先去项目生成时自动生成的,不能把win32项目的main.cpp拷到此处啊,这是java jni 调用相关的。

接下来把需要编译的所有类都加入到jni目录下的Android.mk文件里

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/AppDelegate.cpp \
                   ../../Classes/HelloWorldScene.cpp

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

LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static

include $(BUILD_SHARED_LIBRARY)

$(call import-module,cocos2dx)
$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)
$(call import-module,CocosDenshion/android)
$(call import-module,extensions)
$(call import-module,external/Box2D)
$(call import-module,external/chipmunk)

就是需要让程序知道我们的c++文件放在哪,这里我们可以改下:

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   hellocpp/AppDelegate.cpp \
                   hellocpp/HelloWorldScene.cpp

其实不改也行,文件上上层的Classes目录本来就有这些文件,只是要明白这个道理;

下面需要把cocos2dx对于android平台支持的代码拷到我们的工程项目里面,文件目录在cocos2d-x-2.2.2\cocos2dx\platform\android\java\src下;

 

org目录下的文件就是cocos2dx对android平台接口支持相关的,我们把它拷到项目的src目录下:

 到这里预备工作就做的差不多了,下面就可以用eclipse加载该项目了

当然项目肯定会报错,编译参数我们还没设呢!

首先我们得选定平台的sdk

确定后编辑器就生成了android项目所需要的gen目录了

对比下项目刚打开的样子,是不是生成了久违的gen目录啊 ,成功在望啊!

这时候项目的报错就不多了,我们看下:

这是项目编译报错,看到bash应该知道他是运行了错误的编译环境,bash 是linux的,我们看下配置确认下

是不是啊,运行的是linux下的脚本,我们得把它改成windows平台对应的就行。

我们把它改成I:\cocosx\android-ndk-r9d\ndk-build.cmd这个,用ndk-build.cmd来编译。

下面我们需要配几个参数了:

COCOS2DX 参数,设定cocos目录,I:\cocosx\cocos2d-x-2.2.2

NDK_ROOT参数,设定ndk目录,I:\cocosx\android-ndk-r9d

NDK_MODULE_PATH参数,设定ndk jni需要调用的目录,I:\cocosx\cocos2d-x-2.2.2;I:\cocosx\cocos2d-x-2.2.2\cocos2dx\platform\third_party\android\prebuilt

 

 还剩下一个参数了,直接上图:

好了,编译环境已经设立完了,我们清理下,看有没有报错:

看,已经没有报错了!接下来就处理资源了,还没忘吧!

android项目下没有自动生成assets目录,我们就只有手动创建该目录,然后把Resources目录下的资源拷过来

好了,接下了就去编译了!

这是一个漫长的过程!

看到这里,我们需要的库就已经编好了,接下来就打包了,这就没啥可讲的了。

好了,have fun!!!

 

转载于:https://www.cnblogs.com/lancao008/p/3675936.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cocos2dx 2.2.2 android 编译配置(不用cygwin) 的相关文章

  • 如何从 Play WSClient 的字符串创建 WSResponse 对象

    文档 https www playframework com documentation 2 4 x JavaTestingWebServiceClients Mock the web service建议使用模拟Web服务测试基于WSCli
  • android.view.InflateException:二进制 XML 文件行 #11:膨胀类 ImageView 时出错

    我只是尝试制作一个小的 android java xml 应用程序来计算游戏的分数 它给了我这个错误 Error inflateing class ImageView 有人知道解决方案吗 我实际上搜索了 ppl 说添加这个 android
  • 如何在 Java 中访问嵌套的 HashMap?

    我有一个 Java 中的 HashMap 其中的内容 你们可能都知道 可以通过以下方式访问 HashMap get keyname 如果一个 HashMap 位于另一个 HashMap 中 即嵌套的 HashMap 我将如何访问内容 我可以
  • 单元测试组合服务方法

    我正在为一个类编写 junit 单元测试 该类使用以下方法实现公开的接口 public Set
  • Java 读取大文本文件时出现 OutOfMemoryError

    我是 Java 新手 正在读取非常大的文件 需要一些帮助来理解问题并解决它 我们有一些遗留代码 必须对其进行优化才能正常运行 文件大小仅在 10mb 到 10gb 之间变化 只有当文件开始大小超过 800mb 时才会出现启动问题 Input
  • 在命令行java中突出显示文本[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一项任务是重新创建 unix cal 程序 除了一部分之外 相当简单 今天 它突出显示了该数字 我不知道该怎么做 关于如何在 Ja
  • Android WebView文件上传

    我正在开发一个 Android 应用程序 基本上它是一个WebView和一个进度条 Facebook 的移动网站 m facebook com 已加载到WebView 当我单击 选择文件 按钮上传图像时 没有任何反应 我已经尝试了所有的解决
  • 当 JMS Prod 位于辅助 POJO 类中时,如何在事务中包含 JMS Producer

    简短的问题 有没有办法强制无状态 EJB 调用的 POJO 存在于 EJB 的上下文中 以便事务和资源注入可以在 POJO 中工作 具体来说 在我想要做的事情的上下文中 如何在 EJB 的事务中包含 POJO JMS 生产者 该生产者在调用
  • 正则表达式在 Velocity 模板中不起作用

    我在 Test java 中尝试过这个 String regex lt s br s s gt String test1 lt br gt System out println test replaceAll regex 但是当我在速度模板
  • Android volley使用RequestFuture.get()时出现超时异常

    在我的片段中 我尝试使用 TMDB 的开放电影数据库来获取有关 正在播放 电影的详细信息 如果我使用 RequestFuture get time TimeUnit 方法来执行此齐射请求 我总是会收到超时错误 如果我在 Safari 中手动
  • LocalDate 减去 period 得到错误的结果

    LocalDate减去一个Period 如 28年1个月27天 得到错误的结果 但减去一个Period 只有天单位 如 10282 天 得到正确的结果 有什么需要注意的吗 public static void main String arg
  • java.lang.Object的hashCode具体使用的算法是什么

    中使用的算法是什么JVM实施java lang Object的隐含的hashCode 方法 OpenJDK or Oracle JDK答案中首选 它依赖于实现 并且在很大程度上 该算法是entirely取决于实施 只要它是一致的 但是 根据
  • 是否有最新的 Facebook Java SDK? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 好像没找到最近更新的 如果没有 是否有一个好的 Java 库来执行与 Facebook 的 API 交
  • 改变 Java 中凯撒移位的方向

    用户可以通过选择 1 向左或 2 向右移动字母来选择向左或向右移动 左边工作正常 右边不行 现在它显示了完全相同的循环 但我已经改变了所有 and 以不同的方式进行标记 最终我总是得到奇怪的字符 如何让程序将字符向相反方向移动 如果用户输入
  • MongoDB java 驱动程序 3.0 在身份验证时无法捕获异常

    我超级卡住o 0 在尝试通过 Java 驱动程序进行身份验证时 存在捕获异常的问题 正如你可能会看到的Throwable类不工作 private MongoClient mongoClient private MongoDatabase m
  • 使用 HTTPServletRequestWrapper 包装请求参数

    我有一个可以验证 授权 REST 调用的过滤器 该过滤器需要访问请求参数 因此我为此编写了一个自定义 HTTPServletRequestWrapper import java util Collections import java ut
  • Java8:流映射同一流中的两个属性

    我有课Model带有以下签名 class Model private String stringA private String stringB public Model String stringA String stringB this
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • Jackson 反序列化相当于 @JsonUnwrapped 吗?

    假设我有以下课程 public class Parent public int age JsonUnwrapped public Name name 生成 JSON age 18 first Joey last Sixpack 我如何将其反
  • 如何使用注释处理 Hibernate 和 Spring 中的连接查询?

    我正在使用 Spring 和 Hibernate 以及 MySQL 开发应用程序 我是 Hibernate 新手 完成了基本任务 现在我需要在选择查询中应用联接以使用注释从多个表中获取数据 我已经搜索过但仍然没有任何想法 这是我的数据库表和

随机推荐

  • Microsoft365与Office到底啥区别?如何选择下载安装哪个版本?

    Microsoft 365 是一种订阅服务 可确保你始终拥有最新的 Microsoft 新式生产力工具 存在针对家庭和个人 中小型企业 大型企业 学校以及非营利组织的 Microsoft 365 计划 适用于家庭和商业的 Microsoft
  • 如何做好“向上管理”

    mghio 读完需要 10分钟 速读仅需 4 分钟 0 什么是 向上管理 向上管理用一句话来描述就是 在工作中为了取得更好的工作成果 有意识地配合你的领导一起工作的过程 请注意这里的有意识这个词 1 为什么要 向上管理 首先先来看看领导眼中
  • pthread_mutex_lock用法

    条件变量 条件变量是利用线程间共享的全局变量进行同步的一种机制 主要包括两个动作 一个线程等待 条件变量的条件成立 而挂起 另一个线程使 条件成立 给出条件成立信号 为了防止竞争 条件变量的使用总是和一个互斥锁结合在一起 条件变量是利用线程
  • 9.1-深度生成模型

    文章目录 图像处理 创作 PixelRNN 练习生成模型 自动编码器 宝可梦生成 图像处理 创作 有关generation model 这里有一篇很好的reference 在这篇reference里开头引用Richard Feynman的话
  • 【Tool】制作多系统启动盘

    前言 我一个U盘 64G的 总不能只装一个ubuntu就不能用了吧 所以百度一大堆多系统启动盘的软件 太难搞了 我灵机一动 我512G的硬盘都能分为两个区分别做系统区和存储区 为什么u盘不能分好几个区装好几系统呢 步骤 思路 把系统盘文件复
  • java smtp怎么开启_java-一个简单的本地SMTP

    java 一个简单的本地SMTP 我想测试用于发送电子邮件的Java代码 我不想使用任何商业邮件客户端或连接到任何外部邮件提供商 例如Gmail或Yahoo 我想知道是否存在允许用户配置虚拟电子邮件地址和服务器 本地 的软件 这些软件可以在
  • mac编程提示 Undefined symbol: _OBJC_CLASS_$_xxxx

    使用cocoa编程 编译提示报错 Showing All Issues Undefined symbol OBJC CLASS NSAlert 解决办法 link Binary With Libraries 添加 Foundation fr
  • TNS-12542: TNS: 地址已被占用

    TNS 12542 TNS 地址已被占用 监听该对象时出错 DESCRIPTION ADDRESS PROTOCOL TCP HOST HKY PORT 1521 TNS 12560 TNS 协议适配器错误 TNS 00512 地址已在使用
  • rocketMq中文文档

    title 用户指引 date 2017 12 29 categories 文档翻译 为什么是RocketMQ 动机 在早期阶段 我们在ActiveMQ 5 x 早于5 3 的基础上构建我们的分布式消息中间件 我们的跨国业务使用它来实现异步
  • 将Go程序打包成Docker镜像

    将Go程序打包成Docker镜像 1 Go程序 hello go 文件的内容 package main import fmt func main fmt Println hello world 2 编写Dockerfile文件 FROM g
  • 练习:可迭代的对象和四个函数—— enumerate()、zip()、map()、filter()

    Python 官网 https www python org 这里 才 python 前沿 可惜是英文原版 所以 我要练习英文阅读 我的CSDN主页 My Python 学习个人备忘录 我的HOT博 自学并不是什么神秘的东西 一个人一辈子自
  • a标签的用法,base标签用法

    在前端开发中 经常会遇到 a标签 超链接 a 标签定义超链接 用于从一张页面链接到另一张页面 a 元素最重要的属性是 href 属性 它指示链接的目标 超链接 a href http www baid com target blank 跳转
  • Unity游戏项目_3D迷宫(游戏源码免费)

    目录 一 效果图 二 讲解 三 资源分享 总结 一 效果图 游戏开始界面 游戏画面 游戏结束界面 二 讲解 主要代码如下 1 链接代码 using System Collections using System Collections Ge
  • 浅拷贝与深拷贝

    目录 什么是拷贝 浅拷贝 前端浅拷贝方法 java后端深拷贝方法 深拷贝 前端深拷贝方法 java后端深拷贝方法 需要注意的事情 什么是拷贝 拷贝是指对对象进行复制的操作 是为了创建一个与原对象具有相同值的新对象 以便在不改变原对象的情况下
  • firewalld防火墙配置

    firewalld是自CentOS 7以来带有一个动态的 可定制而无需重新启动防火墙守护程序或服务 firewall cmd就是iptables nftable的前端 在CentOS 8中 nftables取代iptables成为默认的Li
  • python2安装模块出现Command “python setup.py egg_info“ failed with error code 1 in报错

    root jenkins 8f57b8495 4r8ws opt pip install gitpython 2 1 0 i https mirrors aliyun com pypi simple Collecting gitpython
  • Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应

    android有时候需要设置r g b分量的int值 如paint setARGB 255 127 255 212 就需要自己计算下分量的各个值 这里提供一个带有r g b分量的int型的颜色表 注意paint setAlpha 及pain
  • C++文件操作

    程序运行时产生的数据都属于临时数据 程序一旦运行结束都会被释放 通过 文件可以将数据持久化 C 中对文件操作需要包含头文件
  • windows服务器安全管理工具——IISCrypto

    查看服务器是否可以升为TLS1 2 网上有手动改注册表的方案 但这种方式万一误操作就不好了 所以还是建议使用软件修改 推荐下面这个软件 官方网站地址 https www nartac com Products IISCrypto 下载地址
  • cocos2dx 2.2.2 android 编译配置(不用cygwin)

    必备安装环境 java jdk安装以及环境变量 python运行环境 cocos2dx 2 2 2版本是通过python脚本创建的 脚本位置 cocos2d x 2 2 2 tools project creator create proj