cocos compile命令指定Android项目目录

2023-11-03

cocos2d-x(3.5)创建项目,会自动添加几个平台的目录,例如

  • proj.android
  • proj.ios

编译时执行命令:

cocos compile -p android -s ./my_project -m debug

编译命令指定平台为-p android的时候,只能进入proj.android目录去编译,我为了多个渠道共用大部分代码,只做少量区分,新增目录proj.android_xxx,就是没法进去编译。

因为编译命令里写死了就是proj.android。想改,奈何不懂python,只好慢慢看。

修改了两个py文件。


下次要编译proj.android_xxx目录下的项目,执行

cocos compile -p android -s xx/yy/my_project -m debug -f proj.android_xxx

就可以了


下面具体说一下修改的地方。我只修改了MacOS下的android平台部分。如果对于其他平台,或者其他操作系统,有需要改的,可以参考着修改。

tools/cocos2d-console/bin/cocos.py

CCPlugin

  • parse_args方法

    • 添加一个参数

      parser.add_argument("-f", "--folder", dest="folder", help="specify a custom android project folder")

      这样我就可以在命令里通过-f指定android项目的目录名称,而不是只能使用默认的proj.android了。

    • 传递参数

      self._project = cocos_project.Project(os.path.abspath(args.src_dir), args.folder)
      

      这个方法是创建Project对象,原本只有第一个参数,第二个是我加的(args.folder),就是指定的目录,可能为None

tools/cocos2d-console/bin/cocos_project.py

Project

  • __init__方法

    def __init__(self, project_dir, specified_project_dir = None):
        # parse the config file
        self.info = self._parse_project_json(project_dir)
        self.specified_project_dir = specified_project_dir

    原本只有前两个参数,我添加了第三个参数specified_project_dir,并储存起来。

PlatformConfig

  • __init__方法

    def __init__(self, proj_root_path, is_script, cfg_info = None, specified_project_dir = None):
        self._specified_project_dir = specified_project_dir
        ...

    同样在最后添加了参数specified_project_dir,并储存起来。

AndroidConfig类(是PlatformConfig的派生类)

  • _use_default方法

    if self._specified_project_dir:
        self.proj_path = os.path.join(self._proj_root_path, self._specified_project_dir)
    else:
        self.proj_path = os.path.join(self._proj_root_path, "proj.android")

    原本只有else分支中的代码。现在用if-else区分了一下,使用指定目录,或使用默认目录。

Platforms

  • _gen_available_platforms方法

    if proj_info.has_key(cfg_key):
       if self._project.specified_project_dir:
           cfg_obj = cfg_class(root_path, self._project._is_script_project(), proj_info[cfg_key], self._project.specified_project_dir)
       else:
           cfg_obj = cfg_class(root_path, self._project._is_script_project(), None, self._project.specified_project_dir)

    关于cfg_class,当指定了平台的时候,比如android,就对应到了AndroidConfig类,而它又是PlatformConfig类的派生类。

    这里的if-else分支是本来就存在的,我在两个分支的cfg_class的创建方法里(正是PlatformConfig类的初始化方法),加上了参数specified_project_dir,这样最开始命令指定的目录就在AndroidConfig类的_use_default方法中,成功指定了android项目的目录。

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

cocos compile命令指定Android项目目录 的相关文章

  • c/c++linux后台服务器开发如何提升?(路线图已备好)

    随着业务市场的不断壮大 更便捷的开发语言也越来越受到市场的欢迎 Java python还有新贵golang 那c c 语言的开发者市场在哪里 虽然说没有活干说的可能过于夸张 但是面临的事实就是比不了 可能初学一点Java python等等就
  • 将NFA变成最小化DFA的方法

    学习的时候总感觉这个遇到新的题目不会做 这里总结一下 整个流程是这样的 我们直接来看一个例子 使用上面的算法来实现我们最后的目标 a b ba ab 我们先来画NFA 明确 开始状态和接受状态 终结状态要画两个圈 值得注意的是 由于 也可以
  • netron可视化

    1 netron简介 在很多项目中 经常会遇到各种网络模型 在学习的过程中 我们需要快速去了解这些结构 若只是单纯的看模型文件 很难了解其结构 netron可视化工具 可以清晰的看看见每一层的输入输出 网络总体的架构 而且还能支持各种网络框
  • API接口安全加密,防止接口被黑客攻击

    API接口安全加密的主要目的是为了防止黑客攻击 保护敏感数据不被泄露 以下是一些常用的API接口安全加密方式 HTTPS协议 使用HTTPS协议可以对数据进行传输加密 防止数据在传输过程中被窃听或篡改 API密钥认证 API密钥认证是指在每
  • 关键字constexpr(C++)

    关键字constexpr是在C 11中引入的 并且在C 14中得到了改进 像const一样 它可以应用于变量 当任何代码试图去修改该值时 都会引发编译器错误 与const不同 constexpr也可以应用于函数和类构造函数 constexp
  • 第13届CCF-CSP题解

    文章目录 Less 1 出现最多的数 Less 2 ISBN号码 Less 3 最大矩形 Less 4 有趣的数 Less 5 dfs Less 1 出现最多的数 直接根据题意模拟 include
  • 【yolov6系列一】深度解析网络架构

    在yolov5霸屏计算机视觉领域很久时 六月处美团开源了yolov6 并号称在精度和速度上均超越其他同量级的计算机视觉模型 刚刚瞅了一眼 star已经超过2 8k 脑子里莫名冒出一个词 国货之光 网上基于yolov6的解读有很多 文末会附上
  • Kmeans简单实现

    一 KMeans算法实现代码 class KMeans def init self data k clustres self data data self k clustres k clustres def train self max i
  • 基于 python 的数据库简单开发实验

    基于 python 的简单数据库应用程序开发总结 前言 在大三上数据库课时需要做基于数据库的 C S 和 B S 的简单应用 对之前一直接触命令行黑框框的笔者来说 需要临时学习不少新的技术 实际最后的开发非常简单 只是在前期选定技术和查找文
  • (1)密码学之RSA算法

    开始前先讲一下对称加密算法和公钥加密算法 我不喜欢叫非对称加密算法 这使我想起那个被问MD5算法属于对称还是非对称的恐惧 对称加密算法 1 甲方选择某一种加密规则 对信息进行加密 2 乙方使用同一种规则 对信息进行解密 公钥加密算法 1 乙
  • oracle 整理表 碎片,Oracle数据库表空间碎片的查询和整理方法

    一 查看表空间碎片的方法 1 查看fsfi值 select a tablespace name trunc sqrt max blocks sum blocks 100 sqrt sqrt count blocks 2 fsfi from
  • php+redis实现消息队列

    个人理解在项目中使用消息队列一般是有如下几个原因 把瞬间服务器的请求处理换成异步处理 缓解服务器的压力 实现数据顺序排列获取 redis实现消息队列步骤如下 1 redis函数rpush lpop 2 建议定时任务入队列 3 创建定时任务出
  • 目标检测mAP计算详解

    首先说明计算mAP有多个版本 每个数据集和比赛用的版本和方式也不同 下以VOC与COCO举例说明 精确度 precision 召回率 recall 分别为 常规的mAP计算为 这是一个N类检测任务 1 计算单张图片中class1的精度P V
  • Mac启动磁盘已满怎么办?Mac启动磁盘已满怎么清理?

    如果你的Mac电脑经常弹出窗口 您的启动盘几乎已经满了 这说明你的Mac硬盘空间严重不足了 清理各种不必要的垃圾可以释放一些空间 那么Mac启动磁盘已满怎么清理 下面为大家带来几点非常实用的Mac启动磁盘清理技巧 学会这些对你使用Mac电脑
  • 若依(ruoyi)代码生成树表结构的那些坑

    相信许多做后端开发的同学 一定用过若依这款框架 这款框架易上手 适合用来做后台管理系统 但是其中也存在一些坑 稍不注意就会中招 大佬可以忽略 今天 我们说的是若依的代码生成 树结构表 话不多说 直接看图说话 1 项目正常运行 成功登录之后
  • JS 对象和函数

    目录 一 对象 创建对象的四种方式 构造函数原型对象prototype和对象原型 proto 二 函数 创建函数的3种方式 一 对象 创建对象的四种方式 第一种方式 字面量 var o1 name o1 var o2 new Object
  • STM32F103C8用内部Flash做一个优盘(USB+MSC+FATFS)

    STM32F103C8用内部Flash做一个优盘 USB MSC FATFS 轻松实现APP升级 数据存储 基本工程生成 直接使用STM32CubeMX生成基本的工程 省得我们去调底层 时钟配置为外部8MHz晶振 这个需要根据自己开发板的晶
  • Python爬虫教程:爬取800多所大学学校排名、星级等

    前言 国内大学最新排名 北大反超 浙大仅第四 中科大跌至第八 时隔五年 双一流 大学即将迎来首次大考 这也是继改变高校评断标准之后 第一次即将以官方对外发布 自然是引来了许多人的关注 最近 有许多不同机构发布的国内高校排名 但彼此之间的差异
  • 自我理解:TCP和UDP、HTTP、进程和线程

    一 TCP和UDP 1 什么是TCP和UDP TCP是面向连接的协议 发送数据前要建立连接 TCP提供的是可靠传输 UDP是无连接的协议 发送数据前不需要建立连接 是不可靠传输 2 TCP和UDP的区别 TCP是面向连接的协议 发送数据前要
  • 晟元协议指纹头,单片机开发踩坑指南

    一 硬件说明 1 接口 注意 其中Touch VCC 3 3V是需要常供电的 用于Touch Out触摸唤醒供电 VDD3 3V可以检测到Touch Out高电平信号再上电 如果不需要低功耗设计 可以忽略Touch Out和Touch VC

随机推荐

  • Arduino(六)——蜂鸣器唱歌

    进行这节课需要了解一个函数 1 tone pin frequency Duration 在我们的pin脚上 也就是我们的蜂鸣器上所连的脚 产生的一定频率frequency unsigned int hz 的方波信号 占空比一半 如果不再需要
  • 解决AppData/Local/Microsoft/WindowsApps/python: Permission denied

    先说一下原因 windows更新导致 path路径下多了下面这个路径的配置所以出问题 这2个文件导致 解决方案 让正确的pathon exe位于windows制定的python上方 如下图所示
  • Kubernetes高可用动态存储NFS集群

    文章目录 安装NFS服务 安装keepalived 安装Rsync Inofity 设置Rsync Inotify自动同步 Master节点服务器操作 Slave节点服务器操作 K8s部署NFS Provisioner 创建一个Servic
  • 2021年 年终总结

    不知道你们写这个类似年终总结的时候是怎么打开思路的 每年到这个时候 心里总是想着晚两天再写吧 一直拖到快到31号了才开始 动笔 一般都会打开手机相册 看看这一年从一月一号开始都记录了什么 或者生活日常 或者美食 或者自恋自拍 或者在路上 今
  • Java中double,float类型比较大小或相等的方法-soanr扫描问题Floating point numbers should not be tested for equality

    由于在二进制表示中存储这些值的挑战 浮点数学是不精确的 更糟糕的是 浮点数学不是关联的 推动float或double通过一系列简单的数学运算 由于每个步骤发生的舍入 答案将根据这些操作的顺序而不同 即使是简单的浮点赋值也不简单 float
  • Tik Tok月活12亿 Tiktok和抖音有什么不同 ?

    Tik Tok月活12亿 Tiktok和抖音有什么不同 哈喽大家好 我是项柚 目前从事Tiktok从事2年 首先 我先给大家抛一个对比数据图 国内抖音和tiktok的用户区别以及月活量分布 国内抖音月活量是4个亿左右 tiktok国际抖音月
  • MySQL 服务正在启动 . MySQL 服务无法启动 服务没有报告任何错误 解决方案

    方法一 1 找到MySQL的安装目录 将data删除 注意该文件下会有一些你自己建立的数据库的数据 2 然后复制bin文件的路径 3 从开始里搜索cmd 右键以管理员身份运行 否则会出如下错误Install Remove of the Se
  • 计算机竞赛 深度学习 YOLO 实现车牌识别算法

    文章目录 0 前言 1 课题介绍 2 算法简介 2 1网络架构 3 数据准备 4 模型训练 5 实现效果 5 1 图片识别效果 5 2视频识别效果 6 部分关键代码 7 最后 0 前言 优质竞赛项目系列 今天要分享的是 基于yolov5的深
  • pnpm安装报错npm ERR code EEXIST

    pnpm安装报错 C Users admin working gt npm install g pnpm C Program Files nodejs pnpm gt C Program Files nodejs node modules
  • 高效程序员工作法(一)

    目录 前言 一 高效程序员的思考框架 思考框架 四个思考原则 以终为始 任务分解 沟通反馈 自动化 一句话总结 二 以终为始 如何让你的努力不白费 一句话总结 三 DoD的价值 你完成了工作 为什么他们还不满意 一句话总结 四 接到需求任务
  • java中map的几种常用实现类

    java为数据结构中的映射定义了一个接口java util Map 他实现了四个类 分别是 HashMap HashTable LinkedHash MapTreeMap Map不允许键重复 但允许值重复 1 HashMap 最常用的Map
  • Hbase建表操作--shell语句

    一 介绍 HBase是一个分布式的 面向列的开源数据库 源于google的一篇论文 bigtable 一个结构化数据的分布式存储系统 HBase是Google Bigtable的开源实现 它利用Hadoop HDFS作为其文件存储系统 利用
  • 机器学习之聚类算法:K均值聚类(二、算法案例)

    一 简易数据集的Kmeans实现 数据下载 提取码 quu3 导入库并载入数据 import numpy as np import matplotlib pyplot as plt 载入数据 data np genfromtxt kmean
  • 使用遗传算法解决多变量函数优化问题!

    很多朋友在碰到多变量值优化的问题的时候不能很好的将问题转化 利用有效编码的方法将解的个数 解的编码很好的很合理的进行设计 因此不能利用遗传算法进行问题的求解 其实 简单的来说 就是将多个变量的数值编码编排进去 进行组合 只需要增长基因个体的
  • python 如何合并多个dict

    a a 1 b 1 b a 2 b 2 c c 3 result dict tmp str result result update a print update format tmp a result tmp str result res
  • 06.网页布局

    布局方式 1 固定宽度布局 为网页设置一个固定的宽度 通常以px做为长度单位 常见于PC端网页 2 流式布局 为网页设置一个相对的宽度 通常以百分比做为长度单位 3 栅格化布局 将网页宽度人为的划分成均等的长度 然后排版布局时则以这些均等的
  • Qt中动态增加或移除QButtonGroup(按钮组)中指定子button(按钮)

    首先从QButtonGroup移除全局子button比较容易 直接remove就行 但是如果我们是动态往QButtonGroup中移除指定的子button 则相对比较麻烦 动态往QButtonGroup中增加子button QButtonG
  • zlib包的下载

    zlib包下载地址 http www zlib net 这里注意很多帖子都是直接给了具体的连接 比如 wget http www zlib net zlib 1 2 8 tar gz 然后 所以 这里不宜生搬硬套 直接去官网上看 源码地址
  • SpringBoot整合Zookeeper做分布式锁

    环境准备 zookeeper准备 首先你需要一个zookeeper服务器 或者是一个zookeeper集群 我已经准备好了一个zookeeper集群 如图 当然一个单节点的zookeeper也可以搭建分布式锁 如果你还没有zookeeper
  • cocos compile命令指定Android项目目录

    cocos2d x 3 5 创建项目 会自动添加几个平台的目录 例如 proj android proj ios 编译时执行命令 cocos compile p android s my project m debug 编译命令指定平台为