cocos2dx 3.8 android打包脚本编写

cocos集成了打包命令 cocos compile -p android

在这里并没有采用这个方案,而是编写自己的脚本, 理由如下

  1. 脚本掌握在自己手中可以第一时间解决和发现bug
  2. 游戏项目总会出现各种各样定制的需求,官方不可能给出全部的解决方案

为了便于管理和扩展 我们在项目根目录下新建了两个文件夹

  1. build/android:打包脚本目录,
  2. publish/android:apk输出目录

android的打包分两步:

  1. 编译so
  2. 生成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_NAME

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
APP_ROOT="$DIR/../../.."
APP_ANDROID_ROOT="$DIR"
export COCOS2DX_ROOT=$DIR/../../cocos2d-x
export NDK_DEBUG=1

echo "- 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 ]; then
    rm -rf "$APP_ANDROID_ROOT"/bin/*.apk
fi
mkdir -p "$APP_ANDROID_ROOT"/bin
chmod 755 "$APP_ANDROID_ROOT"/bin

if [ -d "$APP_ANDROID_ROOT"/assets ]; then
    rm -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/bash

projectPath="$1"

dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd ${dir}

ant -buildfile ${projectPath}/build.xml

  然后编写脚本调用build_android.sh 传递参数,   为了便于以后的扩展,这里用python编写

# coding=utf-8
# !/usr/bin/python

import os, shutil
import datetime

class 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脚本

时间: 2024-12-15 09:26:18

cocos2dx 3.8 android打包脚本编写的相关文章

cocos2dx3.8 ios打包脚本编写

cocos集成了打包命令 cocos compile -p ios 在这里并没有应用这个方案,而是编写自己的脚本, 理由如下 脚本掌握在自己手中可以第一时间解决和发现bug 游戏项目总会出现各种各样定制的需求,官方不可能给出全部的解决方案 查了一下资料xcode 支持命令行 xcodebuild:   编译xcode工程生成app文件 xcrun:     将app文件转换为ipa文件 如果不清楚, 直接命令行 xcodebuild -help即可查看所有命令 为了便于管理和扩展 这里新建了两个

Android Monkey 脚本编写与检查内存泄露

一.Monkey脚本编写 1.Monkey脚本格式 脚本优势: 简单快捷,不需要接触任何工具,只需要一个记事本文件 脚本缺点: 实现坐标.按键等基本操作的相应步骤,顺序脚本无逻辑性 脚本源码: \development\cmds\monkey\src\com\android\commands\monkey\MonkeySourceScrip.java #头文件.控制monkey发送消息的参数 type=raw events count=10 speed=1.0 #以下为monkey命令 star

Android 自动化测试脚本编写

一.新建一个py后缀的文件,如***.py 二.导入monkeyrunner常用包 from com.android.monkeyrunner importMonkeyRunner,MonkeyDevice,MonkeyImage 三.等待设备连接 device=MonkeyRunner.waitForConnection() 四.monkeyrunner常用操作 1.      事件中间停顿,sleep MonkeyRunner.sleep(2) 表示停顿2s. 2.      点击事件,to

Android ANT脚本打包及混淆文件

http://p.ymt360.com/w/app/wiki/tech/build_apk/ 简介 Android支持使用ANT打包.通过ANT脚本,可以对文件进行编译.打包.安装.联合SVN自动拉取等.并且支持多种方式打包,如debug.release.批量打包等场景.eclipse项目是通过调用SDK提供的ANT脚本build.xml文件进行打包的. 附件是AndroidSDK附带的打包脚本,超详细,可以参考学习下.build.xml(建议使用JDK1.6环境,在之前ANT使用过程中被1.7

cocos2d-x 3.4 + android studio 1.1.0 + VS2012 开发环境搭建

cocos2d-x 是一款跨平台的游戏引擎,虽然现在只学到了一点点皮毛,但是确实感受到了一款游戏引擎的强大功能,让我这个做游戏的小白也算过了一把做游戏的瘾.但是因为配置的复杂性,让我在一开始走了不少弯路,现在记录下来整个安装配置的过程. 安装配置过程中需要用到的安装包主要有下面几个: cocos2d-x 3.4:这个是当然必须要的了,目前最高版本是 3.6 版,但是好像和 3.5 版都有不少问题,还是先用 3.4 吧. android studio 1.1.0:谷歌自己出的 android 集成

[原]Android打包之Eclipse打包

Android自动打包流程详细图: 步骤一: 在工程中新建一个build.xml. 步骤二: 给工程配置ant工具. 选择ant工具的步骤如下: Windows->Shown view->Ant 这样就出项了ant视图框.在ant视图框中单击右键,选择addBuilderfile添加ant编译文件. 添加好ant编译文件后,我们还需要对编译文件进行设置:选中编译文件,右键单击选择Run As->external Tools configurations 弹出了ant编译的配置框. 在编译

[原]Android打包之Eclipse打多渠道包

Android自动打包流程详细图: 步骤一和步骤二参考:[原]Android打包之Eclipse打包 步骤三:编写build.xml <?xml version="1.0" encoding="UTF-8"?> <project name="AndroidTouchDemo"> <!-- 指定配置文件 --> <property file="default.properties">

[原]Android打包之跨平台打包

Android自动打包流程详细图: 在前面一些博客我们知道了如何通过命令行打包,如何通过Eclipse打包,如何通过编写shell脚本来进行打包,但是这些都不能很好的跨平台进行打包. 因Python本身具有很好的跨平台特性,故本博就是通过使用Python来进行编写跨平台打包脚本,脚本如下(build.py): #!/bin/python # build Android application package (.apk) from the command line using the SDK t

cocos2dx环境配置和打包

安装软件准备: vs2012 cocos2d-x-2.2.1 adt-bundle-windows-x86_64-20121030 android-ndk-r9c-windows-x86_64 jdk-7u21-windows-x64 python-2.7.6.amd64 cygwin64 setup-x86_64 Step 1:安装visual studio 2012 用于开发cocos2dx程序,不用说了 下载方面各位自己去找罗 step 2:下载cocos2d-x源码 下载地址:http: