NOSDK--一键打包的实现(三)

1.3 编译及拷贝资源的脚本介绍

  这一节介绍编译及拷贝资源的shell脚本,即:

  • tools:                                             //保存通用的功能脚本

    •   build_native.sh               //cocosd-x自带脚本,用于编译
    •   resource_copy.sh          //cocosd-x自带脚本,用于拷贝资源;

这两个脚本都是cocos2d-x自带的脚本,这里我们会简单介绍下指令的功能,还有我们修改过的一些地方。

  下面先来看看build_native.sh脚本,脚本按照功能大致可划分为五个部分,其中第一部分中的APPNAME变量和APP_ANDROID_NAME变量是游戏名和包

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: $0 [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=1
;;
h)
usage
exit 0
;;
esac
done

# paths

if [ -z "${NDK_ROOT+aaa}" ];then
echo "please define NDK_ROOT"
exit 1
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

名,SDK_ROOT变量和NDK_ROOT变量是设置编译环境的路径,其实我可以将它们移植到platform_path.sh脚本中,这个以后再说;第二部分的内容主要是脚本自己介绍自己的用法及用户输入的处理(可以尝试cd到脚本目录,然后执行./build_native.sh -h 看看);第三部分是查看编译环境相关的变量是否设置还有定义了一些路径相关的变量;第四部分是调用ndk进行编译,其中的-j4参数需要注意下,-j4能够开启多核编译,加速编译过程(-j4就是4核编译);第五部分是我们加的,很多时候sdk会自带一些assets和so库,我将他们放在工程的backup文件夹中,打包的时候自动拷贝到相应的文件夹里,这个我在介绍统一接入的时候会重点说。

  接下来我们看下资源拷贝的脚本,这个脚本按照功能同样划分为五个部分,其中一二三部分的功能和上一个脚本的相同,我们就不赘述了,第四部分是从Resources目录中

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: $0 [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=1
;;
h)
usage
exit 0
;;
esac
done

# paths

if [ -z "${NDK_ROOT+aaa}" ];then
echo "please define NDK_ROOT"
exit 1
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

##删除无用文件

拷贝资源到assets目录中(会先删除assets目录,这也是创建backup文件夹的原因),如果我们想要排除一些资源文件(比如只有ios需要的icon资源)可以改这里的代码,排除一些文件夹;第五部分是拷贝sdk自带的资源(backup里的assets目录中的内容)到assets目录中,后面会考虑将这几行代码换个位置。

  讲到这里这一节就结束了,下一节我们介绍自动打包及签名的脚本。

时间: 2024-10-24 23:51:41

NOSDK--一键打包的实现(三)的相关文章

NOSDK--关于android一键打包及统一接入国内多个平台SDK的想法与实现(前言)

前言 一,一键打包的实现 1.1 shell文件介绍 1.2 自动刷新mk文件 1.3 自动拷贝资源 1.4 使用ant实现打包 1.5 拷贝icon 二,统一接入多个平台 1.1 nosdk框架介绍 1.2 nosdk_library基本库介绍 1.3 游戏逻辑与sdk平台的分离 1.4 xx平台接入示例 三,后记 做SDK平台接入工作已经有一年多了,自认对于大多平台的sdk都基本熟悉了,因此计划写一个系列的文章,介绍自己对于一键打包及统一接入多个平台sdk的一些想法与实现,算是对于这一年多的

cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程)

链接地址:http://www.cocoachina.com/bbs/read.php?tid=333937 cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程) 此教程仅供参考,C++小白系列,从新建工程到打包apk,大神们可在评论多给留言建议,若有不详或错误请予指点.OK,我们直入主题 本教程开发环境详情如下开发系统:win764位开发工具:cocos引擎v2.3.3,VS2013cocos2dx版本:3.9 步骤一:windows下各类工具安装(ja

html网站网址一键打包成App平台-开心App平台

