SPM으로 XCFramework 배포하기

Jee.e (황지희)·2023년 11월 19일
0

모듈화의 여정

목록 보기
4/4
post-custom-banner

글을 시작하기에 앞서, 이전 시리즈를 읽고 오시는 것을 추천합니다 !

  1. Framework를 만들어보자 !
  2. Framework 배포하기



🚨주의사항

공식 문서에 따르면, 아래와 같이 명시되어있습니다.

Carefully consider whether you want to distribute your code in binary form because doing so comes with drawbacks.
For example, a Swift package that contains a binary is less portable because it can only support platforms that its included binaries support.
In addition, binary dependencies are only available for Apple platforms, which limits the audience for your Swift package.

코드를 바이너리 형식으로 배포할 경우 단점이 있으므로 주의 깊게 고려하십시오.
예를 들어, 바이너리가 포함된 Swift 패키지는 포함된 바이너리가 지원하는 플랫폼만 지원할 수 있기 때문에 이식성이 떨어집니다. 
또한 바이너리 종속성은 Apple 플랫폼에서만 사용할 수 있으므로 Swift 패키지의 대상이 제한됩니다.

1. Declare a binary target in the package manifest

우선, Xcdoe에서 새 프로젝트를 생성해줍니다!

  • Xcdoe ➡️ Create a new Xcode project ➡️ Multiplatform ➡️ Swift Package

잘 생성이 됐다면, 아래와 같은 코드가 보입니다!

  • Artifacts 이라는 폴더를 만들고, 그 안에 만들어뒀던 XCFramework 를 넣어줍니다 !
  • 이제 이 XCFramework를 Binary Target으로 추가하고, Binary 종속성을 Package(JiheePackage) Library에 추가합니다.
    • Platforms도 추가해줍니다.

이제 Github에 올려보겠습니다.

  • 먼저, Github의 Repository를 만들어줍니다.

🚨 유의사항

해당 Repository를 Public으로 만들고,
README, gitignore, license 를 생성하지 않도록 합니다.

❓ README, gitignore, license 를 생성하지 않는 이유?
우리가 처음에 Xcode로 SwiftPackage를 생성하게되면,

위 이미지의 Source Control에서 볼 수 있듯, Git Repository가 생성됩니다.
(물론, 선택을 해지해 생성하지 않을 수 있음)

다만 저는 Package를 생성하며 Git Repository도 함께 생성했기에,
중복 생성을 막기위해 Github Repository를 생성할 때 추가 설정을 하지 않았습니다.

  • Github에 Repository를 잘 만들었다면, 아래 명령어를 통해
    만들어놓은 Package와 연결해줍니다 !
git remote add origin 주소
git branch -M main
git push -u origin main
  • 위 과정을 거친 후, Github Repository를 확인해보면 .. !

    이렇게 README와 .gitignore까지 잘 들어와있는걸 확인할 수 있습니다 !

이제 만든 Package를 SPM으로 App에 적용시켜보겠습니다 !

  • 먼저, App Project를 생성해줍니다 !

  • 그 다음, 다른 라이브러리를 SPM으로 연결할때와 같이

    • General ➡️ Frameworks, Libraries, and Embedded Content ➡️ + 버튼 ➡️ Add Package Dependency ➡️ 만들어둔 Github Repository 주소를 입력합니다 !
  • 그럼, 아래 이미지와 같이 잘 들어와있는걸 확인할 수 있습니다!
    업로드중..


이로써, 라이브러리 생성부터 배포까지 경험해보았습니다 !
긴 글 읽어주셔서 감사합니다 !


참고문서
XCFramework + SwiftPackageManager
공식문서 - Distributing binary frameworks as Swift packages
민소네님 블로그

profile
교훈없는 경험은 없다고 생각하는 2년차 iOS 개발자입니다.
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 12월 16일

혹시 Xcode에서 Multiplatform 탭의 Swift Packages 템플릿은 따로 추가하신 걸까요?

답글 달기