2013-02-03 119 views
0

我有很多的PNG圖像到一個目錄。如果更新,我將它作爲內容/副本添加到項目中。我可以從應用程序加載他們沒有問題。如何將大量資源文件添加到monodouch項目中?

但是,該項目需要大量的時間進行編譯。如果我在代碼中做了一些改動,項目再次重新編譯。這需要很多時間。

我試圖添加另一個項目,將文件添加到新的項目,但我無法從應用程序訪問文件。

有沒有解決方法?

當然,當我調試到iPad的應用程序,上傳+安裝需要很多時間。這些文件不會改變,所以......有沒有任何方法可以一次性複製所有內容?

感謝

+0

您實際上不必在MonoTouch項目中設置「複製如果更新」,只需將構建操作設置爲「內容」即可。如果你改變這個,你的建造時間會加快嗎? – jonathanpeppers

+0

我會嘗試!!,謝謝 –

+0

正如jonathanpeppers所說,不要設置「Copy if newer」(複製到bin/Debug/iPhone /而不是到.app目錄中)。此外,BundleResource優於Content。 – jstedfast

回答

0
  1. 放置在一個單獨的類庫
  2. 馬克所有文件作爲嵌入資源
  3. 添加邏輯名到每個資源的圖像(在你的項目文件)
<EmbeddedResource Include="Images\Folder\Filename.ext"> 
    <LogicalName>LogicalNameForImage</LogicalName> 
</EmbeddedResource> 

4.加載資源爲

UIImage.FromResource(yourAssembly, "LogicalNameForImage"); 

嵌入式資源按需加載,而不是在程序集加載時加載。

+0

啊哈,是一個很好的解決方案!但它迫使我分配邏輯名稱,這有點複雜,但可以從我的編輯器導出模塊完成。 謝謝! –

+0

嵌入圖像的問題在於,您將無法利用UIKit的功能加載正確的分辨率圖像(視網膜vs標準)。 – jstedfast

1

我剛剛發現了一個招數。看來,MonoTouch的不刪除目錄,當你上傳和從MonoDevelop的environtment安裝,所以:

  1. 添加您的文件夾和所有文件,並將其標記爲內容
  2. 生成項目爲iPhone/iPad和運行從MonoDevelop的
  3. 從項目簡介
  4. 清潔液中取出數據foldres
  5. 讓你在你的代碼需要的任何變化,你的數據在設備reamins!

改變了所有!在此之前,當我需要對代碼進行小改動時,我需要等待大約15分鐘才能建立和上傳。現在只需1分鐘!

+0

這些文件中的大部分文件是否會作爲構建的一部分被壓縮?如果是這樣的話,我已經修復了MonoDevelop(遺憾的是沒有及時更新到4.0),如果它們沒有改變,這將避免重新複製和重新壓縮圖像。 – jstedfast

0

在未來的MonoDevelop版本中(我的補丁沒有及時爲即將到來的4.0版本發佈),這不再是一個問題。

目前發生在MonoDevelop中3.X什麼是建設一個項目時,它只會複製已更改到應用程序包中的圖片,但是,建成後,MonoDevelop的調用是在Xcode一起安裝的腳本稱爲iphone-optimize,它掃描整個應用程序目錄並使用pngcrush來壓縮所有圖像(它也將所有plist文件轉換爲二進制plists)。 這個是如果你有很多圖像會導致如此緩慢的編譯時間的步驟。

剛過4。0分支關閉QAing,我寫了一個補丁,避免需要調用iphone-optimize腳本。相反,MonoDevelop會做的是直接調用pngcrush只有已更改的圖像,將正確的應用程序目錄位置作爲輸出參數傳遞給pngcrush,以便我們避免額外的文件副本。

從我自己的測試,這使得大量改善建設時間爲許多圖像文件的項目。

在此期間,你可能,是使iphone-optimize腳本的備份(應/Applications/Xcode.app下位於某處),然後修改它不會壓壞的圖像文件。然後,一旦你完成了這些工作,就可以預先壓縮項目中的所有png文件。 (注意:當我的補丁MonoDevelop最終發佈時,它也可以選擇禁用已經預先粉碎它們的圖像的開發人員調用pngcrush)。

相關問題