win下eclipse一键打包cocos2dx的apk 命令

来源:互联网 发布:买家淘宝等级怎么升 编辑:程序博客网 时间:2024/06/15 03:17

一、简介
1. cocos2dx3.0以上版本已提供python解决方案,不赘述。
2. cocos2dx打包是件麻烦,容易出错,消耗体力的硕大工程。经过多次摸索,终于可以抛弃各种中间工具,比如cygwin\eclipse,现提供一个最小化工具,方便使用。并在结尾给出多平台一键打包解决方案。
二、需要工具
1. ndk
2. ant
3.android-sdk
4.将vc工程提取cpp信息到mk文件,楼主不熟脚本,做了一个vc2mk的小工具.
三、开始组建脚本,内容比较简单,直接贴出,放到工程的proj.android目录
rd bin /s/q  // 多平台打包时有时会有bug,需要删除bin

@echo off
call setenvironment.cmd  // 设定环境变量
@echo on

vc2mk.exe  // 修改mk文件

call common_run.cmd  // 多平台打包使用,后面介绍

goto build_native 

:build_error
pause // 文件出错后,方便修改后继续执行打包,不需要重新开始

:build_native
call %NDK_ROOT%/ndk-build.cmd  // 打包so文件

if errorlevel 1 goto build_error

call %ANT_HOME%/bin/ant release  // ant打包apk,可另外建立一个debug脚本,ant debug替换

四、几点说明
1. assets\res\libs目录需要win下手动创建,否则可能会有访问权限的问题 
2. setenvironment.cmd 
::envionment 设置环境变量

set ANT_HOME=E:\eclipse\plugins\org.apache.ant_1.8.3.v201301120609
set NDK_ROOT=E:\android\android-ndk-r9c
set sdk.dir=E:\android\adt-bundle-windows-x86-20131030\sdk
set NDK_MODULE_PATH=%~dp0..\..\..\cocos2d;%~dp0..\..\..\cocos2d\cocos2dx\platform\third_party\android\prebuilt
3. common_run.cmd
@echo del assets
@echo off
del assets /Q //win7下删除目录有时不能马上访问,导致创建出问题,循环递归删除
for /f "delims=" %%i in ('dir /b /ad assets') do rd /s/q "assets\%%i"

@echo on
@echo copy resource
@echo off

xcopy ..\Resources assets /s/i/y/Q  // 拷贝resources
xcopy common\weixin src\com /s/i/y
@echo on
五、自动签名
1. 生成签名文件android-release-key.keystore,存放在proj.android下
2. proj.android下创建project.properties文件,内容如下
target=android-19
key.store=android-release-key.keystore
key.alias=androidreleasekey
key.store.password=123456
key.alias.password=123456
六、多平台打包
1. 解决平台差异化问题:
每个平台分别创建一个目录,存放需要变动的差异文件。每个平台需要一个一键执行的批处理文件。
2. 保持原始目录不变
通过两个cmd实现,一个save、一个restore。
3. 各平台实现不同功能
所有差异化的实现由java文件完成,c++只做抽象调用逻辑,保持统一。
4. 平台的一键批处理文件
cd ..\
rd bin /s/q

::@echo off
call save.cmd // 保存原始目录
::@echo off

@echo off
call setenvironment.cmd
@echo on

call common_run.cmd
call %~dp0\override.cmd // 覆盖平台的差异化文件

// so文件不需要编译,故不调用ndk
:build_ant
call %ANT_HOME%/bin/ant release
if errorlevel 1 goto build_ant

call restore.cmd // 恢复原始目录
5. save.cmd
@echo off
del backup /Q
for /f "delims=" %%i in ('dir /b /ad backup') do rd /s/q "backup\%%i"

copy .classpath backup\ /y
copy AndroidManifest.xml backup\ /y
copy .project backup\ /y
xcopy res backup\res /e/i/y
xcopy src backup\src /e/i/y
xcopy libs backup\libs /e/i/y
@echo on
七、优化多平台打包
1.以上脚本,已基本实现每个平台一键打包,但是还还可以进一步提升
2.制作一个ui,提供组件勾选功能(比如微信、微博),apk版本号等修改信息。
3.改ui可以做vs工程目录的md5校验,检查vs工程是否发生变动,如果发生变动更新mk(不需要每次重新编译so文件)
4.so文件一次编译,各平台根据自己的脚本执行差异化ant

http://blog.sina.com.cn/s/blog_73d3d20b0102v1cs.html

0 0
原创粉丝点击