cocos2dx3.8 android打包脚本编写
cocos集成了打包命令 cocos compile -p android
在这里并没有采用这个方案,而是编写自己的脚本, 理由如下
- 脚本掌握在自己手中可以第一时间解决和发现bug
- 游戏项目总会出现各种各样定制的需求,官方不可能给出全部的解决方案
为了便于管理和扩展 我们在项目根目录下新建了两个文件夹
- build/android:打包脚本目录,
- publish/android:apk输出目录
android的打包分两步:
- 编译so
- 生成apk
so的编译脚本
#!/usr/bin/env bash# set .bash_profile or .profile if [ -f ~/.bash_profile ]; then PROFILE_NAME=~/.bash_profile else PROFILE_NAME=~/.profile fi source $PROFILE_NAMEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" APP_ROOT="$DIR/../../.." APP_ANDROID_ROOT="$DIR" export COCOS2DX_ROOT=$DIR/../../cocos2d-x export NDK_DEBUG=1echo "- config:" echo " NDK_ROOT = $NDK_ROOT" echo " COCOS2DX_ROOT = $COCOS2DX_ROOT" echo " APP_ROOT = $APP_ROOT" echo " APP_ANDROID_ROOT = $APP_ANDROID_ROOT"echo "- cleanup" find "$APP_ANDROID_ROOT" -type d | xargs chmod 755 $1 if [ -d "$APP_ANDROID_ROOT"/bin ]; thenrm -rf "$APP_ANDROID_ROOT"/bin/*.apk fi mkdir -p "$APP_ANDROID_ROOT"/bin chmod 755 "$APP_ANDROID_ROOT"/binif [ -d "$APP_ANDROID_ROOT"/assets ]; thenrm -rf "$APP_ANDROID_ROOT"/assets/* fi mkdir -p "$APP_ANDROID_ROOT"/assets chmod 755 "$APP_ANDROID_ROOT"/assets# build echo "Using prebuilt externals" "$NDK_ROOT"/ndk-build $ANDROID_NDK_BUILD_FLAGS NDK_DEBUG=$NDK_DEBUG $NDK_BUILD_FLAGS -C "$APP_ANDROID_ROOT" $* \ "NDK_MODULE_PATH=${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos:${COCOS2DX_ROOT}/external:${COCOS2DX_ROOT}/cocos/scripting"
apk的生成脚本: 首先拷贝资源(可根据实际渠道拷贝不同的资源) 代码(可根据实际项目需求编译成字节码并混淆加密) 然后ant打包, 如果是release包还要配置签名, 这里提供一个基本的生成debug.apk的脚本
build_android.sh
#!/bin/bashprojectPath="$1"dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd ${dir}ant -buildfile ${projectPath}/build.xml
然后编写脚本调用build_android.sh 传递参数, 为了便于以后的扩展,这里用python编写
# coding=utf-8
# !/usr/bin/pythonimport os, shutil
import datetimeclass BuildAndroid:def __init__(self):self.dir = os.path.split(os.path.realpath(__file__))[0]self.projectPath = "../../frameworks/runtime-src/proj.android"self.outputPath = self.dir + "/../../publish/android"self.rootPath = "../.."self.appName = "XXXXX"def build(self):rootResPath = self.rootPath + "/res/"rootSrcPath = self.rootPath + "/src/"projectResPath = self.projectPath + "/assets/res/"projectSrcPath = self.projectPath + "/assets/src/"if os.path.isdir(projectResPath):shutil.rmtree(projectResPath)if os.path.isdir(projectSrcPath):shutil.rmtree(projectSrcPath)shutil.copytree(rootResPath, projectResPath)shutil.copytree(rootSrcPath, projectSrcPath)os.system("sh build_android.sh " + self.projectPath)if not os.path.isdir(self.outputPath):os.mkdir(self.outputPath)#获得当前时间now = datetime.datetime.now()outputFile = self.outputPath + "/" +self.appName + "_" + now.strftime("%Y%m%d%H%M") + ".apk"shutil.copy(self.projectPath + "/bin/" + self.appName + "-debug.apk", outputFile)print("[Success] " + outputFile)def run(self):os.chdir(self.dir)self.build()
buildAndroid = BuildAndroid()
buildAndroid.run()
这样一个基本的打包脚本就编写完成了,我们可以根据自己的项目需求来扩展python脚本
转载于:https://www.cnblogs.com/ColaZhang/p/4841284.html
cocos2dx3.8 android打包脚本编写相关推荐
- 按键精灵使用脚本编写测试Android入门与实战
首先一个工具的使用,我们肯定是要看它的官网:http://www.anjian.com/ 按键精灵都知道它是可以录制回放的,但是这个有点low,我们还是来讲讲它的脚本形式,显得牛批些. 网上搜索肯定教 ...
- Android shell 脚本
Android shell 脚本编写 一般在Ubuntu上,我们需要运行某个脚本,则直接 $sh test.sh 先编写一个简单的循环数数的脚本,push到Android机器下同样用sh来执行. 脚本 ...
- 【Android 内存优化】libjpeg-turbo 函数库交叉编译与使用 ( 交叉编译脚本编写 | 函数库头文件拷贝 | 构建脚本配置 | Android Studio 测试函数库 )
文章目录 一.交叉编译 Shell 脚本参考 二.NDK r16b 版本配置 三.libjpeg-turbo 交叉编译 Shell 脚本 四.执行 libjpeg-turbo 交叉编译 Shell 脚 ...
- Android自动化测试之MonkeyRunner MonkeyDevice MonkeyImage API使用详解 脚本编写 脚本录制回放
MonkeyRunner 系列文章 MonkeyRunner简介 MonkeyRunner 三大模块 MonkeyRunner API MonkeyDevice API MonkeyImage API ...
- AndroidNDK工程FFmpeg(一)-- Android使用FFmpeg--Shell脚本编写与执行编译FFmpeg库
FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计 算机程序.FFmpeg 是一个多媒体视频处理工具,有非常强大的功能包括视频采集功能. 视频格式转换.视频抓图.给视频加水印 ...
- android x866.0 教程,poco脚本编写之api
连接设备后使用poco 使用connect_device连接好指定设备后,会返回一个Device对象,将这个对象传入 AndroidUiautomationPoco第一个参数里进行poco的初始化, ...
- Android自动化测试之Monkey命令使用及monkey脚本编写
系列文章 Android自动化测试环境部署及adb sdkmanager avdmanager Monitor DDMS工具使用及命令详解 Android自动化测试之Monkey使用及monkey脚本 ...
- 用Kotlin写Android Gradle脚本
Android应用开发中,离不开Gradle脚本的构建.大部分Android开发同学忽视了脚本的力量,甚至有很大一部分同学不知道Gradle脚本是什么,用什么语言编写的:当然,也有相当一部分同学知道G ...
- Cocos2d-x快速打包脚本
Cocos2d-x快速打包脚本,仅供参考. 一.生成IPA安装包脚本: #!/bin/bash # 生成依赖库示例baselib cd../../baselib/project/proj.ios xc ...
最新文章
- 基于shiro的权限设计
- Ubuntu18 的日常
- ExtJS的xtype列表
- Django框架(19.Django中获取url的参数(位置参数以及关键字参数))
- 除醛重要性美博士环保为您解答!!
- jquery-获取表格最后一行的序号
- android计时器代码百度网盘下载,计时器flash_求几个简单Flash计时器,可以自己设定时间的,百度云...
- torch.optim 中的优化器
- iOS清除缓存功能开发
- 获取手机相册中照片的地址,保存在手机中的URL(Swift 代码)
- CSU-ACM2017暑假集训比赛1 B - R2D2 and Droid Army
- php behaviors,详解在PHP的Yii框架中使用行为Behaviors的方法_PHP
- 记录 支付宝口碑--商户会员卡 开发历程
- 《第一行代码》12.2学习中遇到的一些问题and心得
- ET框架-16 ET框架登录账号请求逻辑编写(1)
- 金和获微软ISV认证 提升产品技术优势
- GitHub 开源跨平台神器 Electron 实践
- TransmittableThreadLocal的简单使用 + 手写源码
- 企业数据管理中,数据可视化的重要性
- 5-羧基四甲基罗丹明标记多肽核酸PNA|TMR-Ahx-(TAMRA-Ahx-)-PNA|荧光素标记肽核酸作用机理
热门文章
- html实现让电脑断网的功能,13. Electron 断网提醒功能的实现
- 潍坊科技学院计算机学院刘君,2019年山东省高校大学生计算机科技创新大会暨第十一届山东省大学生科技节计算机学会六项赛事研讨会在潍坊科技学院举行...
- 大连评职称英语计算机,假如 职称英语和中级职称的工商管理、经济基础都考过了,辞职了还有地方给评中级经济师吗?大连的...
- dword类型和十进制有什么区别_微信小商店有几种类型,有什么区别?
- 保持联系,随时回来看看~
- 使用BH60测量小功率步进电机角度实验数据
- 为什么智能车竞赛没有清华学生参加比赛呢?
- 软raid1 重新同步_盾构同步注浆施工,看完你就会!
- python字符串用android,通过s从android客户端向python服务器发送字符串
- mysql 查询调试_使用MySQL慢速查询日志进行调试