cocos2d-x自制工具08:让XCode运行时自动更新资源(改进版)

简介:

用过XCode的人都知道,XCode有一个臭名昭著的bug——除非你修改了源代码造成了重新编译,否则游戏包中的资源经常无法刷新。不管怎么运行资源都是旧的。


关于这个问题,业内有几位同行已经详细探讨过了。有几种解决方法,其中一种方法是,在运行时强制把资源删除,这样XCode会重新导入新的资源。要做到这一点就是写一个脚本,让这个脚本在XCode运行时自动执行。


“我是妖怪”兄曾经写了一个blog,来论述如何写这个脚本,我修改了一下,封装成了函数,这样做新项目时很方便。(好吧,这个是改的,叫自制工具不太好,但是系列标题又不好改。。。)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
_TARGET_BUILD_CONTENTS_PATH=$TARGET_BUILD_DIR/$CONTENTS_FOLDER_PATH
echo  _TARGET_BUILD_CONTENTS_PATH: $_TARGET_BUILD_CONTENTS_PATH
echo  PWD: $PWD
echo  Cleaning $_TARGET_BUILD_CONTENTS_PATH/
#函数作用:刷新资源文件夹,解决xcode不能刷新资源文件夹的bug
#参数1:传入要操作的文件夹
function  operation_folder()
{
     rm  -fr $_TARGET_BUILD_CONTENTS_PATH/$1/*
     mkdir  -p $_TARGET_BUILD_CONTENTS_PATH/$1/
                                                                                                                                                          
     #判断文件夹不为空,才进行复制,防止cp命令报错
     DIRECTORY=$PWD/.. /Resources/ $1/
     if  "`ls $DIRECTORY`"  !=  ""  ];  then
      cp  -RLp $DIRECTORY/* $_TARGET_BUILD_CONTENTS_PATH/$1/
      echo  operation_folder:$1 completed!
     fi
}


调用的时候,在这段代码后面接着写,函数直接后面加参数就行,比如你的Resources下面有若干子文件夹,pic,ui,sound等。如下方式调用:

1
2
3
4
5
6
operation_folder sound;
operation_folder ttf;
operation_folder script;
operation_folder data;
operation_folder pic;
operation_folder ui;


然后把这个脚本加载到项目的Build Phases中。XCode每次run都会运行这个脚本。

wKioL1LVBl-Cgd9JAAKvUuEBCBY582.jpg



参考文献:

确保 Xcode 每次 Build 时都自动更新资源——我是妖怪兄的原文,这篇文字的代码就是改自这里

http://dualface.github.io/blog/2013/07/31/flush-res-when-build/

XCode ios iphone 变态的资源管理——这篇文章详细论述了XCode资源更新的bug

http://www.cnblogs.com/dabaopku/archive/2012/04/11/2441679.html







 本文转自 老G 51CTO博客,原文链接:http://blog.51cto.com/goldlion/1351616,如需转载请自行联系原作者

相关文章
|
4月前
|
iOS开发 MacOS Perl
解决Xcode运行IOS报错:redefinition of module ‘Firebase‘和could not build module ‘CoreFoundation‘
解决Xcode运行IOS报错:redefinition of module ‘Firebase‘和could not build module ‘CoreFoundation‘
152 4
|
iOS开发
Xcode运行报错The certificate used to sign “XXX” has either expired or has been revoked.解决办法
Xcode运行报错The certificate used to sign “XXX” has either expired or has been revoked.解决办法
252 0
|
iOS开发
Xcode运行报错Failed to prepare device for development.解决办法
Xcode运行报错Failed to prepare device for development.解决办法
670 0
|
开发者 iOS开发
Xcode运行报错The operation couldn’t be completed. Unable to launch xxx because it has an invalid code...
Xcode运行报错The operation couldn’t be completed. Unable to launch xxx because it has an invalid code...
918 0
|
IDE API 开发工具
Xcode低版本运行高版本代码的适配问题
最近升级到Xcode13后,发现机子发热量过大,卡顿量,于是做好适配iOS15后,再安装Xcode12,把Xcode12作为开发IDE
407 0
|
移动开发 iOS开发 Perl
ReactNative运行IOS在Xcode 11.0编译报错
ReactNative运行IOS在Xcode 11.0编译报错
134 0
ReactNative运行IOS在Xcode 11.0编译报错
|
iOS开发
Xcode12运行iOS14卡在启动图
有关Xcode真机调试iOS14.2设备时候卡在启动页的问题, 网上写的大部分方法已经使用过了, 不行的
291 0
Xcode12运行iOS14卡在启动图
|
iOS开发 MacOS
全网首发:(解决办法)MAC OS Xcode给应用设置沙箱(Enable App Sandbox)之后,运行报错Illegal instruction: 4
全网首发:(解决办法)MAC OS Xcode给应用设置沙箱(Enable App Sandbox)之后,运行报错Illegal instruction: 4
760 0
全网首发:(解决办法)MAC OS Xcode给应用设置沙箱(Enable App Sandbox)之后,运行报错Illegal instruction: 4
|
iOS开发
Xcode编译后运行程序Killed: -9,因为签名有问题
Xcode编译后运行程序Killed: -9,因为签名有问题
259 0
|
开发工具 iOS开发 git
mac安装git后,在终端里运行git命令,系统提示需要安装Xcode问题解决
直接下载git for mac 安装包,https://git-scm.com/download/mac 安装完后,git的默认安装目录是:/usr/local/git 但是使用 which git 命令后,发现git的目录是:/usr/bin/git 意思是我们安装的git-xxx.dmg默认路径在/usr/local/git,但Mac系统执行git命令却去/usr/bin/git下找。
3182 0