2012-08-17 35 views
172

我有一個使用CocoaPods的iOS項目。一切都很順利,直到另一位開發人員開始在同一個項目上工作。他做出了一些改變(據我所知只做了代碼),並在回購協議中創建了一個新分支。我檢查了他的分支,並試圖建立它,但我得到一個錯誤:未找到ASLogger/ASLogger.h文件。iOS - 編譯失敗,CocoaPods無法找到頭文件

即使我刪除了整個項目並創建了一個新副本並使用'pods安裝'。構建失敗仍然存在。你有什麼想法可以解決問題的地方嗎?如果你需要更多的信息,請問。

+2

而不是使用雙引號樣式,#import「ASLogger .h「我試過這個,#import 它對我有用:) – Baig 2013-06-05 11:05:39

+1

供參考:Baigs簡單的答案解決了我的問題,沒有找到標題。 – Pedroinpeace 2014-02-11 15:43:11

回答

10

wiki就如何解決這一問題的建議:

If Xcode can’t find the headers of the dependencies:

Check if the pod header files are correctly symlinked in Pods/Headers and you are not overriding the HEADER_SEARCH_PATHS (see #1). If Xcode still can’t find them, as a last resort you can prepend your imports, e.g. #import "Pods/SSZipArchive.h".

+11

請問有人可以詳細說明如何「檢查pod頭文件是否在Pod/Headers中正確符號鏈接」? – 2012-10-16 20:05:03

+0

請查看我的回答以上有關如何檢查符號鏈接的答案 – brainray 2012-12-27 17:35:50

+0

在破壞導入語句之前,請同時參閱有關配置的brainray的回答。 – 2013-02-11 12:06:50

84

更新

,因爲我原來的答覆,即得到了downvote我已經更新了這一點,所以我希望這有助於。如果確實如此,希望它能讓我的投票回來。

如果標題未被導入,您可能在HEADER_SEARCH_PATHS中有衝突。嘗試並將$(inherited)添加到構建設置中的標題搜索路徑,以確保它從CocoaPods中提取包含在.xcconfig文件中的任何搜索路徑。

這應該有助於解決任何衝突並正確導入源代碼。

+2

我曾經遇到過問題:在刪除或移動.svn子目錄時,應用程序和'svn受阻文件夾問題'中未檢測到Pod文件: 解決方案:通過以下步驟: 1.僅從應用程序卸載CocoaPods。 xcodeproj文件存在(參考:http://stackoverflow.com/questions/16427421/how-to-remove-cocoapods-from-a-project) 2.再次安裝podfiles(參考:http://www.raywenderlich.com/12139 /引入到cocoapods) 3.在應用程序的目標「HEADER_SEARCH_PATHS」和「OTHER_LDFLAGS」中添加了$(繼承)標誌。 – 2014-04-16 12:09:44

+0

您可能還需要將$(繼承)添加到FRAMEWORK_SEARCH_PATHS設置中。 – George 2014-05-25 16:55:39

+1

@ AlphonseR.Dsouza你的解決方案爲我工作 - 感謝一百萬加入$(繼承)給OTHER_LDFLAGS!應該在項目設置或目標設置中添加$(繼承)$ – 2015-12-06 11:32:34

35

其他答案在這裏沒有幫助。我發現2個可能會解決這個問題的其他問題:

編輯 您可以檢查一個符號鏈接是這樣的:創建一個文本文件名爲「檢查」沒有擴展名。複製這些行到它:

file=/Users/youUserName/XcodeProjectName/Pods/BuildHeaders/SVProgressHUD/SVProgressHUD.h 
if [[ ! -e $file && -L $file ]]; then 
    echo "$file symlink is broken!" 
else 
    echo "symlink works" 
fi 

然後到終端,更改爲您檢查文件所在的文件夾,然後鍵入

bash check 
+0

非常感謝!第一個入口爲我解決了它。 Pods僅在我們的項目中被設置爲第一個目標。這編好,但其他目標沒有。所以我也爲它添加了Pods配置,現在問題已經消失。 – mwidmann 2013-06-07 11:22:42

+0

我在配置中看不到'Pods'。這是否意味着我的符號鏈接被破壞? – Adamski 2014-10-21 23:00:42

34

下面是我工作:

轉到Target>「Build Settings」標籤並找到「用戶標題搜索路徑」設置。

將此設置爲「$(BUILT_PRODUCTS_DIR)」並選中「遞歸」複選框。

現在,構建的目標將搜索工作空間的共享構建目錄以查找可鏈接的頭文件。

====

UPDATE

我最近也有類似的(雖然略有不同)的問題。事實證明Xcode無法找到Pod,因爲我打開了.xcodeproj文件而不是.xcworkspace文件。未來可能會幫助別人。

+1

這對我有用,但只有退出Xcode,運行'pod install'並重新打開後。 – 2015-11-02 21:53:13

+0

@Snowcrash什麼目標? Pod目標或主要項目目標? – VAAA 2017-04-26 19:44:57

56

頭文件,你會死我了......

終於得到它通過增加(包括引號)

"${PODS_ROOT}/BuildHeaders" 

到用戶頭搜索路徑條目,並檢查工作「遞歸」。

+5

請注意,引號在這裏非常重要。沒有他們,我無法實現它的工作。 – DiscDev 2013-09-29 00:30:55

+4

+1我已經有'$(繼承)'(沒有工作),但加入這對我工作。 – iwasrobbed 2013-12-05 17:13:34

+0

沒有得到你想說的話。 :/請你詳細說明一下嗎? – 2014-06-25 20:20:42

16

您是否嘗試導入Cocoapods風格?

#import <ASLogger.h> 

網站上的信息是不是真的不清楚,我提交了一個拉請求:

https://github.com/CocoaPods/cocoapods.org/pull/34

更新:他們把我的要求:)

+0

使用雙引號風格, #進口「ASLogger.h」 我想這一點, #進口 而不是和它的工作對我來說:) – Baig 2013-06-05 11:02:06

+0

我之前已經試過這一點,它一直對我來說,但有時會出現不同的問題,當它不起作用。至少在某些情況下,您還可以使用格式。 – funroll 2014-03-27 23:04:27

+0

是的,這也適用於我!沒有任何清理和刪除派生數據的解決它,但這工作。 – PostCodeism 2015-11-20 23:31:10

48

我發現${PODS_HEADERS_SEARCH_PATHS}是缺少,它沒有在我的開發git分支中定義,所以我添加了"$(SRCROOT)/Pods/Headers/"用於遞歸的標題搜索路徑

這是確定的,我

+0

這是我的答案,我更新了cocoapods,我認爲這使得PODS_HEADERS_SEARCH_PATHS消失。我的解決方案與此類似,但是我使用了「$(PODS_ROOT)/ Headers」 – 2013-07-25 05:23:24

+0

其他答案對我來說不起作用,但是這樣做了。我會注意到我沒有包含「,所以我的標題搜索路徑看起來像這個'''$(SRCROOT)/ Pods/Headers''' – Blakedallen 2015-05-20 03:41:35

+0

@Hlung hi,我需要在那裏添加$(SRCROOT)/Pods/Headers /?Appreciate – VAAA 2017-04-26 15:42:16

197

更新

確保您Podfile包括上缺少一個配置文件的目標link_with。 Cocoapods only sets the first target by default否則。例如

platform :osx, '10.7' 
pod 'JSONKit',  '~> 1.4' 

link_with 'Pomo', 'Pomo Dev', 'Pomo Tests' 

------最終更新


注:請做筆記,你必須尋找到工程 - >信息 - >配置爲下面的步驟。


我有類似的症狀,發現沒有被包括在特定targetpods.xcconfig文件我試圖建立。其他一些建議的解決方案爲我工作,但這似乎解決了一部分潛在問題。

Pods.xcconfig not working

簡單的解決辦法是改變設置的配置文件是沒有一個確定的目標。

Pods.xcconfig working

+4

對我來說,''pods install''只在第一​​個目標上設置此項,按照這個答案中的建議解決了我的問題 – Troy 2013-08-24 20:50:15

+1

最後一個解決方案:Pods只添加到第一個目標,而不是添加到各種測試版本目標(alpha,beta,release候選版本)!非常多thanx! – JOM 2013-10-16 07:04:53

+0

使用'link_with'指定我的其他目標爲我工作,非常感謝。我剛剛在這上面花了幾個小時。 – 2014-10-17 00:59:16

0

我是5.0的Xcode的轉基因種子,我不能得到任何回答這些問題的工作。我在關於標題導入w/cocoapods的多個不同問題上嘗試了每個單獨的答案。

最後,我找到了一個適用於我的解決方案:我通過Mac AppStore(安裝在GM種子上)升級到Xcode 5.0,現在頭導入按預期工作。

我的系統上還有一個測試版的Xcode 5,我也刪除了它。也許這是兩件事的結合,但希望這可以幫助別人。

0

這是我的答案,我更新了cocoapods,我認爲這使得PODS_HEADERS_SEARCH_PATHS消失。我的解決方案與此類似,但我使用「$(PODS_ROOT)/ Headers」 - Andrew Aitken

非常感謝您的回答。我很難找到解決問題的方法。非常感謝你。

1

對我來說問題在於其他鏈接器標誌值。出於某種原因,我沒有像-l"xml2"-l"Pods-MBProgressHUD"這樣的標記中的引號。

+0

我遇到了Localytics的Cocoapod問題,在其他鏈接器標誌下,我找到了兩個條目:' - | Localytics'和'| --PodsLocalytics '我刪除了那些,然後能夠編譯 – Chris 2016-01-26 18:22:37

1

我不得不從下載中心混帳的拉鍊和在波德/對應的路徑拖動丟失的文件到Finder中......

0

無答案的幫助我(我有我的豆莢所有指標掛鉤,正確構建配置設置,設置搜索路徑「$(繼承)」等)。

問題本身消失我更新的CocoaPods到最新,使用調試版本標準安裝/更新命令之後:

gem install cocoapods --pre 

或:

sudo gem install cocoapods --pre 

(如果安裝過程中使用須藤)。

它一定是cocoapods錯誤。

2

如果你有一個後建設的錯誤「吊艙安裝」或「莢更新」,它可能是當你還在用以前的你豆莢一個已建成的XCode 6.3版。

在我來說,我不得不從小牛到優勝美地更新我的OSX擁有的Xcode 6.3和解決問題

+0

嗨@omaty,這是唯一的解決方案嗎?我目前在Xcode 6.2上運行小牛隊 – goelv 2015-04-23 04:20:19

+1

你好@goelv在我的情況下,這是我發現的唯一解決方案。就像你在Mavericks和Xcode 6.2下一樣 – Omaty 2015-04-23 11:42:11

+0

我認爲即使我有同樣的問題,我的隊友在Yosemite有Xcode 6.3,對他來說工作得很好,但是我努力擺脫頭部不是爲了在Xcode 6.2中的Mavericks中沒有問題。 – 2015-04-27 08:12:49

66

1.檢查

build settings -> Search Path -> User Header Search Paths ->

  • 「$ {} PODS_ROOT /」 遞歸

enter image description here

enter image description here

enter image description here enter image description here

2。如果檢查進口的風格(KEY POINT), 您的podfile已設置

use_frameworks!

在你File-Bridging-Header.h,格式化應該喜歡這個

#import "MBProgressHUD.h"

其他應低於

#import <MBProgressHUD.h>

3.那一定是工作!相信我

+1

大多數錯誤消失。但是,如果依賴項具有如下導入語句,我該怎麼辦?#import 。 然後編譯器告訴我改爲編寫#import EARestrictedScrollView.h。但我無法修改我的吊艙。 – slashburn 2016-05-22 18:54:27

1

我會更新我的生成設置下面的東西,我沒有得到任何錯誤。檢查這些是更新你的cocoapods時的事情。

構建設置

Enable Bit code - YES(if you are using bitcode)

Macro preprocessor - $(inherited)

Other linker flag - objc, -lc++, $(inherited)

構建結構僅

Debug - Yes

Relese - No

搜索路徑

Framework search path - $(inherited) $(PROJECT_DIR)

Library search path - $(inherited)

Header search path - $(inherited)

17

如果沒有日。上面的工作爲你,你正在發現這個錯誤,因爲你剛剛在你的Podfile切換到use_frameworks!,閱讀:

我試過以上所有的解決方案和更多,才知道它不是關於搜索標題路徑所有在我的具體情況;這就是當你在你的Podfile中切換到use_frameworks!時,你不再需要在你的橋接頭中包含框架,事實上Xcode會拋出無用的「找不到頭」錯誤。

你需要做的是從你的橋接頭文件中刪除所有的輸入,並且根據需要在你的Swift文件中使用Swift import Module,就像Swift框架一樣。

如果您在Obj-C類中使用任何框架標題(在我的情況下,我們有一個使用FBSDK的便利類),您需要將其從本地導入到全局導入(這意味着更改#import "Module.h"#import <Module/Module.h>,當你開始輸入框架名稱時它應該自動完成,在我的情況下它是<AFNetworking/AFHTTPRequestOperationManager.h>)。

編輯:我已經知道,做一個@import Module使用更安全的傘文件。

0

選擇Pods項目,找到並選擇Pod項目的目標目錄中缺少標題的目標框架,並在目標構建的「Architectures」下將「僅生成活動架構」設置爲「否」設置。

9

我是團隊中遇到同樣問題的唯一開發者,它對每個人都非常合適,所以我意識到它必須是我的環境。我在另一個目錄中嘗試了相同項目的git clone,並且它編譯得很完美,然後我意識到它必須是Xcode緩存的項目路徑的某處,「某處」是DerivedData文件夾,只需將其刪除並執行乾淨的構建你的項目,它爲我工作。

你可以得到的路徑,甚至在取景器通過去打開文件夾:

的Xcode - > - >位置 - > ** DerivedData

+1

在我的情況下,更新豆莢後出現問題,所以我認爲在cocoapods應該搜索問題。我已經嘗試過所有解決方案,但沒有運氣,最後只是清除了DerivedData - 它幫助了!謝謝 – Varrry 2016-10-31 16:40:32

1

我有同樣的問題,但上述解決方案無法正常工作。 我已經這樣定吧:

  1. 刪除整個項目
  2. 運行git克隆項目並運行捆綁高管莢安裝
  3. CD的peoject和運行遠程添加上游您的遠程-REP -add
  4. GIT中取上游
  5. GIT中結帳主
  6. GIT中合併上游/主

然後它工作。

0

我通過我想使用的拖放框架解決了Xcode 8.2.1的這個問題。

-1

一個簡單的解決方法是: 1.刪除Pods文件夾和Podfile.lock文件。但是,不要在你的項目的根文件夾中刪除Podfile 2.運行以下命令:

pod install 
0

這裏的另一個原因是:所有的頭路徑看起來很好,但我們仍然在預編譯(.PCH)文件有錯誤試圖讀取吊艙標題

(即#import <CocoaLumberjack/CocoaLumberjack.h>)。我終於注意到這個錯誤打破了我們的Watch OS擴展目標,而不是我們正在構建的主要目標,因爲我們還將.pch預編譯頭文件導入到Watch OS目標中,它在那裏失敗。確保您的伴隨Watch OS目標設置不會嘗試導入.pch文件(特別是如果您從主目標設置中設置導入,就像我一樣!)

相關問題