这几天搞了个自动打包的工具,开始的时候也是胡搞乱搞一头雾水,一顿查资料啊、翻看别人写的博客啊,终于搞出来了。但是现在回头看,感觉这东西其实就一层窗户纸,捅破之后,也挺简单的~
公司的项目太大,打一次包真的是慢的一匹... 那么这个打包工具就应运而生了,每天定时执行:先自动更新svn,再打Bundle,再打包,最后邮件通知一下打包结果~
整体的思路就是通过命令行去执行 更新、打Bundle、打包,然后考虑到mac和windows的电脑使用的命令不一样,那么就用python来做个整合,让它在mac和windows上都可以运行~
ps : 因为苹果开发账号过期了... 这篇博客mac上打包就写到打出xcode工程为止 ....
准备工作:
1. python、Unity
2. litJson(打包配置用,这里图方便就用了json,也可以用xml 或者 自己的excel倒数据的工具)
3. 一个py脚本,存储工具运行需要的各种配置(Unity安装位置啊、项目路径啊、 blablabla 具体如下:)
config_autoPackage.py
# 本地Unity.exe位置
unity_exe = 'F:/unity/Editor/Unity.exe'
unity_app = '/Applications/Unity/Unity.app/Contents/MacOS/Unity'
# unity工程根目录
project_path = 'E:/U_Project/MyProject'
project_path_mac = "/Volumes/'MacOS HD Data'/MyProject"
# bundleLog位置
bundle_log = 'C:/Users/hp/Desktop/AutoPackageTest/unity_bundle_log.log'
bundle_log_mac = '/Users/xiaosu/Desktop/AutoPackageTest/unity_bundle_log.log'
# packageLog位置
package_log = 'C:/Users/hp/Desktop/AutoPackageTest/unity_package_log.log'
package_log_mac = '/Users/xiaosu/Desktop/AutoPackageTest/unity_package_log.log'
# 调用打bundle接口
bundle_fuc = 'AutoPackage.BuildBundle'
# 调用打包接口
package_fuc = 'AutoPackage.BuildApk'
# 需要revert的外链1
external_link1 = 'Assets\SharedAssets'
# 需要revert的外链2
external_link2 = 'Assets\VarietyStore'
一、自动SVN更新(git同理)
主要的命令就是 svn update,但是害怕出现各种意料之外的比如说冲突(命令行执行更新SVN的时候,一旦遇到冲突,就会给出选项让你手动键入解决方案,这时候进程就卡在 “选择题” 这儿了 ... 所以一定尽可能避免冲突),所以我选择在update之前先clearup 再 revert (我们公司有打包机专门打包用的,一般不会在打包机上对逻辑和资源进行修改,所以才这么操作),保证万无一失之后再update。
代码如下:
AutoUpdateSVN.py
import os
import config_autoPackage
import platform
__cmdCleanup = ' && svn cleanup && svn revert --recursive .'
__cmdUpdate = ' && svn update'
class P:
if_mac = False
get_dic_cmd = ''
def start_update():
m_platform = platform.system()
print('Current platform : ' + m_platform)
if m_platform == 'Darwin':
P.if_mac = True
else:
P.if_mac = False
__prepare_cleanup_SVN()
def __prepare_cleanup_SVN():
print('开始cleanup')
if P.if_mac:
P.get_dic_cmd = "cd / && cd " + config_autoPackage.project_path_mac
else:
path1 = config_autoPackage.project_path.split('/')[0]
path2 = config_autoPackage.project_path.split(':/')[1]
print("盘符: " + path1)
print("路径: " + path2)
P.get_dic_cmd = path1 + " && cd / && cd " + path2
cmd = P.get_dic_cmd + __cmdCleanup
print(cmd)
t = os.system(cmd)
print("prepare_cleanup_SVN :" + str(t))
__prepare_revert_SVN()
def __prepare_revert_SVN():
print('开始revert')
cmd = '%s && svn revert %s -R && svn revert %s -R' % \
(P.get_dic_cmd, config_autoPackage.external_link1,
config_autoPackage.external_link2)
print(cmd)
t = os.system(cmd)
print("prepare_revert_SVN :" + str(t))
__update_SVN()
def __update_SVN():
print('开始update')
cmd = P.get_dic_cmd + __cmdUpdate
print(cmd)
t = os.system(cmd)
if t == 0:
return True
else:
return False
if __name__ == '__main__':
start_update()

最低0.47元/天 解锁文章
2885

被折叠的 条评论
为什么被折叠?



