Swift Custom Framework 만들기(2)에서 만들었던 라이브러리를 추가하여 사용해 보겠습니다.
임의의 프로젝트를 만든후 해당 폴더에서 아래 커맨드를 입력해줍니다.
pod init
pod install
그리고 [프로젝트명].xcworkspace 를 실행시켜줍니다.
이제 pod 파일에 이전에 만든 라이브러리를 추가해주는데 명령어에 git 주소와 tag 버전도 추가해줍니다.
pod "프로젝트명", :git => '깃주소', :tag => '버전'
그 다음 다시 pod install을 하면
pod install
설치된 것을 확인할 수 있습니다.
이제 pod 을 활용하여 라이브러리에 이미지도 추가도 해보고,
업데이트도 진행해보겠습니다.
먼저, pod lib의 폴더로 이동한 후 _Pods.xcodeproj 실행합니다.
실행 후 YGLib.podspec 파일의 s.version 을 변경해 줍니다.
또한 사용할 bundleId와 , resoure 파일들을 위해 추가해줍니다.
(저는 0.2.0 -> 0.3.0으로 변경하겠습니다.)
s.info_plist = {
'CFBundleIdentifier' => '번들 ID '
}
s.resource_bundles = {
'Rep이름' => ['Rep이름/Assets/*.png']
}
Pod::Spec.new do |s|
s.name = 'YGLib'
s.version = '0.3.0'
s.summary = '테스트용 라이브러리'
s.description = '테스트용 라이브러리 입니다.'
s.homepage = 'https://github.com/daddy73e'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'daddy73e' => 'daddy73e@gmail.com' }
s.source = { :git => 'https://github.com/daddy73e/YGLib.git', :tag => s.version.to_s }
s.ios.deployment_target = '9.0'
s.source_files = 'YGLib/Classes/**/*'
s.info_plist = {
'CFBundleIdentifier' => 'org.cocoapods.YGLib'
}
s.resource_bundles = {
'YGLib' => ['YGLib/Assets/*.png']
}
end
그리고 테스트로 사용할 Classes > YGViewController를 추가하겠습니다.
그리고 해당 YGViewController에 사용할 이미지파일을 Assets에 추가하고, 프로젝트에도 추가해줍니다.
*그리고 Add to targets에 [프로젝트] 체크박스도 꼭 체크해줍니다.
xib 파일에 이미지를 추가해주고
YGViewController는 모두 public으로 선언해줍니다.
import UIKit
public class YGViewController: UIViewController {
public override func viewDidLoad() {
super.viewDidLoad()
}
}
YGLibTest.swift에 YGViewController 를 가져오는 소스를 추가해 줍니다.
import UIKit
public class YGLibTest: NSObject {
public func callLib() {
print("call from YGLib")
}
public func getYGViewController() -> YGViewController {
let bundleId = "org.cocoapods.YGLib"
let libBundle = Bundle.init(identifier: bundleId)
return YGViewController(nibName: "YGViewController",
bundle: libBundle)
}
}
이제 git을 업데이트 해줍니다. (위 소스에서도 여러번 실수하여 저는 0.4.2으로 추가 업데이트 하였습니다. ^^;;;)
git add .
git commit -m "add YGViewController"
git tag 0.4.2
git push origin 0.4.2
~/.cocoapods/repos/[프로젝트] 또한 해당 커맨드를 통해 업데이트 해줍니다.
pod repo push YGLib /Users/yeongeunsong/lib/YGLib/YGLib.podspec --allow-warnings
Example프로젝트 또는 사용하고있는 project에서 pod 파일을 수정하고 pod update를 호출합니다.
pod update
Product > Clean Build Folder 를 한 후 다시 Run하면
오잉 ?? 이미지 뷰를 넣었는데 이미지가 나오지 않았네요...
다시 lib pod 프로젝트로 가서 수정해 줍니다.
*해결방법중 하나는 해당 리소스에서 Target Membership에 [프로젝트]타겟의 체크박스에 체크해주고 Product > Clean Build Folder 하고 다시 Run하면 됩니다.
* 다른 방법은 Pod lib에서 [프로젝트명].podspec 파일에
s.resources = ['[Repo명]/Assets/*.png']
을 추가합니다.
Pod::Spec.new do |s|
s.name = 'YGLib'
s.version = '0.3.0'
s.summary = '테스트용 라이브러리'
s.description = '테스트용 라이브러리 입니다.'
s.homepage = 'https://github.com/daddy73e'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'daddy73e' => 'daddy73e@gmail.com' }
s.source = { :git => 'https://github.com/daddy73e/YGLib.git', :tag => s.version.to_s }
s.ios.deployment_target = '9.0'
s.source_files = 'YGLib/Classes/**/*'
s.info_plist = {
'CFBundleIdentifier' => 'org.cocoapods.YGLib'
}
s.resources = ['YGLib/Assets/*.png']
s.resource_bundles = {
'YGLib' => ['YGLib/Assets/*.png']
}
end
그리고 해당 리소스의 Target Membership에 해당 프레임워크 부분도 체크해줍니다.
이전과 같이 git을 업데이트하고,
~/.cocoapods/repos/[프로젝트] 또한 업데이트 합니다.
git add .
git commit -m "resource update"
git tag 0.4.3
git push origin 0.4.3
pod repo push YGLib /Users/yeongeunsong/lib/YGLib/YGLib.podspec --allow-warnings
그리고 시뮬레이터 cache로 됐다 안됐다 하는경우 있는데 그럴경우 pod을 지웠다 설치하거나
아니면 Product > Clean Build Folder 하고 다시 Run하면 될거에요 :)
IT회사중 이렇게 pod으로 라이브러리나 Framework 를 관리하는 회사는 큰 회사, 아니면 스타트업일겁니다.
두 세개의 서비스를 하고 있는 회사여도 이런식으로 프레임워크화, 라이브러리화 하지 않고 Copy & Paste 만 하면서
소스를 관리한다면 언젠가는 정리가 필요할때가 올 것이고, 그때 더 많은 시간을 소요할 것입니다.
그때가 오기전에 작은 모듈부터 라이브러리화 하여 관리한다면 앞으로의 고생을 덜 할 수 있을 것입니다.
https://github.com/daddy73e/YGLib
'iOS > develop' 카테고리의 다른 글
Swift Custom Framework 만들기(2) - Private Cocoapods (0) | 2020.07.16 |
---|---|
Swift Custom Framework 만들기(1) (0) | 2020.05.07 |
CocoaPod, use_modular_headers 부분 수정 (0) | 2020.04.24 |
Swift5 Xib활용, CustomView 만들기 (0) | 2020.04.24 |