관리 메뉴

김종권의 iOS 앱 개발 알아가기

[Cocoa pod 세팅] 여러개의 프레임워크에 cocoa pod 의존성 관리 (target, do, def) 본문

Git, CocoaPods, Xcode, Shell

[Cocoa pod 세팅] 여러개의 프레임워크에 cocoa pod 의존성 관리 (target, do, def)

jake-kim 2020. 11. 14. 15:23

여러개의 프레임워크로 나누기

프로젝트 하나에 여러개의 framework 삽입 방법은 여기 참고

sample)

  • 메인앱: MainProj.xcodeproj
  • 서브앱: SubProj1.xcodeproj

여러개의 pod 의존성 설정

  • MainProj.xcworkspace파일을 열어서, podfile파일 오픈 (podfile은 기본적으로 ruby랭기지)

  • 기본적인 환경세팅
platform :ios, '11.0' # 플랫폼 설정
use_frameworks! # 스위프트를 사용하고 동적 라이브러리를 사용하겠다는 의미
inhibit_all_warnings! # Xcode에서 pods와 관련된 경고 없애기
  • 프로젝트 정보설정
workspace 'MainProj'
project 'MainProj/MainProj.project'
project 'SubProj1/SubProj1.project'
  • def - end문으로 종속성 정의 (일종의 변수)
def shared_pods
  pod 'KeychainAccess'
end

def app_pods
  pod 'RxSwift'
end

def tests_pods
  pod 'RxTest'
  pod 'RxNimble'
end
  • target - do - end문 : if문과 동일
    • inherit! :이란 해당 타겟의 상속모드를 결정 (complete: 부모로 부터 모두 상속 / none / search_path: 부모의 검색 경로만 상속)
target 'MainProj' do
  project 'MainProj/MainProj.project'
  shared_pods
  app_pods

  target 'MainProjTests' do
    inherit! :search_paths
    tests_pods
  end
end

target 'SubProj1' do
  project 'SubProj1/SubProj1.project'
  shared_pods

  target 'SubProj1Tests' do
    inherit! :search_paths
    tests_pods
  end
end
  • 설치 할 때 iOS버전과 swift버전 지정
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
      config.build_settings['SWIFT_VERSION'] = '5.1'
    end
  end
end

전체코드

platform :ios, '11.0'
use_frameworks!
inhibit_all_warnings!

# 프로젝트 정보 설정
workspace 'MainProj'
project 'MainProj/MainProj.project'
project 'SubProj1/SubProj1.project'

def shared_pods
  pod 'KeychainAccess'
end

def app_pods
  pod 'RxSwift'
end

def tests_pods
  pod 'RxTest'
  pod 'RxNimble'
end

target 'MainProj' do
  project 'MainProj/MainProj.project'
  shared_pods
  app_pods

  target 'MainProjTests' do
    inherit! :search_paths
    tests_pods
  end
end

target 'SubProj1' do
  project 'SubProj1/SubProj1.project'
  shared_pods

  target 'SubProj1Tests' do
    inherit! :search_paths
    tests_pods
  end
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
      config.build_settings['SWIFT_VERSION'] = '5.1'
    end
  end
end
Comments