开心APP在线打包平台可以快速封装网站变成APP,一键打包网站APP平台的出现,极大的降低的开发费用,几百块就可以制作一个体验不错的APP. 网站封装成APP的流程方便快捷!无需懂代码,会上网就能制作APP! 下面介绍使用开心APP平台将一个网站快速打包成APP 分七步进行 1.注册开心APP平台账号 2.创建APP.配置基本信息 3.配置扩展插件 4.配置打包项目 5.配置安卓证书 6.配置ios证书 7.编译APP 一.注册lbuilder平台账号 1.打开心APP官网http://www.

vue一键打包部署

摘录自: https://blog.csdn.net/weixin_43087487/article/details/90371869 在根目录创建一个publish.js文件 发布的时候 只要输入 node publish.js publish test就可以了 // 一键打包部署 module.exports = function () { let O = 'xxx', // 文件名 Q = require('q'), del = require('del'), gulp = require

centos shell编程5LANMP一键安装脚本 第三十九节课

centos shell编程5LANMP一键安装脚本  第三十九节课 上半节课 下半节课 f

前端资源多个产品整站一键打包&amp;包版本管理(一)

来新公司工作的第五个月.整站资源打包管理也提上了日程. 问题: 首先.什么是整站的打包管理呢? 我们公司的几个重要产品都在同一个webapp里面,但是,不同的开发部门独立开发不同的产品,长期以来,我们就不知道其他部门的在做什么,或许我们正在头疼的问题,隔壁部门已经早早解决了呢? 各个部门的前端资源也是到处都是.难以管理.于是就提出了整站资源共享.整站资源共享的前提就是资源打包能统一.在几个产品里面.既有使用grunt的也有使用glup的,各个产品引入的包的版本也不一样. 目标: 统一打包工具 对

ios 新的一键打包方式(基于Unity5.x)

                                                                      ios 新的一键打包方式(基于Unity5.x) 1.目前4.x的均可以使用第三方插件XUPorter进行修改framewordk,plist以及代码,但是可视化程度还不够 2.Unity5.x内部已经集成了XCode api函数,我们可以利用这些函数实行更方便的可实话,例如在excel填写相关的Xcode工程参数导出json或者xml,每次导出完工程后读取

cocos 3.0 一键打包android平台应该注意的细节

cocos2d-x 移植越来越便捷,走到cocos2d-x-3.0rc2,能够说移植已经非常完好了,我们仅仅要进行适当的适配,cocos能够直接帮助我们生成apk 我网络不好无法上传图片:(无图无捷豹,呵呵),好像又能够了,哎,这网络! (1)首先确保本地已下载下面软件: android-NDK   :任意找 android-SDK    :官网   developer.android.com/sdk/index.html apache-ant      :    任意找 java-jdk   

RPG MAKER MV 打包APK教程(一键打包,无需编写任何代码)

HTML一键打包APK工具可以快速打包RPG Maker制作出来的游戏, 打包教程如下: 打包软件下载地址: 点击进入下载页面 打包步骤 1.准备好待打包的RPG Maker项目,放在系统的某一目录下,如下图所示 2.打开HTML一键打包APK工具,在工具中点击载入文件按钮,选择RPG Maker生成的主HTML(index.html)文件 3.可以设置图标,启动图, APP包名等,设置完成后,点击打包按钮 4. 打包完成后,会生成APK文件,上传到手机中安装即可正常运行 打包软件详细说明: h

使用HTML一键打包EXE工具打包KRPANO全景项目

HTML一键打包EXE工具(HTML封装EXE, HTML转EXE)能把任意HTML项目(网址)一键打包为单个EXE文件,可以脱离浏览器和服务器,直接双击即可运行. 打包工具群:429338543 最新软件下载地址: 点击进入下载页面 HTML一键打包工具打包全景项目 打包流程 1. 首先,使用全景可视化制作工具导出H5离线项目,生成的本地项目如下图所示 2. 打开HTML一键打包EXE工具,点击"打开本地HTML文件", 选择全景项目中的index.html文件 3. 其他的一些配置