cocos2dx一鍵發布APK的批處理


對程序的同學來說,如果運營要包,就需要額外騰出時間去svn更新--->編譯so--->eclipse生成apk,往往需要耗費許多時間,並且以上步驟還是必須順序執行,讓人十分鬧心。

花了點時間研究了一下,發現編譯so可以脫離cygwin而使用ndk,此外,apk的打包也是可以交給ant進行的。因此,通過一系列的批處理命令可以大大減輕程序的壓力。(通過定時任務可以定時打包,利用晚上的時間可以提前編譯出so,第二天可以隨時發包)

批處理執行步驟如下:

1.更新資源文件夾resources和代碼文件夾classes;

2.刪除android工程里面無關的文件夾,我的建議是全部刪除,然后從服務器拿最新的;

3.編譯so;

4.android命令更新cocos2dx引擎下的cocos2dx\platform\android\java目錄;

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:\SVNwc\MyGames\proj.android"
set COCOS2DX_PATH="E:\SVNwc\cocos2dx-2.2.6\cocos2dx\platform\android\java"
set RESOURCES_PATH="E:\SVNwc\MyGames\Resources"
set CLASSES_PATH="E:\SVNwc\MyGames\Classes"
set SVN_PATH="D:\Program Files\TortoiseSVN\bin\TortoiseProc.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%\bin ( 
    del /q /f %PROJECT_PATH%\bin
)
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命令。

不過我的建議是可視化操作,這樣不會那么容易出錯哈

打開控制面板--->打開管理工具--->打開任務計划程序,然后自己去設置參數吧!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM