티스토리 뷰
안녕하세요
이번 글은 사실 약 한달전 회사 동료가 요청한 글인데
어쩌다 보니 이제서야 올리게 되었다는 안타깝고 슬픈 이야기 입니다.
(연말연초는 정리할 서류가 너무 많...)
자 그럼 문제 상황부터 같이 보시면서 이야기 하도록 하겠습니다.
* 문제 상황
- 라이브러리 하나 때문에 저 하얀 Xcode 가 생기는 게 너무 싫어요 (실제로 이렇게 이야기 하심)
- 저 하얀 걸 없애면서 라이브러리를 사용할 방법은 없나요?
# 이때 언급되는 하얀 Xcode는 저희가 Cocoapod 을 사용하면 자연스럽게 보게 되는 이걸 말하는 겁니다.
- .xcworkspace 형식의 하얀 아이콘이 특징인 친구에요.
- 아무래도 이분 입장에서는 Cocoapod을 처음 사용하시다 보니 이런 일이 발생한 것 같네요.
(저도 근데 Cocoapod 은 별로 안 좋아하긴 해서...)
* 해결 방법
- 1~2개짜리 Cocoapod을 위해 생성되는 XCworkspace를 없애기 위해 Cocoapod을 다른 형태로 바꾸어 적용하는 방법
- 이 경우에는 Cocoapod 을 사용하지 않기 때문에 저 하얀 걸 삭제할 수 있게 됩니다.
그래서 오늘 예제로 사용할 샘플 라이브러리는 바로 이겁니다.
(원하시는 라이브러리가 있으시면 그걸 사용하시면 됩니다.)
* Base32
이 라이브러리는 Base32 인코딩 디코딩을 지원해주는 라이브러리입니다.
https://github.com/norio-nomura/Base32.git
GitHub - norio-nomura/Base32: Base32 for Swift
Base32 for Swift. Contribute to norio-nomura/Base32 development by creating an account on GitHub.
github.com
# 주의
- 만약 본인이 원하는 라이브러리가 있다면 반드시 저작권을 확인하시고 진행해주세요!!!
- 수정 허가 및 상업적 이용 등 필요한 조건을 확인해주세요!!
(저는 개인적 이용이긴 하지만 회사에서 사용하시는 분들은 반드시 확인해주세요.)
참고로 요즘은 많은 라이브러리들이 Cocoapod 뿐만 아니라 다른 방법으로도 적용이 가능하도록 많이 지원을 해주십니다.
이 분이 지정한 라이브러리의 경우에는 Carthage / Cocoapod 두가지 방법을 지원해준다고 되어있습니다.
하지만 저는 간단하게 연결하는 Swift Package 가 너무나도 그리웠기(?) 때문에
Swift Package 로 형식을 바꾸어 연결하는 법을 알아보도록 할 겁니다.
* 만드는 방법
1. 원본 라이브러리를 다운로드 받습니다.
- Git 에 보면 이런 식으로 다운로드 버튼이 있습니다.
- Zip 파일을 다운로드 받은 후 압축해제해주세요
2. swift Package 연결을 위한 임의의 파일을 하나 만들어줍니다.
- 터미널을 열어서 명령어를 통해 파일하나를 만들어야합니다.
- 아까 다운받은 폴더 위치에 아래 명령어를 터미널로 실행해줍니다.
touch Package.swift
- 잘 작동한게 맞으면 아래처럼 보이게 됩니다.
3. 만들어진 파일의 내용을 확인합니다. (이름 반드시 확인!!!!)
- 자신이 만든 파일의 내용이 맞는지 확인해주세요.
- 저는 아래처럼 내용이 만들어졌습니다. (내용은 라이브러리마다 다르게 나옵니다.)
// swift-tools-version:4.2
import PackageDescription
var package = Package(
name: "Base32",
products: [
.library(name: "Base32", targets: ["Base32"])
],
targets: [
.target(name: "Base32"),
.testTarget(name: "Base32Tests", dependencies: ["Base32"])
],
swiftLanguageVersions: [.v4, .v4_2, .version("5")]
)
#if os(macOS)
package.targets.append(.testTarget(name: "SecEncodeTransformTests", dependencies: ["Base32"]))
#endif
* 연결 방법
1. 기존에 Cocoapod 연결을 먼저 삭제하고 하얀 Xcode 를 없앱니다.
- 안전한 적용을 위해 Cocoapod 을 먼저 없었던 상태로 되돌려야합니다.
- Podfile 에서 이것만 빼고 pod install 해주세요.
-위처럼 마지막 줄에 저런 게 뜨면([!] 부분) 하얀색 아이콘을 삭제하셔도 무방합니다.
- 본인이 적용중인 Cocoapod이 하나도 없을 경우에만 저런 줄이 나오게 됩니다.
- 만약 Cocoapod 을 이제 안쓴다 하시는 분들은 Xcode 닫고 아래 사각형 안 파일은 전부 날리시면 됩니다.
(진짜 필요가 없으신게 맞는지 확인하고 삭제하셔야합니다!!!)
삭제가 무서우신 분들은 삭제 안하고 그냥 파란색 Xcode 열어서 작업하셔도 됩니다.
확신이 드실때 지우셔도 상관 없습니다.(어차피 Cocoapod을 안쓰면 상관X)

2. 저희가 제작한 SwiftPackage 를 파일로 연결합니다.
- 파란색 Xcode(.xcodeproj)파일을 열어 줍니다.
- 아마 빨간색으로 Pods 파일 같은게 보이시는 경우가 있을텐데 더 이상 안 쓸꺼면 삭제하셔도 됩니다.
- 프로젝트 우클릭 하시면 아래처럼 패키지 추가하는게 있습니다.
- 아래 보시면 Add Local... 버튼 있습니다. 눌러주세요.
- 아까 저희가 Package.swift 하셨던 걸로 선택하시고 Add Package 해주세요.
- 그 후 적용되었던 코드 보시면 아래처럼 빨간줄이 뜨는 경우가 있습니다.
- Package.swift 에 있는 이름으로 적용되서 그런거기 때문에 이름을 아래처럼 바꾸시면 그대로 사용이 가능합니다.
import UIKit
//import SwiftBase32// Cocoapod
import Base32// Swift Package
* 결과
- 라이브러리를 SwiftPackage 로 적용한 덕분에 프로젝트 파일이 눈에 띄게 줄어든 모습입니다.
- 확실히 이전보다 깔끔하죠?
- 개발하시는 분에 따라 어느 쪽이 편하실지는 선택일것같습니다.
* 주의
- 파일로 연결한 것이기 때문에 URL 로 연결한 다른 라이브러리처럼 자동으로 업데이트 되지 않습니다.
- 만약 라이브러리가 수정되면 위 방법을 통해 다시 만들어야합니다.
- 간혹 이 과정을 하다가 라이브러리 자체에서 오류가 나는 경우도 있습니다.(UI관련 라이브러리들)
- 그럴경우 다운로드 받은 라이브러리 폴더에서 직접 코드를 수정하여 오류를 고쳐야 정상적인 사용이 가능합니다.
- 보통 import UIKit 혹은 import Foundation 하면 수정되더라고요;;
아무튼 이건 호불호가 조금 갈릴 것 같은 문제인데
아 나는 한두개짜리 Cocoapod을 위해 Cocoapod을 깔고 파일 많아지는게 싫다 하시는 분들에게는
도움이 될 것 같아서 올려봅니다. (일단 저)
* 2025.01.23 추가
단순 파일 삭제만으로는 삭제가 깔끔히 안되는 경우가 있는데
이 경우에는 명령어를 통해 삭제해주셔야 합니다.
아래 명령어를 한 줄씩해주세요!!
sudo gem install cocoapods-deintegrate cocoapods-clean
pod deintegrate
pod cache clean --all
오늘도 파이팅입니다~
'iOS개발 > 기타' 카테고리의 다른 글
[실험실패].a 파일 xcframework 변환 및 PrivacyInfo 추가하기 (0) | 2025.03.17 |
---|---|
Xcode '앱이름'을(를) 설치할 수 없음 문제 (0) | 2025.01.17 |
Cocoapod LoadError have 'x86_64', need 'arm64e' or 'arm64' (0) | 2025.01.08 |
The request was denied by service delegate 에러 (0) | 2024.12.16 |
Privacy Report 에 framework Privacy 가 안보이는 경우 (0) | 2024.12.13 |