您好,登錄后才能下訂單哦!
用過XCode的人都知道,XCode有一個臭名昭著的bug——除非你修改了源代碼造成了重新編譯,否則游戲包中的資源經(jīng)常無法刷新。不管怎么運行資源都是舊的。
關(guān)于這個問題,業(yè)內(nèi)有幾位同行已經(jīng)詳細探討過了。有幾種解決方法,其中一種方法是,在運行時強制把資源刪除,這樣XCode會重新導(dǎo)入新的資源。要做到這一點就是寫一個腳本,讓這個腳本在XCode運行時自動執(zhí)行。
“我是妖怪”兄曾經(jīng)寫了一個blog,來論述如何寫這個腳本,我修改了一下,封裝成了函數(shù),這樣做新項目時很方便。(好吧,這個是改的,叫自制工具不太好,但是系列標題又不好改。。。)
_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/ #函數(shù)作用:刷新資源文件夾,解決xcode不能刷新資源文件夾的bug #參數(shù)1:傳入要操作的文件夾 function operation_folder() { rm -fr $_TARGET_BUILD_CONTENTS_PATH/$1/* mkdir -p $_TARGET_BUILD_CONTENTS_PATH/$1/ #判斷文件夾不為空,才進行復(fù)制,防止cp命令報錯 DIRECTORY=$PWD/../Resources/$1/ if [ "`ls $DIRECTORY`" != "" ]; then cp -RLp $DIRECTORY/* $_TARGET_BUILD_CONTENTS_PATH/$1/ echo operation_folder:$1 completed! fi }
調(diào)用的時候,在這段代碼后面接著寫,函數(shù)直接后面加參數(shù)就行,比如你的Resources下面有若干子文件夾,pic,ui,sound等。如下方式調(diào)用:
operation_folder sound; operation_folder ttf; operation_folder script; operation_folder data; operation_folder pic; operation_folder ui;
然后把這個腳本加載到項目的Build Phases中。XCode每次run都會運行這個腳本。
參考文獻:
確保 Xcode 每次 Build 時都自動更新資源——我是妖怪兄的原文,這篇文字的代碼就是改自這里
http://dualface.github.io/blog/2013/07/31/flush-res-when-build/
XCode ios iphone 變態(tài)的資源管理——這篇文章詳細論述了XCode資源更新的bug
http://www.cnblogs.com/dabaopku/archive/2012/04/11/2441679.html
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。