[英]iOS: Build a Resource Bundle via Xcode Target
我想通過 xcode 目標從我的靜態庫的資源文件創建一個資源包。 我看到 Three20 有一個需要導入的 .bundle 文件。
我怎樣才能做到這一點?
Apple 不認可此解決方案。 當我與一位在 Xcode 上工作的 Apple 開發人員交談時,他們告訴我 iOS不支持資源包,他們很驚訝這竟然有效。
這個解決方案在 iOS 9 到 13 上對我有用,包括手機和平板電腦。 但是,未來對 iOS 的更新可能會破壞這一點。 請注意這一點。
我知道已經晚了 8 年,但是由於我偶然發現了這個問題,因此其他人很有可能會這樣做,所以我想我會提供一個有用的答案。
+
我們將在步驟 3 中將其轉換為 iOS Bundle
Base SDK
並將此值從macOS
更改為iOS
在這一點上,您在技術上已經完成了您的問題(為 iOS 創建了一個資源包目標),但是需要一些配置才能使其正常工作
-
按鈕刪除它們+
按鈕向 iOS 應用程序添加新的捆綁資源(未圖示)+
按鈕添加新的依賴項完成所有這些步驟后,您將構建一個與 iOS 兼容的資源包並將其嵌入到要加載的應用程序中。 這不是那么簡單,很多文章可能會說這是不受支持的,但我已經在已發布的應用程序中使用了此功能,並且效果很好
請記住,如果您現在想向您的應用程序添加任何資源(PNG、XIB 文件等),您需要將它們添加到包而不是應用程序,如下所示:
設置完成后,再檢查一次資源包的構建設置。 查找標題為“版本控制系統”的設置。 此值必須設置為None
。 如果將其設置為Apple Generic
,則在嘗試推送到應用商店時會遇到問題!
Apple 的版本控制系統將創建一個*_vers.c
文件,編譯它,然后將此二進制文件嵌入到您的包中。 由於這不是有效的 CFBundleExecutable,它會導致您的應用程序被拒絕並出現錯誤 ITMS-90171
捆綁包只是一個具有特殊結構和 .bundle 擴展名的目錄。 您可以在文檔中閱讀更多關於細節的信息。
編輯:
重要的是,bundle 只是一個帶有特殊擴展名的普通文件夾。 例如,如果你有一個名為 MyBundle.bundle 的文件夾和一個名為 image.png 的圖像,你可以用[UIImage imageNamed:@"MyBundle.bundle/image.png"];
加載它[UIImage imageNamed:@"MyBundle.bundle/image.png"];
因此,無需通過 Xcode 目標構建它。 實際上,它不適用於 iOS 項目。 您可以在項目或 shell 腳本中使用 Copy Files 構建階段。
這很簡單,也很強大。 例如,如果您符合框架文檔中列出的特殊結構,您可以使用簡單的方法、shell 腳本或 ant 任務或 rake 文件將靜態庫構建到框架中。 只要輸出目錄符合結構並且命名為Something.framework,你就可以將其作為Framework使用,即使在iOS上也是如此。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.