U3D 自动更新/打Bundle/打包

        这几天搞了个自动打包的工具,开始的时候也是胡搞乱搞一头雾水,一顿查资料啊、翻看别人写的博客啊,终于搞出来了。但是现在回头看,感觉这东西其实就一层窗户纸,捅破之后,也挺简单的~

        公司的项目太大,打一次包真的是慢的一匹... 那么这个打包工具就应运而生了,每天定时执行:先自动更新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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值