A. 전체 과정
- 프레임워크 > Targets > Build Phases 이동 후 new Target
- Aggregate 추가
- Run script phase 추가
- 쉘 코드 추가
- 빌드 테스트
B. 각 과정 상세 - 1

- Project Navigator에서 SDK Point Home 선택
- 만약 프로젝트에 X 쳐놓은 SdkPointHomeXCFramework 타겟이 있다면 아래 과정 생략 후 F 단계로 이동.
- 없다면 Project 선택 후 왼쪽 아래 + 버튼 클릭
C. 각 과정 상세 - 2

- Other → Aggregate → Next 순으로 추가
- Team은 None, Product name은 원하는 이름으로 추가
D. 각 과정 상세 - 3

- 만든 타겟 선택
- Build Phases 선택
- + 버튼 클릭
- New Run Script Phase
- 스크린샷의 Run Script 부분이 생기게 됨
E. 각 과정 상세 - 4
Runscript의 코드 부분에 아래 코드 추가
env > env.txtinstruments -s devices > devices.txt#! /bin/sh -e# This script demonstrates archive and create action on frameworks and libraries# Based on script by @author Boris Bielik# Release dir pathOUTPUT_DIR_PATH="${PROJECT_DIR}/XCFramework"function archivePathSimulator { local DIR=${OUTPUT_DIR_PATH}/archives/"${1}-SIMULATOR" echo "${DIR}"}function archivePathDevice { local DIR=${OUTPUT_DIR_PATH}/archives/"${1}-DEVICE" echo "${DIR}"}# Archive takes 3 params## 1st == SCHEME# 2nd == destination# 3rd == archivePathfunction archive { echo "▸ Starts archiving the scheme: ${1} for destination: ${2};\\n▸ Archive path: ${3}.xcarchive" xcodebuild clean archive \\ -project "${PROJECT_NAME}.xcodeproj" \\ -scheme ${1} \\ -configuration ${CONFIGURATION} \\ -destination "${2}" \\ -archivePath "${3}" \\ SKIP_INSTALL=NO \\ OBJROOT="${OBJROOT}/DependentBuilds" \\ BUILD_LIBRARY_FOR_DISTRIBUTION=YES | xcpretty}# Builds archive for iOS simulator & devicefunction buildArchive { SCHEME=${1} archive $SCHEME "generic/platform=iOS Simulator" $(archivePathSimulator $SCHEME) archive $SCHEME "generic/platform=iOS" $(archivePathDevice $SCHEME)}# Creates xc frameworkfunction createXCFramework { FRAMEWORK_ARCHIVE_PATH_POSTFIX=".xcarchive/Products/Library/Frameworks" FRAMEWORK_SIMULATOR_DIR="$(archivePathSimulator $1)${FRAMEWORK_ARCHIVE_PATH_POSTFIX}" FRAMEWORK_DEVICE_DIR="$(archivePathDevice $1)${FRAMEWORK_ARCHIVE_PATH_POSTFIX}" xcodebuild -create-xcframework \\ -framework ${FRAMEWORK_SIMULATOR_DIR}/${1}.framework \\ -framework ${FRAMEWORK_DEVICE_DIR}/${1}.framework \\ -output ${OUTPUT_DIR_PATH}/xcframeworks/${1}.xcframework}### Static Libraries cant be turned into frameworksfunction createXCFrameworkForStaticLibrary { LIBRARY_ARCHIVE_PATH_POSTFIX=".xcarchive/Products/usr/local/lib" LIBRARY_SIMULATOR_DIR="$(archivePathSimulator $1)${LIBRARY_ARCHIVE_PATH_POSTFIX}" LIBRARY_DEVICE_DIR="$(archivePathDevice $1)${LIBRARY_ARCHIVE_PATH_POSTFIX}" xcodebuild -create-xcframework \\ -library ${LIBRARY_SIMULATOR_DIR}/libStaticLibrary.a \\ -library ${LIBRARY_DEVICE_DIR}/libStaticLibrary.a \\ -output ${OUTPUT_DIR_PATH}/xcframeworks/${1}.xcframework}echo "#####################"echo "▸ Cleaning the dir: ${OUTPUT_DIR_PATH}"rm -rf $OUTPUT_DIR_PATH#### Static Library #####LIBRARY="${PROJECT_NAME}"#echo "▸ Archive $LIBRARY"#buildArchive ${LIBRARY}#echo "▸ Create $FRAMEWORK.xcframework"#createXCFrameworkForStaticLibrary ${LIBRARY}#### Dynamic Framework ####DYNAMIC_FRAMEWORK="${PROJECT_NAME}"echo "▸ Archive $DYNAMIC_FRAMEWORK"buildArchive ${DYNAMIC_FRAMEWORK}echo "▸ Create $DYNAMIC_FRAMEWORK.xcframework"createXCFramework ${DYNAMIC_FRAMEWORK}
F. 각 과정 상세 - 5

빌드 타겟을 방금 만든 타겟으로 설정 후 run했을 때 성공적으로 run이 된다면 아래와 같은 새로운 항목들이 생기게 됨.

노란 줄이 그어진 것들이 방금 실행으로 새로 생긴 것들임.
XCFramework 폴더 안에 archives가 각 아카이빙으로 생긴 것들이고 xcframeworks 아래 생긴 프로젝트명.xcframework가 실제 생성된 XCFramework임.
Z. 레퍼런스
'CS > iOS, Swift' 카테고리의 다른 글
[iOS] Framework에 종속성 추가 시 작업환경 세팅 (0) | 2023.04.06 |
---|---|
[iOS] framework 작업환경 만들기 (0) | 2023.04.06 |
[iOS] XCFramework private repository에 cocoapod으로 배포하기 (0) | 2023.04.06 |
[iOS] Private Repository에 CocoaPod Framework 올리기 (0) | 2023.04.06 |
[iOS] framework 기본 (0) | 2023.02.14 |