2016-07-10 3 views
0

나는 cocoapods 0.39를 사용하고 있습니다. 필자는 Swift 프로젝트와 별도로 Cocoa Touch Framework "MyFramework"를 추가했습니다. 프레임 워크는 Cocoapod 종속성으로 Firebase을 사용합니다. 나는 애플 리케이션 내에서 MyFramework를 사용하고 있습니다. 앱을 만들려고하면 여러 개의 오류가 발생합니다.겹치는 포드 종속성

class … is implemented in both …/MyFramework.framework/MyFramework and …/MyApp.app/MyApp. One of the two will be used. Which one is undefined. 

이 오류에 대한 내용은 이해했지만 해결할 수 없습니다. MyApp 대상에서 Firebase을 제거하면 앱에 따라 MyFramework를 사용할 수 없습니다. 일반적인 문제인 것처럼 보이지만 불행하게도 나는 그것을 작동시키지 못합니다.

내 Podfile은 다음과 같습니다 : 당신은 두 번 중포 기지를 연결하는

use_frameworks! 

target 'MyApp' do 
    pod 'Firebase' 
end 

target 'MyAppTests' do 

end 

target 'MyFramework' do 
    pod 'Firebase' 
end 

target 'MyFrameworkTests' do 
    pod 'Firebase' 
end 

답변

0

.

사실을 연결하지 않고 MyApp는 의존성에 대해 알려 (Cocoapods 1.0 이상이 필요합니다) 당신은 Podfile에 inherit! :search_patchs 지시어를 사용할 수 있습니다

:

use_frameworks! 

target 'MyFramework' do 
    pod 'Firebase' 
    pod 'FirebaseAnalytics' 

    target 'MyApp' do 
     inherit! :search_paths 

    end 
end 

이것은 당신이 명시 적으로 Podfile에 종속를 선언 해야합니다 그들 MyApp 대상에서 사용할 수있게하십시오. 예를 들어, pod 'Firebase'을 추가해도 응용 프로그램에서 using FirebaseAnalytics을 사용할 수 없습니다.


당신은 또한 CocoaPod 의존성에 MyFramework을 변환 할 수 있습니다 CocoaPods 당신을위한 의존성을 처리합니다. 당신이 당신의 응용 프로그램 PodfileMyFramework에 개발 의존성을 추가 할 수 있습니다, 그리고

Pod::Spec.new do |s| 

# Meta data 
s.name   = "MyFramework" 
s.version  = "1.0.0" 
s.platform  = :ios 
s.ios.deployment_target = '8.0' 
s.summary  = "-" 
s.homepage  = "-" 
s.license  = { :type => "MIT" } 
s.author  = { "Me" => "-" } 
s.platform  = :ios 
s.ios.deployment_target = '8.0' 
s.source  = { :path => "MyFramework" } 

# Source configuration 
s.source_files = "MyFramework/**/*.swift" 
s.resources = "MyFramework/**/*.{png,jpeg,jpg,storyboard,xib,strings}" 

s.requires_arc = true 

# Dependencies 

# Firebase for iOS 
s.dependency 'Firebase', '~> 3.0' 

end 

Firebase 의존성 제거 :이 작업을 수행하려면 다음과 같이 당신의 프레임 워크에 대한 Podspec 파일을 생성

target 'MyApp' do 
    pod 'MyFramework', :path => '.' 
end 

업데이트를 . 필요한 경우 MyFramework.podspec 위치로 이동하십시오.

+0

답변 해 주셔서 감사합니다. 이번에는 MyFramework를 CocoaPod로 사용하고 싶지 않습니다. "post_install hook"에 대해 설명해 주시겠습니까? – sash

+0

@sash 명시 적으로 의존성을 선언하고'상속! search_paths'는 컴파일 시간에 헤더를 사용할 수 있도록합니다. 'Podfile' 전용 솔루션에 대한 업데이트를보십시오. – redent84

+0

FYI이 답변은 Cocoapods 1.0.0 이상입니다. 0.39에 대해 정말로 업그레이드하고 싶지만, 0.39에 머무를 필요가 있다면'link_with'를 사용하고 싶습니다. –