unity平台切换,实现增量更新打包资源工具思路
前些时间接手一个旧项目(unity),其中在发苹果包时,发现每次都需要自己管理资源的更新和重新输出苹果所需资源。
为此,实现了 一个自动化的工作流程,每次在IOS打包前,自动从SVN上更新最新代码和资源,然后对比列出新增、已删除、已改变的内容。对已删除的资源从IOS资源中删除,对新增和改变的转变为IOS资源。
基本思路是:
1:在Assets同级目录下新建一个IOS资源备份文件夹如:NEWAB。
2:删除Assets/StreamingAssets文件夹。
3:调用更新SVN命令,并等待SVN执行完成,暂停逻辑往下执行。“var proc = System.Diagnostics.Process.Start("TortoiseProc.exe", "/command:update /path:" + buildPath + " /closeonend:0"); proc.WaitForExit();”
4:对从SVN更新到的Assets/StreamingAssets/下的文件生成一份index.xml文件,并记录CRC32码,名字,路径等必要信息。
5:比对Assets/StreamingAssets/index.xml 和 NEWAB/index.xml ,找出新增、已删除、已改变的内容(对比CRC32),分别保存。(如果是第一次,所有资源都会被标记为新增。)
6:遍历Assets/StreamingAssets/index.xml对NEWAB下的文件进行清理,清理掉已删除资源和已改变的资源。再对新增和已改变的资源,重新以IOS打包一次资源,放到NEWAB/文件夹下。
7:用Assets/StreamingAssets/index.xml 替换掉 NEWAB/index.xml。(注意是替换而不是重新生成,重新生成,所有CRC码就不同的。两边的对比对象要一至,才有可比性。)
8:删除Assets/StreamingAssets/文件夹下的所有内容。
9:将NEWAB/文件夹下的内容拷贝到Assets/StreamingAssets/目录下。
10:完成增量检测资源打包。