zoukankan      html  css  js  c++  java
  • cocos2dx一键发布APK的批处理

    对程序的同学来说,如果运营要包,就需要额外腾出时间去svn更新--->编译so--->eclipse生成apk,往往需要耗费许多时间,并且以上步骤还是必须顺序执行,让人十分闹心。

    花了点时间研究了一下,发现编译so可以脱离cygwin而使用ndk,此外,apk的打包也是可以交给ant进行的。因此,通过一系列的批处理命令可以大大减轻程序的压力。(通过定时任务可以定时打包,利用晚上的时间可以提前编译出so,第二天可以随时发包)

    批处理执行步骤如下:

    1.更新资源文件夹resources和代码文件夹classes;

    2.删除android工程里面无关的文件夹,我的建议是全部删除,然后从服务器拿最新的;

    3.编译so;

    4.android命令更新cocos2dx引擎下的cocos2dxplatformandroidjava目录;

    5.android命令重新更新项目android目录

    6.重新从服务器拿下最新的so包(编译的时候会把所有的so包删除,拿;下的是计费的so);

    7.重新构建build.xml(因为之前的build.xml引入了android下的build.xml);

    8.ant命令生成apk;

    对于一般的项目来说,6,7是可以省略的,比较简单,但是因为这个项目引入了计费的sdk,尤其是引入了第三方的jar包,而且不是libs文件夹下的那种,就需要特殊的处理,在build.xml里面进行设置了。

    对于ant.properties文件,需要提供你的keystore,书写格式如下:

    key.store=MyGame
    #keystore的密码
    key.store.password=QQ123123
    #alias名
    key.alias=123123
    #alias密码
    key.alias.password=QQ123123

    批处理完整命令如下,需要替换路径和设置好环境变量,工作环境是windows。

    @echo off
    echo 准备开始 
    echo 设置路径
    set PROJECT_PATH="E:SVNwcMyGamesproj.android"
    set COCOS2DX_PATH="E:SVNwccocos2dx-2.2.6cocos2dxplatformandroidjava"
    set RESOURCES_PATH="E:SVNwcMyGamesResources"
    set CLASSES_PATH="E:SVNwcMyGamesClasses"
    set SVN_PATH="D:Program FilesTortoiseSVNinTortoiseProc.exe "
     
    echo #################################################################################################################### 
    echo 更新svn,务必保证SVN的win32文件夹无错
    ping -n 3 127.0.0.1>nul
    echo ####################################################################################################################
    %SVN_PATH% /command:update /path:%CLASSES_PATH%  /closeonend:1
    %SVN_PATH% /command:update /path:%RESOURCES_PATH%  /closeonend:1
    %SVN_PATH% /command:update /path:%PROJECT_PATH%  /closeonend:1
    echo 更新svn完毕
    echo ####################################################################################################################
    echo 拷贝最新的resource资源到android工程assets文件夹下
    echo ####################################################################################################################
    ping -n 3 127.0.0.1>nul
    call xcopy  %RESOURCES_PATH% %PROJECT_PATH%assets /e /y 
    echo 拷贝完毕
    echo ####################################################################################################################
    echo ndk编译SO文件
    echo ####################################################################################################################
    ping -n 3 127.0.0.1>nul
    pushd %PROJECT_PATH%
    call ndk-build
    echo 编译完毕
    popd
    echo ####################################################################################################################
    echo 更新android资源
    echo ####################################################################################################################
    ping -n 3 127.0.0.1>nul
    %SVN_PATH% /command:update /path:%PROJECT_PATH%  /closeonend:1
    echo 更新完毕
    echo ####################################################################################################################
    echo 更新android工程
    echo #################################################################################################################### 
    ping -n 3 127.0.0.1>nul
    pushd %COCOS2DX_PATH%  
    call android update project --name MyGames -t 1 -p %PROJECT_PATH%
    popd
    echo 更新完毕
    echo ####################################################################################################################
    echo 删除bin文件夹
    echo #################################################################################################################### 
    ping -n 3 127.0.0.1>nul
    if exist %PROJECT_PATH%in ( 
        del /q /f %PROJECT_PATH%in
    )
    echo 删除完毕
    echo ####################################################################################################################
    pushd %PROJECT_PATH%
    echo 生成debug 版本APK
    echo #################################################################################################################### 
    ping -n 3 127.0.0.1>nul
    call ant release  
    popd
    echo 生成Release完毕
    echo 搞定!!! 
    pause

    ########################################这是分割线##################################################################################

    对于build.xml,我做了点小小的修改:

    最后一行改成<import file="BaseBuild.xml" />

    然后复制之前引入的build.xml到项目目录,找到这句:

    <target name="-compile" depends="-pre-build, -build-setup, -code-gen, -pre-compile">

    在引入的path中修改如下:

    <path id="project.javac.classpath">
      ...

      <pathelement location="runtime/CMBilling.jar"/>
    </path>

    其中CMBilling.jar就是引入的第三方jar包,ant默认只识别libs下面的jar包,如果不这么写是会找不到CMBilling相关的api方法的。

    ########################################这是分割线##################################################################################

    对于定时任务,可以使用schtasks或者at命令。

    不过我的建议是可视化操作,这样不会那么容易出错哈

    打开控制面板--->打开管理工具--->打开任务计划程序,然后自己去设置参数吧!

  • 相关阅读:
    Oracle 手工创建awr快照,获取报告
    Oracle块修改跟踪功能
    Oracle 反向索引(反转建索引) 理解
    oracle聚簇表的理解 (转自:https://blog.csdn.net/gumengkai/article/details/51009345 )
    Fix the iOS code signing issue when using Jenkins
    ios系统crash文件分析
    python版本管理
    python requirements.txt
    android makefile protoc路径添加
    初识tflite源码
  • 原文地址:https://www.cnblogs.com/nuoyaxingzhe/p/4478629.html
Copyright © 2011-2022 走看看