2011-03-11 24 views
76

我剛升級到XCode 4,並試圖創建一個早期項目的特別版本。無論何時使用「歸檔」選項,我最終在組織者窗口中根本沒有歸檔,或者存在歸檔,但沒有選項將它打包爲.ipa,因爲「歸檔類型不存在包裝程序」。XCode4 + iOS 4.3:「不存在用於存檔類型的包裝程序」

是否有人爲XCode 3.2遷移的項目專門構建了在XCode 4下工作?

+0

類似的問題,但還沒有答案:-(HTTP更改選項「項目」://計算器。 com/q/5265292/509535 – Manni 2011-03-11 10:27:47

+0

首先嚐試在Mac Disk Utility中清理並檢查文件權限 – Sergnsk 2011-03-11 10:35:05

+0

任何人都知道如何創建並添加這樣一個包裝器? – 2011-03-13 07:20:16

回答

134

您可能在主項目中有一些鏈接的項目(如librairies)。轉至這些項目的「生成」設置並將「跳過安裝」(Deployement類別)設置設置爲「是」,但將主項目的「跳過安裝」設置爲「否」。構建,存檔,你應該能夠選擇ipa軟件包。

+0

在我的情況下,我還包括從子項目複製到我的源代碼的頭。然後它工作。 – 2011-03-16 20:32:28

+5

+1無法想象如果您沒有發佈此答案,我會失去多少個小時。 – cduhn 2011-03-18 02:42:07

+0

+1救了我,謝謝!重要的是,人們理解這一點必須在靜態庫本身上完成,而不是您的應用目標。這讓我想起了一點。 – jj0b 2011-04-08 18:29:47

5

下面是我們發現這個問題有用的其他兩個小技巧......沒有答案,但他們可以節省別人的時間很多,如果你使用的是不被內置靜態庫亂搞8/

通過xcode4,那麼「deployment-> skip install」解決方法將不適用於他們。解決此問題的方法是不要將它們添加到項目中,並確保它們的路徑位於Build Settings的Header和/ Library Search Paths中,並且-lblah條目將添加到Linker Flags中。另外,如果你有一個靜態庫設置爲目標依賴(例如,我們有libjson.a設置爲這個,我敢肯定這是正確的/合乎邏輯的事情),那麼你根本無法做到無論如何構建.ipa的。我們花了整整一天的時間在這個愚蠢的問題上跳舞,結果只是把它解決了。就我個人而言,我認爲這應該會導致一個破碎的項目......但它的作用如此之大。

+0

謝謝,這也適用於我。 「Skip install」沒有任何效果,最後從我的項目目標中移除lib的項目/目標依賴項就是解決方案(並且我只是簡單地將「.a」文件添加到項目的鏈接庫中,+連接到頭文件) – 2011-10-10 16:33:46

25

謝謝,但我需要3個步驟entierly與我的項目框架解決的問題:

  1. 設定目標構建設置/「跳過安裝」屬性設置爲「YES」的每個依賴項目

  2. 清除每個項目的目標構建設置「安裝目錄」屬性

  3. 對於每個項目,將項目的「構建階段/構建設置/複製標題」公共/專用部分中的每個標題移動到項目

+3

第三步爲我做了!謝謝! – Erik 2011-05-25 11:08:44

+0

我希望我可以upvote你十倍。 #3爲我解決了這個問題。 – mmc 2011-06-15 01:35:16

+0

太好了,在添加兩個步驟之後幫助我:清理並重新打開XCode。謝謝! – 2011-08-19 15:43:42

1

跳過安裝對我不起作用。我解決了這個問題,將所有標記爲public的標題移動到項目中。我目前正在使用靜態庫和ipad proj工作。似乎有一個錯誤或xcode的任何東西,只要你想建立你的產品與一個鏈接的項目,xcode建立兩個和組織者不會顯示共享一個IPA的選項。

3

爲了弄清楚什麼項目/庫/組件,它是防止Xcode中作出適當的歸檔做到這一點:

查找在管理檔案,單擊鼠標右鍵,在Finder中顯示。這將顯示一個.xcarchive文件。右鍵單擊並顯示包裝內容。現在查看產品文件夾。最有可能的不僅僅是一個帶有一個iPhone應用程序的應用程序文件夾。

在我的情況下,有一個包含libOAuthConsumer_iPhone.a的usr/local/lib文件夾結構,當我在Xcode中搜索時,確實發現了另一個項目,我沒有將Skip Install設置爲YES。 對於每個人來說,看起來並不是那麼容易,但是在包內部看起來至少應該給你一個關於哪個組件弄亂了歸檔過程的指針。

9

我發現這些答案的組合解決了這個問題。我花了很多時間來驗證所有鏈接項目的跳過安裝是否設置爲是,事實證明這只是我的一部分問題。如果您遇到此問題,請按以下步驟操作:

  1. 在管理器中找到存檔,右鍵單擊並選擇在Finder中顯示。
  2. 右鍵單擊Finder中的.xcarchive文件,然後選擇Show Package Contents。
  3. 找到產品文件夾,看看裏面有什麼。 Products文件夾中應該只有一個Applications文件夾,而Applications文件夾應該只包含一個iPhone應用程序(YourProject.app)。

如果在步驟3中,你會發現無論是直接下的產品或子文件夾的靜態庫(<一些庫> .a)中,去Xcode和選擇產生的靜態庫項目(你應該能夠根據靜態庫的名稱來判斷它是哪個項目)。轉到生成設置並選擇目標,然後將「跳過安裝」設置爲「是」。

如果在步驟3中,你會發現無論是直接下的產品或子文件夾的頭文件(<一些頭> .h)中,去Xcode和選擇包含這些頭項目。您應該能夠根據頭文件名稱中使用的前綴找到項目。在該項目中,轉到「構建階段」,然後在「複製標題」部分中,將「公共」和「專用」部分中的所有標題移動到「項目」部分。

感謝this answerthis answerthis answer幫助我解決這個問題。

+1

「在該項目中,轉到」構建階段「,然後在」複製標題「部分中,將公共和私有部分的所有標題移動到」項目「部分。」 < - 這個工程!謝謝! – Hlung 2012-01-11 07:26:09

+0

非常感謝你.... – IKKA 2013-04-13 07:45:51

1

這些步驟的xcode 4.2

1爲了解決上述問題:「跳過安裝」爲YES其中加入所有第三部分庫。 「跳到安裝」爲您的項目。您可以從「生成」設置訪問「跳到安裝」。

2:選擇從左邊的導航窗格中的第三方庫頭。

2.1:在右邊是Utililtes pane.Show並與視圖中隱藏它 - >實用程序 - >顯示/隱藏公用事業(命令選項-0)或具有第三個按鈕的視圖工具欄上的分段控制

2.2:選擇文件檢查器(命令選項-1)

2.3選擇目標的會員,並從公共或私人

相關問題