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) 的相关文章

  • Java 中等效的并行扩展

    我在 Net 开发中使用并行扩展有一些经验 但我正在考虑在 Java 中做一些工作 这些工作将受益于易于使用的并行库 JVM 是否提供任何与并行扩展类似的工具 您应该熟悉java util concurrent http java sun
  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • 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