簡體   English   中英

引用資產目錄並從框架中包含資產目錄都會創建重復項嗎?

[英]Does Both Referencing an Asset Catalogue and Including it from a Framework Create Duplication?

正如此處此處所討論的,將可重用圖像托管在Framework的.xcassets文件中,然后在應用程序的故事板/ XIB中使用這些圖像的唯一明顯方法是,直接在應用程序的內部手動創建對該目錄文件的引用項目。 這會將資產放入應用程序的主捆綁包中,並在嘗試通過Interface Builder使用資產時避免了該錯誤:

無法加載標識符為“ BundleName”的捆綁包中筆尖引用的“ ImageName”圖像

但是,我的問題是: 這會導致在構建時資產重復嗎? iOS是否足夠聰明,不會加倍兩者的資產:

  • 在應用程序的主捆綁中引用, 並且
  • 包含在嵌入式框架捆綁中

如果這確實導致重復,那么還有什么其他方法可以更有效地達到相同的結果? 該框架需要嵌入到應用程序中,因為它包含其他可重用的代碼,並且資產也必須位於框架的目錄中,因為它們也在其他應用程序中使用。

蘋果的目標是最小化資產所需的空間,因此資產被合並並壓縮到一個名為“ Asset.car”的文件中。

當您提交給應用商店時,將啟動一個名為“應用細化”的過程,該過程將為不同的實際設備創建變體。

您可以在本地模擬該過程,甚至可以使用第三方工具在“ Asset.car”文件中查看。

我在此答案中詳細描述了整個過程: 使用Xcode 10構建iOS10上的像素化​​圖像

為了自己測試,我做了以下工作:

  • 我創建了一個工作區
  • 我添加了一個框架
  • 我添加了一個應用
  • 在框架內,我添加了一個'Media.xcassets'
  • 我從應用程序引用了這個Media.xcassets
  • 我在Media.xcassets中添加了一張名為“ Regensburg.jpg”的圖片
  • 我在情節提要中使用此圖像

然后,執行上面鏈接的答案中所述的過程,並提取Asset.car文件。

當查看內部的第三方工具時,可以看到該圖像僅在其中一次。

好消息:像預期的那樣,沒有重復發生。

截圖

截圖

在屏幕截圖中,您可以看到:

  • 具有框架和應用程序以及后台的.xcassets的Xcode項目結構

  • 情節提要中唯一圖像的使用

  • 在Finder右下角區域中提取的Assets.car

  • 最后在左下角提到的第三方工具,在那里您看到文件僅存在一次

更多信息

就像在其他答案中一樣,我建議您看一下WWDC 2018的這段視頻:第227節,優化應用程序資產, https://developer.apple.com/videos/play/wwdc2018/227/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM