2017-09-26 54 views
2

我更新到Xcode 9,現在當我構建捆綁目標時,它不再包含xcasset圖像資源。Xcode 9不再將xcasset複製到捆綁目標

設置:

  1. 的xcasset與目標 Xcode 9 showing association with target

  2. 相關的xcasset包含在捆綁目標的Build階段的 「複製包資源」。

Xcode 9 showing copy bundle resources

結果

的xcassets內的圖像中不存在與束產物。 Terminal showing result of build

在Xcode 8的另一臺機器上,我可以構建相同的捆綁目標,並且存在TestCatalog中的圖像。

注意:TestImage.png(存在於任何xcassets之外)在Xcode 9中按預期包含在內。這使我認爲該問題與xcassets的包含方式有關。

感謝您的任何幫助。

回答

2

它工作得很好! 假設Assets.car不是你的資產目錄,但它是。 假設你的圖像不在裏面,但它們是。

如果Xcode之前將圖片拉出資產目錄並將它們放在框架頂層,是錯誤的行爲!資產目錄圖像應該被編譯到資產目錄的編譯版本中(.car文件)。現在正是發生了什麼事情。沒有理由不在編譯過程中重命名資產目錄(因爲無論如何您都無法在代碼中直接通過名稱直接引用資產目錄)。

您可以通過閱讀編譯過程中生成的報告來確認發生了什麼。但是,您不會將其包含在屏幕截圖中。我會給你看。這裏是我的項目,類似於你:

enter image description here

下面是該報告的相關部分:

enter image description here

看到最後幾行? MyFrameworkAssets.xcassets已被編譯到名爲/MyCoolFramework.framework/Assets.car的資產目錄中,完全與您的項目中一樣。

所以我認爲這個問題僅僅是正在試圖從這個「從外部」(即從外部)。使用終端)和不明白你所看到的。真正知道這是否有效的方法是讓你的框架代碼引用一個圖像並顯示它,而你沒有這樣的代碼。 (實際上,你的框架根本沒有代碼,所以它是一個相當無用的框架。)或者下載AssetCatalogTinkerer並查看assets.car文件。你會看到你的圖像在那裏!

(順便說一句,我也認爲你的項目非常糟糕主辦。屬於框架的圖像和資產目錄應在框架的文件夾。)

+1

你是對的,謝謝! 僅供參考:當使用具有--minimum-deployment-target <7.0的動作器時,它創建Assets.car,並且將所有從xcassets內的png拷貝到捆綁包中。將我的最低部署目標更新到8.0是導致更改的原因,而不是Xcode 9本身(儘管Xcode 9是爲什麼我必須更新最低部署目標,因爲它不支持早於7的iOS構建的xib!)。 –

+0

「還將xcassets中的所有png拷貝到捆綁包中」因爲您要求運行的系統版本非常古老,以至於資產目錄尚未發明! – matt

相關問題