2017-03-07 50 views
4

火力地堡分析我加入使用coocapods火力地堡的分析,我Podfile是與iOS框架開發項目

platform :ios, '8.0' 
use_frameworks! 

workspace 'ProjectWorkspace.xcworkspace' 

abstract_target 'Shows' do 
    pod 'SwiftProtobuf', git: 'https://github.com/apple/swift-protobuf.git', :tag => '0.9.24' 
    pod 'Firebase/Core' 
    pod 'Firebase/Messaging' 

    target 'HostApp' do 
     project 'HostAppFolder/HostApp.xcodeproj' 

    end 
    target 'HostAppReleaseTarget' do 
     project 'HostAppFolderApp/HostApp.xcodeproj' 

    end 

    target 'FrameWorkProject' do 
     project 'FrameworkProjectFolder/FrameWorkProject.xcodeproj' 
    end 

end 

如果我添加SwiftProtobuf只依賴它的正常工作的主機應用程序以及爲框架項目。

如果我添加火力地堡的依賴,我得到一個運行時錯誤和錯誤味精

類Foo應用程序崩潰在兩個落實,兩個HostApplicationPath和FrameworkProjectPath一個將被使用。哪一個是未定義的。

對於Firebase的每個類文件。

當我從框架項目中刪除其他鏈接器標誌$(繼承)時,它工作正常,但我不能在我的框架項目中使用firebase。

我的框架和主機應用程序是用Swfit 3.0版本的Xcode是8.x的

我的項目結構 我手動創建一個工作區,並把它命名爲「EVAWorkspace.xcworkspace」,並增加我的主機應用程序和框架項目到這個工作區,然後我將cocoapods添加到工作區。

Project structure

伊娃框架項目和EvaApp是主機應用程序項目。

+0

當您嘗試在您的框架中使用Firebase時,能否請您說明您所得到的錯誤? –

+0

也請顯示您的項目結構和依賴項:HostApplication和FrameworkProject。 –

+0

謝謝@DavidV,當我從框架項目中刪除$(繼承)標誌時,我在UtilityMethods中得到錯誤 - >「未定義符號的架構armv7: 」_OBJC_CLASS _ $ _ FIRAnalytics「,引用來自: objc-class-ref。 o「 –

回答

0

在嘗試以下各項之前,請在XCode中使用「Clean Build Folder」選項,以確保您每次都能獲得乾淨的內部版本。如果你想成爲真的肯定的是,你可以在~/Library/Developer/Xcode開始(只需確保Xcode是,當你刪除它關閉)

首先,確保你的莢項目「建設活動Architecture之前刪除DerivedData文件夾只有「在其生成設置中設置爲NO。然後嘗試清理構建文件夾並重建。這可能會解決您的問題,否則請繼續閱讀。

您所描述的問題最常見的原因是:「架構X的未定義符號」是您已經在代碼中導入了一個庫,但尚未正確鏈接它。

來解決這個問題,你應該:

  • 庫添加到「鏈接的框架和庫」「BuildPhases」

  • 添加庫的路徑到「庫搜索路徑」 under Bu ild設置,然後將`-1 -l {您的庫}添加到「其他鏈接器標記」。

如果這不能解決您的問題,可能是鏈接器沒有獲取所需的標誌。您可以嘗試將$(繼承)添加回「構建設置」的「其他鏈接器標誌」部分。

不要忘記在嘗試這些技巧之前清理您的構建文件夾。

如果在做完所有這些之後,您的問題仍然存在,請刪除項目中所有Cocoapods創建的文件,然後在此處輸出pod install --verbose

+0

謝謝@pedro,將檢查並更新您 –