##说明文档
- 安装
TexturePacker
及其命令行工具 - 环境变量
QUICK_V3_ROOT
bash和Xcode - 安装
poedit_osx.zip
和poxls-1.1.0.tar.gz
- 设置环境变量
DEBUG_GIT_AUTO_UPDATE
和RELEASE_GIT_AUTO_UPDATE
- 确保
tools/scripts
下的所有脚本均有执行权限(执行脚本14修改权限)
####2dx版本3.3final升级
- 修改editbox iOS支持编辑时清除内容 textField_.clearButtonMode = UITextFieldViewModeWhileEditing;
- 修改ios单行输入框的行为 修改editbox ended事件
- 修改ios下背景音乐的播放规则
- 键盘弹出事件修改
- 文本框和quick事件冲突修复(CCNode)
- 修改文本框占位文字的格式bug ''_labelPlaceHolder->setSystemFontName(pFontName); ''_labelPlaceHolder->setSystemFontSize(fontSize);
- 添加多行输入框
- GameCenter
- iap添加接口
- 资源加密脚本修改(quick) 修改图片读取函数(CCImage)用以支持资源加密
- 开启quick项目的luac加密模式,未加密的原配置备份文件为
- v3.3/external/lua/lua/lopcodes.def_bak_20150304-111302
- v3.3/external/lua/lua/lopmodes.def_bak_20150304-111302
- 添加图片处理命令行工具
输入框使用项目自定义的字体(放弃修改)
- Label加粗功能
-
buildGame.sh 执行lua和资源的导出 参数:1.平台 2.是否加密lua 3.是否加密资源(执行选择相应参数即可)
-
buildLuaConfig.sh 把excel配置表导出为lua文件
-
buildRes.sh 导出项目的资源 参数:1.平台 2.是否加密
-
buildScripts.sh 导出项目的lua文件 参数:1.平台 2.是否加密
-
buildUpdate.sh 发布自动更新脚本,执行选择相应参数即可
-
build_format_map.py
-
cleanGame.sh 清除生成项目的中间文件和update目录
-
cleanMacPlayer.sh 清除保存在player中的userdefault中的信息,不会重置openudid
-
cleanTempFile.sh 清除生成项目的中间文件,但是不会清除update目录
-
exportPO2Xlsx.sh 将项目的本地化po文件导出为excel文件 参数:1.将要导出的excel文件的路径(xlsx后缀名)
-
exportXlsx2po.sh 将脚本10导出的excel导回项目中 参数:1.将要导入的excel文件路径(xlsx后缀名)
-
export_plist_texture_data.sh 将合成的大图信息导出到项目中(执行选择相应参数即可)
-
functions.sh 为其他脚本提供基础函数的脚本,
如果要改变加密资源和lua的XXTEA信息就修改这个文件中的值
-
install.sh 为所有的脚本添加执行权限
-
plist_texture_data_to_lua.py 脚本12的python实现
-
syncUpdateDataToGit.sh
将生成的update目录上传到相应的git仓库,这个脚本不会自动部署服务器,需要手动ssh到服务器pull版本号使用这个脚本前必须确认
包含两个全局shell变量: 1.DEBUG_GIT_AUTO_UPDATE 测试用的git仓库路径 [email protected]:ModunZhang/kod_test_update.git 2.RELEASE_GIT_AUTO_UPDATE 正式的git仓库路径 [email protected]:ModunZhang/kod_auto_update.git
-
buildTexture.sh 导出游戏的大图到images下,分为player和iOS
-
安装
poxls-1.1.0.tar.gz
和poedit_osx.zip
-
用poedit更新所有po文件的本地化信息
-
执行脚本
exportPO2Xlsx.sh
将po文件导出为excel -
excel修改完成后执行脚本
exportXlsx2po.sh
将excel导出为最新的po文件 -
用poedit设置所有po文件(每个po文件都需要设置)的属性(代码编码为utf8,搜索路径为app目录,搜索关键词为下划线,poedit的首选项只需设置一次 参考文章
-
更新本地化文件
如果第6步执行不了,原因就是第5步没有设置好!
5-6 图解
######images下文件夹说明
_CanCompress:将被直接压缩为pvrtc4的散图
_Compressed:iOS已经被合成最终大图的图
_Compressed_mac:Player已经被合成最终大图的图
rgba444_single:将被压缩为rgba4444格式的散图
######贴图操作说明:
- 所有的大图项目在
PackImages
文件夹下,TextPacker的项目文件也在里面,使用用脚本buildTexture.sh
导出 - 所有新加的图需要用
ImageOptim.app
执行一次无损压缩再放入项目中
- 修改项目 关闭Lua中的自动更新逻辑
- 如果只修改了Lua,执行脚本4
buildScripts.sh iOS false
- 如果只修改了资源,执行脚本3
buildRes.sh iOS false
- 如果都有修改执行,执行脚本1
buildGame.sh iOS false false
- Xcode执行
1.Xcode中必须设置Qucik的环境变量QUICK_V3_ROOT
2.Xcode中Info.plist的版本号设置(`CFBundleShortVersionString`为当前版本号,`AppMinVersion`为支持的最低版本号)
3.config.lua文件不能被更新(cpp写死的)
4.大版本号由Xcode中设置的大版本号生成json文件
5.每次发布新ipa包,大版本号必须比线上的高
6.运行自动更新脚本的时候不要再修改项目的文件!包括其他人此时也不能提交任何东西到git仓库
举例:手机上此时装的1.0(123)
1
-
我们发布自动更新
1.0(456)
,最低版本支持为1.0
2,部署到更新服务器,手机直接启动游戏,会走自动更新。自动更新发布步骤 -
我们发布新包
1.0(456)
,最低版本支持为1.0
,部署到更新服务器。把1.0(456)
的包覆盖安装到手机上(1.0(123)
),启动游戏仍然版本会是1.0(123)
,手机依然会走自动更新流程。 -
我们发布新包
1.0(456)
,最低版本支持为1.0
,部署更新服务器。手机上删除1.0(123)
这个包,把1.0(456)
的包安装新手机上,启动游戏不会走自动更新流程。 -
我们发布新包
1.1(456)
,最低版本支持为1.1
,部署到更新服务器,如果覆盖安装到手机上,启动游戏版本会是1.1(456)
不会走自动更新。如果我们不覆盖安装,直接启动1.0(123)
,会走强制更新流程。发布新版本说明 -
我们发布新包
1.1(456)
,最低版本支持为1.0
,部署到更新服务器。覆盖安装到手机。不会走自动更新,这个包就是兼容包。兼容包发布说明
发布自动更新的时候一定检查git仓库版本号,不要轻易部署
自动更新生成的脚本和资源加密参数必须为true
- 上传所有的修改文件到develop分支,更新本地develop仓库,确保本地develop分支为最新
- 检查lua代码是否调用了新的底层函数3
- 确保config.lua中的服务器为正式服务器
- 检查自动更新逻辑部分是否被修改(GameUILoginBeta.lua、GameUISplashBeta.lua),自动更新可以更新自动更新的逻辑
- 检查Xcode中Info.plist的版本号设置(
CFBundleShortVersionString
为当前版本号,AppMinVersion
为支持的最低版本号) - 切换到master分支
- 合并develop分支到master分支,提交master并推送到远端仓库
- 在master分支上执行脚本
cleanGame.sh
清空update目录 - 在master分支上执行脚本
buildUpdate.sh
生成自动更新文件 - 成功后执行脚本
syncUpdateDataToGit.sh
上传自动更新文件到github - 部署自动更新的服务器(测试服务器或者正式服务器)
- 如果是测试自动更新,最好测试完毕后还原master分支到线上版本的tag位置,如果没问题手动push项目master分支,把生成的自动更新文件推送到远端仓库
- 为master打tag
调整Xcode中支持的最低版本号高于线上某app的版本号,执行自动更新的所有步骤,最后使用Xcode打包ipa即可。
- Xcode设置当前版本号4比线上app高,最低版本号小于或者等于线上app的当前版本号
- 执行自动更新的所有步骤。
- 最后Xcode打包ipa即可
End June 11, 2015