header-img
Info :

A. ์ „์ฒด ๊ณผ์ •

  1. ํ”„๋ ˆ์ž„์›Œํฌ > Targets > Build Phases ์ด๋™ ํ›„ new Target
  2. Aggregate ์ถ”๊ฐ€
  3. Run script phase ์ถ”๊ฐ€
  4. ์‰˜ ์ฝ”๋“œ ์ถ”๊ฐ€
  5. ๋นŒ๋“œ ํ…Œ์ŠคํŠธ

 

B. ๊ฐ ๊ณผ์ • ์ƒ์„ธ - 1

  1. Project Navigator์—์„œ SDK Point Home ์„ ํƒ
  2. ๋งŒ์•ฝ ํ”„๋กœ์ ํŠธ์— X ์ณ๋†“์€ SdkPointHomeXCFramework ํƒ€๊ฒŸ์ด ์žˆ๋‹ค๋ฉด ์•„๋ž˜ ๊ณผ์ • ์ƒ๋žต ํ›„ F ๋‹จ๊ณ„๋กœ ์ด๋™.
  3. ์—†๋‹ค๋ฉด Project ์„ ํƒ ํ›„ ์™ผ์ชฝ ์•„๋ž˜ + ๋ฒ„ํŠผ ํด๋ฆญ

 

C. ๊ฐ ๊ณผ์ • ์ƒ์„ธ - 2

  1. Other → Aggregate → Next ์ˆœ์œผ๋กœ ์ถ”๊ฐ€
  2. Team์€ None, Product name์€ ์›ํ•˜๋Š” ์ด๋ฆ„์œผ๋กœ ์ถ”๊ฐ€

 

D. ๊ฐ ๊ณผ์ • ์ƒ์„ธ - 3

  1. ๋งŒ๋“  ํƒ€๊ฒŸ ์„ ํƒ
  2. Build Phases ์„ ํƒ
  3. + ๋ฒ„ํŠผ ํด๋ฆญ
  4. New Run Script Phase
  5. ์Šคํฌ๋ฆฐ์ƒท์˜ Run Script ๋ถ€๋ถ„์ด ์ƒ๊ธฐ๊ฒŒ ๋จ

 

E. ๊ฐ ๊ณผ์ • ์ƒ์„ธ - 4

Runscript์˜ ์ฝ”๋“œ ๋ถ€๋ถ„์— ์•„๋ž˜ ์ฝ”๋“œ ์ถ”๊ฐ€

env > env.txt
instruments -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 path
OUTPUT_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 == archivePath
function 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 & device
function buildArchive {
  SCHEME=${1}

  archive $SCHEME "generic/platform=iOS Simulator" $(archivePathSimulator $SCHEME)
  archive $SCHEME "generic/platform=iOS" $(archivePathDevice $SCHEME)
}

# Creates xc framework
function 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 frameworks
function 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