2017-01-21 63 views
1

當定義我Podfile如下,然後建立我的應用程序與我的分機,我得到的DKImagePickerController框架生成錯誤類似於這樣的錯誤:Error "'sharedApplication' is unavailable: not available on iOS (App Extension)...." when compiling after pod update如何定義POD文件爲iOS擴展

,你可以請參閱我的擴展目標中沒有在我的Podfile中包含DKImagePickerController框架,所以我想知道我在做什麼錯誤?

platform :ios, '10.0' 
    def base_pods 
     pod 'Firebase/Core' 
     pod 'Firebase/Auth' 
     pod 'DKImagePickerController', '~> 3.4.0' 
     ... 
     pod 'SAMKeychain' 
    end 

target 'MyApp' do 

    use_frameworks! 
    base_pods 

    target 'MyAppExtension' do 
    pod 'Firebase/Auth' 
    pod 'SAMKeychain' 
    end 

    target 'MyAppUnitTests' do 
     inherit! :search_paths 
     pod 'Firebase' 
     pod 'FirebaseAuth' 
     pod 'FirebaseUI/Auth' 
    end 
end 

更新

我意識到,我正在錯誤由於API不可用,我試圖找出是如何避免它。我的懷疑是在我的pod文件,因此我的問題:)

+0

請參閱下面的答案。 –

回答

0

有幾個API在App Extension中不可用。其中之一是UIApplication。框架開發人員必須確保這絕不會發生。 https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/ExtensionOverview.html#//apple_ref/doc/uid/TP40014214-CH2-SW6

+0

Sachin,我明白了,我應該更清楚地知道爲什麼會出現錯誤。 Iøm試圖找出如何避免這個錯誤 – Chris

+0

你需要檢查與DKImagePickerController框架開發人員。他們需要複製原始方案,然後添加預處理器宏的源代碼,以避免編譯應用程序擴展不可用的API。這會導致代碼重複,請閱讀http://blog.cocoapods.org/CocoaPods-0.38/#target-deduplication –

+0

但我不想將該框架包含在我的目標中。這就是整個問題。爲什麼當它沒有被指定爲我的podfile中的依賴項時,它甚至會抱怨它? – Chris

1

我有同樣的問題,所以對於其他人找到這個線程,我能夠通過創建兩個頂級目標而不是使用嵌套目標來解決問題。

target 'MyApp' do 
    # Comment the next line if you're not using Swift and don't want to use dynamic frameworks 
    use_frameworks! 

    # Pods for MyApp 
    pod 'Eureka', '~> 3.0' 
    pod 'ChameleonFramework', '~> 2.0' 
    pod 'SharedPod', '~>1.0' 

    target 'MyAppTests' do 
    inherit! :search_paths 
    # Pods for testing 
    end 

    target 'MyAppUITests' do 
    inherit! :search_paths 
    # Pods for testing 
    end 
end 

target 'MyApp Today' do 
    use_frameworks! 
    # inherit! :none 
    # Pods for MyApp Today 
    pod 'SharedPod', '~>1.0' 
end 

爲了得到一個乾淨的開始,然後我跑了......

pod deintegrate 
-- Then cleaned out the project file in XCode 
pod install