iOS Swift/iOS Swift - 기초

[iOS] Swift XCFramework 생성 후 Objective-C에서 적용

주니어코더 2024. 5. 2. 01:32

 

 

 

 

 

Swift XCFramework 생성 후 Objective-C 프로젝트에서 적용하기

 

 

이 글을 본 당신? 레거시가 남아있는 프로젝트를 개발 중이신가요?

 

 

야 나두 ㅋ

 

현재 Swift로 제작한 Framework가 Objective-C 프로젝트에서는 import 하는데,

Objective-C에서 Swift Framework를 사용하려면 설정이 필요한 부분이 있다

 

XCFramework로 처음부터 제작하며 설정해 보자

 

기존에 개발되어있는 프로젝트를 수정하는 당신도
아래 몇 가지 설정 사항들을 수정하면 새로 프로젝트를 만들지 않아도 Objective-C에서 사용 가능할 수 있을지도?

 

 

 

 

 

 

 

 

 

Chap1.  Framework 프로젝트 생성


 

Xcode에서 Framework를 생성한다

 

 

 

 

Framework의 기본 구조는 간단하다

 

 

 

 

 

 

Chap2.  Swift 파일 생성


 

Swift 파일을 생성하고 Framework에 필요한 내용을 작성해 준다

 

 

 

 

 

⭐️중요1️⃣⭐️

 

프레임워크에서 코드를 작성할 때는 접근제어자를 주의해야 한다!

Open - 다른 모듈에서 접근, 서브클래싱(Subclassing)과 오버라이딩(Overriding)이 가능하다

Public - 다른 모듈에서 접근이 가능하지만 서브클래싱과 오버라이딩은 불가능하다

 

 

⭐️중요2️⃣⭐️

 

Objective-C 프로젝트에서 Swift Framework를 사용하려면 앞에 @objc를 작성해야 한다

 

 

 

 

 

 

 

 

 

 

Chap3.  Project Build settings


 

1. Target -> Build Settings -> Swift Compiler - General -> Install Generated Header = Yes

 

 

 

 

2. Target -> Build Settings -> Packaging -> Defines Module = Yes

 

 

 

 

 

3. Target -> Build Settings -> Deployment -> Skip Install = No

 

 

 

 

 

 

 

 

Chap4.  XCFramework 생성을 위한 빌드 타겟 생성


 

Project 하단 + 버튼 -> Other -> Aggregate 추가

 

 

 

 

Product Name 작성 후 생성

 

 

 

 

 

 

 

 

Chap5.  Build Script 작성


 

Build Script를 작성하고 빌드를 하면 에러가 발생할 수 있다

Script SendBoxing이라는 Xcode 보안 규정 때문이다

 

이것을 먼저 해제해줘야 한다

 

 

 

 

 

 

이것을 해제하지 않고 보안 규정에 따르면 되겠지만 일단은 패스하겠습니다

 

Build Script 작성하기!

 

Target -> Build Phases -> + 버튼 클릭 -> New Run Script Phase 생성

 

 

 

 

 

Run Script에 코드를 작성해 준다

 

Run Script에서 작성하는 방식이 아니라 직접 터미널에서 지정해 주는 방식도 있다

 

 

 

 

 

Run Script 코드 내용

 

xcframework의 빌드 위치와 이름을 지정해 주는 코드이다

 

echo "PROJECT_NAME: ${PROJECT_NAME}"
echo "BUILD_DIR: ${BUILD_DIR}"

open "${BUILD_DIR}"

xcodebuild archive -scheme "${PROJECT_NAME}" -archivePath "${BUILD_DIR}/Debug-iphoneos" -sdk iphoneos SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES

xcodebuild -create-xcframework \
    -framework "${BUILD_DIR}/Debug-iphoneos.xcarchive/Products/Library/Frameworks/"${PROJECT_NAME}".framework" \
    -output "${BUILD_DIR}/"${PROJECT_NAME}".xcframework"

 

 

 

 

이제 xcFramework를 생성할 준비를 끝냈다! 야호!

 

 

 

 

 

Chap6.  XCFramewrok 빌드 

 


 

빌드 타겟을 위에서 생성한 xcExFramework로 맞춰준다

 

 

 

 

 

 

짜잔! 드디어 빌드한 xcframework를 만나게 되었습니다 소중해✨

 

빌드한 파일의 폴더가 궁금하다면 

 

Product -> Show Build Folder in Finder에서 확인 가능

 

 

 

 

 

주의할 점

 

xcframework의 경우 빌드 하기 전 전에 빌드했던 파일들을 삭제해주고 빌드해야 한다!
안 그러면 파일이 업데이트되지 않거나 none code 0 에러가 발생할 수 있음

 

 

 

 

 

 

 

 

Chap7.  XCFramewrok 적용하기


 

힘들게 만든 xcFramewokr를 사용할 프로젝트에 추가해 준다

 

1. 사용할 프로젝트 경로에 만든 xcframework를 추가해 준다

 

 

 

2. Target -> General -> Framework, Libraries에서 + 버튼 클릭 

 

 

 

 

3. Add Files 클릭 -> 위에서 프로젝트에 추가한 xcframework 가져오기

 

 

 

 

 

 

 

xcFramework 가져오기 완료!!

 

 

 

 

 

 

Chap8.  XCFramewrok 사용하기


 

힘들게 만든 xcFramewokr가 과연 잘 작동하는지 확인할 시간

 

위에서 만든 xcframework의 example 함수가 호출되어 ExFramework를 프린트한다

 

 

 

xcframework 만들기 끝

수정할 부분이 있으면 댓글로 알려주세요!

 

 

 

 

 

 

 

반응형