对程序的同学来说,如果运营要包,就需要额外腾出时间去svn更新--->编译so--->eclipse生成apk,往往需要耗费许多时间,并且以上步骤还是必须顺序执行,让人十分闹心。
@H_502_2@ 花了点时间研究了一下,发现编译so可以脱离cygwin而使用ndk,此外,apk的打包也是可以交给ant进行的。因此,通过一系列的批处理命令可以大大减轻程序的压力。(通过定时任务可以定时打包,利用晚上的时间可以提前编译出so,第二天可以随时发包) @H_502_2@ 批处理执行步骤如下: @H_502_2@ 1.更新资源文件夹resources和代码文件夹classes; @H_502_2@ 2.删除android工程里面无关的文件夹,我的建议是全部删除,然后从服务器拿最新的; @H_502_2@ 3.编译so; @H_502_2@ 4.android命令更新cocos2dx引擎下的cocos2dx\platform\android\java目录; @H_502_2@ 5.android命令重新更新项目android目录 @H_502_2@ 6.重新从服务器拿下最新的so包(编译的时候会把所有的so包删除,拿;下的是计费的so); @H_502_2@ 7.重新构建build.xml(因为之前的build.xml引入了android下的build.xml); @H_502_2@ 8.ant命令生成apk; @H_502_2@ 对于一般的项目来说,6,7是可以省略的,比较简单,但是因为这个项目引入了计费的sdk,尤其是引入了第三方的jar包,而且不是libs文件夹下的那种,就需要特殊的处理,在build.xml里面进行设置了。 @H_502_2@ 对于ant.properties文件,需要提供你的keystore,书写格式如下:key.store=MyGame
#keystore的密码
key.store.password=QQ123123
#alias名
key.alias=123123
#alias密码
key.alias.password=QQ123123
@echo off echo 准备开始 echo 设置路径 set PROJECT_PATH="E:\SVNwc\MyGames\proj.android" set COCOS2DX_PATH=E:\SVNwc\cocos2dx-2.2.6\cocos2dx\platform\android\javaset RESOURCES_PATH=E:\SVNwc\MyGames\Resourcesset CLASSES_PATH=E:\SVNwc\MyGames\Classesset SVN_PATH=D:\Program Files\TortoiseSVN\bin\TortoiseProc.exe echo #################################################################################################################### echo 更新svn,务必保证SVN的win32文件夹无错 ping -n 3 127.0.0.1>nul #################################################################################################################### %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 拷贝最新的resource资源到android工程assets文件夹下 #################################################################################################################### ping -n nul call xcopy %RESOURCES_PATH% %PROJECT_PATH%\assets /e /y echo 拷贝完毕 echo ndk编译SO文件 nul pushd %PROJECT_PATH% call ndk-build echo 编译完毕 popd echo 更新android资源 nul %SVN_PATH% /command:update /path:%PROJECT_PATH% /cloSEOnend:echo 更新完毕 echo 更新android工程 #################################################################################################################### ping -n nul pushd %COCOS2DX_PATH% call android update project --name MyGames -t 1 -p %PROJECT_PATH% popd echo 删除bin文件夹 nul if exist %PROJECT_PATH%\bin ( del /q /f %PROJECT_PATH%\bin ) echo 删除完毕 #################################################################################################################### pushd %PROJECT_PATH%echo 生成debug 版本APK nul call ant release popd echo 生成Release完毕 echo 搞定!!! pause@H_502_2@ ########################################这是分割线################################################################################## @H_502_2@ 对于build.xml,我做了点小小的修改: @H_502_2@ 最后一行改成<import file="BaseBuild.xml" /> @H_502_2@ 然后复制之前引入的build.xml到项目目录,找到这句: @H_502_2@ <target name="-compile" depends="-pre-build,-build-setup,-code-gen,-pre-compile"> @H_502_2@ 在引入的path中修改如下: @H_502_2@ <path id="project.javac.classpath">... @H_502_2@ <pathelement location="runtime/CMBilling.jar"/></path> @H_502_2@ 其中CMBilling.jar就是引入的第三方jar包,ant默认只识别libs下面的jar包,如果不这么写是会找不到CMBilling相关的api方法的。 @H_502_2@ 对于定时任务,可以使用schtasks或者at命令。 @H_502_2@ 不过我的建议是可视化操作,这样不会那么容易出错哈 @H_502_2@ 打开控制面板--->打开管理工具--->打开任务计划程序,然后自己去设置参数吧! @H_502_2@ 原文:http://www.tuicool.com/articles/Mz67zmQ