NOSDK--一键打包的实现(三)
1.3 编译及拷贝资源的脚本介绍
这一节介绍编译及拷贝资源的shell脚本,即:
- tools: //保存通用的功能脚本
- build_native.sh //cocosd-x自带脚本,用于编译
- resource_copy.sh //cocosd-x自带脚本,用于拷贝资源;
这两个脚本都是cocos2d-x自带的脚本,这里我们会简单介绍下指令的功能,还有我们修改过的一些地方。
下面先来看看build_native.sh脚本,脚本按照功能大致可划分为五个部分,其中第一部分中的APPNAME变量和APP_ANDROID_NAME变量是游戏名和包名,SDK_ROOT变量和NDK_ROOT变量是设置编译环境的路径,其实我可以将它们移植到platform_path.sh脚本中,这个以后再说; 第二部分的内容主要是脚本自己介绍自己的用法及用户输入的处理(可以尝试cd到脚本目录,然后执行./build_native.sh -h 看看);第三部分是查看编译环境相关的变量是否设置还有定义了一些路径相关的变量;第四部分是调用ndk进行编译,其中的-j4参数需要注意下,-j4能 够开启多核编译,加速编译过程(-j4就是4核编译);第五部分是我们加的,很多时候sdk会自带一些assets和so库,我将他们放在工程的 backup文件夹中,打包的时候自动拷贝到相应的文件夹里,这个我在介绍统一接入的时候会重点说。
APPNAME="mygame"
APP_ANDROID_NAME="org.nosdk.main"
SDK_ROOT="$HOME/Documents/program/android-sdk-macosx"
NDK_ROOT="$HOME/Documents/program/android-ndk-r9d" # options buildexternalsfromsource= usage(){
cat << EOF
usage: $ [options] Build C/C++ code for $APPNAME using Android NDK OPTIONS:
-s Build externals from source
-h this help
EOF
} while getopts "sh" OPTION; do
case "$OPTION" in
s)
buildexternalsfromsource=
;;
h)
usage
exit
;;
esac
done # paths if [ -z "${NDK_ROOT+aaa}" ];then
echo "please define NDK_ROOT"
exit
fi DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# ... use paths relative to current directory
COCOS2DX_ROOT="$DIR/../../.."
APP_ROOT="$DIR/.."
APP_ANDROID_ROOT="$DIR" echo "NDK_ROOT = $NDK_ROOT"
echo "COCOS2DX_ROOT = $COCOS2DX_ROOT"
echo "APP_ROOT = $APP_ROOT"
echo "APP_ANDROID_ROOT = $APP_ANDROID_ROOT" echo "#############################"
echo "$*" if [[ "$buildexternalsfromsource" ]]; then
echo "Building external dependencies from source"
"$NDK_ROOT"/ndk-build -j4 -C "$APP_ANDROID_ROOT" \
"NDK_MODULE_PATH=${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos2dx/platform/third_party/android/source"
else
echo "Using prebuilt externals"
"$NDK_ROOT"/ndk-build -j4 -C "$APP_ANDROID_ROOT" \
"NDK_MODULE_PATH=${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos2dx/platform/third_party/android/prebuilt"
fi if [ -d "$APP_ANDROID_ROOT"/backup/libs ]; then
cp -R "$APP_ANDROID_ROOT"/backup/libs/ "$APP_ANDROID_ROOT"/libs/
fi
接下来我们看下资源拷贝的脚本,这个脚本按照功能同样划分为五个部分,其中一二三部分的功能和上一个脚本的相同,我们就不赘述了,第四部分是从Resources目录中拷贝资源到assets目录中(会先删除assets目录,这也是创建backup文件夹的原因),如果我们想要排除一些资源文件(比如只有ios需要的 icon资源)可以改这里的代码,排除一些文件夹;第五部分是拷贝sdk自带的资源(backup里的assets目录中的内容)到assets目录中, 后面会考虑将这几行代码换个位置。
APPNAME="mygame"
APP_ANDROID_NAME="org.nosdk.main"
SDK_ROOT="$HOME/Downloads/android-sdk-macosx"
NDK_ROOT="$HOME/Downloads/android-ndk-r8d" # options buildexternalsfromsource= usage(){
cat << EOF
usage: $ [options] Build C/C++ code for $APPNAME using Android NDK OPTIONS:
-s Build externals from source
-h this help
EOF
} while getopts "sh" OPTION; do
case "$OPTION" in
s)
buildexternalsfromsource=
;;
h)
usage
exit
;;
esac
done # paths if [ -z "${NDK_ROOT+aaa}" ];then
echo "please define NDK_ROOT"
exit
fi DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# ... use paths relative to current directory
COCOS2DX_ROOT="$DIR/../libs"
APP_ROOT="$DIR/.."
APP_ANDROID_ROOT="$DIR" echo "NDK_ROOT = $NDK_ROOT"
echo "COCOS2DX_ROOT = $COCOS2DX_ROOT"
echo "APP_ROOT = $APP_ROOT"
echo "APP_ANDROID_ROOT = $APP_ANDROID_ROOT" # make sure assets is exist
if [ -d "$APP_ANDROID_ROOT"/assets ]; then
rm -rf "$APP_ANDROID_ROOT"/assets
fi mkdir "$APP_ANDROID_ROOT"/assets # copy resources
for file in "$APP_ROOT"/Resources/*
do if [ -d "$file" ]; then
cp -rf "$file" "$APP_ANDROID_ROOT"/assets
fi if [ -f "$file" ]; then
cp "$file" "$APP_ANDROID_ROOT"/assets
fi done if [ -d "$APP_ANDROID_ROOT"/backup/assets ]; then
cp -R "$APP_ANDROID_ROOT"/backup/assets/ "$APP_ANDROID_ROOT"/assets/
fi ##删除无用文件
讲到这里这一节就结束了,下一节我们介绍自动打包及签名的脚本。
NOSDK--一键打包的实现(三)的更多相关文章
- 前端资源多个产品整站一键打包&包版本管理(三)—— gulp分流
问题: 当我们一个工作台里面有好几个项目的时候,我们要为项目的前端资源进行打包,但是,gulpfile只有一个,如果我们把所有的打包都放在同一个文件里面,首先文件会越来越大,而且不便于管理,这时,我们 ...
- NOSDK--SDK一键打包及统一接入的实现(前言)
前言 一,一键打包的实现 1.1 shell脚本执行流程介绍 1.2 自动刷新mk文件的脚本介绍 1.3 编译及拷贝资源的脚本介绍 1.4 打包及签名的脚本介绍 1.5 mac下的脚本环境配置及脚本的 ...
- cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程)
链接地址:http://www.cocoachina.com/bbs/read.php?tid=333937 cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程 ...
- 使用VS中自带的一键打包功能将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理
本章将和大家简单分享下如何使用VS中自带的一键打包功能将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理. 一.注册并登录NuGet平台 NuGet官网:http ...
- Nuget一键打包上传以及高级应用
Nuget是什么不用多说,大家应该也没少用过Nuget, 不少人也应该使用过工具打Nuget包,接下来先一步步说明如何使用脚本完成Nuget一键打包 Nuget一键打包 配置Nuget环境 下载地址: ...
- 前端资源多个产品整站一键打包&包版本管理(四)—— js&css文件文件打包并生成哈希后缀,自动写入路径、解决资源缓存问题。
问题: 当我们版本更新的时候,我们都要清理缓存的js跟css,如何使得在网页中不需要手动清理呢? 答案: 生成带有哈希后缀的js跟css文件 1.文件路径 路径中的conf.js 是用于放置全局打包的 ...
- 前端资源多个产品整站一键打包&包版本管理(一)
来新公司工作的第五个月.整站资源打包管理也提上了日程. 问题: 首先.什么是整站的打包管理呢? 我们公司的几个重要产品都在同一个webapp里面,但是,不同的开发部门独立开发不同的产品,长期以来,我们 ...
- Wix打包系列(三)自定义Action(Custom Action)
原文:Wix打包系列(三)自定义Action(Custom Action) 3.1 关于Action 我们已经知道如何生成具有标准安装界面的安装程序了,Windows Installer按照我们的界面 ...
- Web项目也能一键打包Android、IOS
随着移动互联网的不断发展,智能手机配置的不断提高,越来越多的年轻人基本都在使用手机,如微信.支付宝等等.已基本成为一种习惯,坐电梯也好.吃饭也好.开车也好,基本都捧着一个手机在那按来按去,开车就不建议 ...
- maven 聚合的含义是父类打包 ,清理等 则子类自动打包;也就是一键打包 方便服务
maven 聚合的含义是父类打包 ,清理等 则子类自动打包:也就是一键打包 方便服务
随机推荐
- Linux服务器磁盘扩展和oracle表空间文件迁移操作记录
1.环境介绍 服务器硬件:Dell R710 服务器OS:红帽子Linux RHEL4.8 数据库:Oracle 10g 2.出现的问题 因为数据表每天有上百万的数据写入表,加上建立索引,导致表空 ...
- java中Class对象详解和类名.class, class.forName(), getClass()区别
一直在想.class和.getClass()的区别,思索良久,有点思绪,然后有网上搜了搜,找到了如下的一篇文章,与大家分享. 原来为就是涉及到Java的反射----- Java反射学习 所谓反射,可以 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 【读书笔记《Bootstrap 实战》】5.电子商务网站
构建了公司网站之后,接下来就可以考虑设计一个在线商店了. 此次的设计以上一章的设计为基础, 只是添加了一个包含如下元素的新页面: □ 包含商品小图.标题和说明的产品网格: □ 位于左侧的变懒,用于按类 ...
- Winform布局方式
一.默认布局 ★可以加panel,也可以不加: ★通过鼠标拖动控件的方式,根据自己的想法布局.拖动控件的过程中,会有对齐的线,方便操作: ★也可选中要布局的控件,在工具栏中有对齐工具可供选择,也有调整 ...
- one to many
@OneToMany(mappedBy="order",fetch=FetchType.EAGER,cascade={CascadeType.ALL}) private Li ...
- ASP.NET Boilerplate
I want it to be a start point for all we .NET developers, so, it will be good to develop it together ...
- jQuery的getText()方法源码
/** * Utility function for retrieving the text value of an array of DOM nodes * @param {Array|Elemen ...
- gradle项目中资源文件的相对路径打包处理技巧
开发java application时,不管是用ant/maven/gradle中的哪种方式来构建,通常最后都会打包成一个可执行的jar包程序,而程序运行所需的一些资源文件(配置文件),比如jdbc. ...
- bzoj 3163: [Heoi2013]Eden的新背包问题
Description "寄没有地址的信,这样的情绪有种距离,你放着谁的歌曲,是怎样的心心静,能不能说给我听."失忆的Eden总想努力地回忆起过去,然而总是只能清晰地记得那种思念的 ...