|
1 | 1 | #!/bin/zsh
|
2 | 2 |
|
3 | 3 | # Set Project name
|
4 |
| -PROJECT_NAME="Segment-Package" |
| 4 | +# These are the only variables that need to be set per-project, the rest |
| 5 | +# is very generic and should work for most things. |
| 6 | +PROJECT_NAME="Segment" |
| 7 | +SCHEME_NAME="Segment-Package" |
5 | 8 |
|
6 |
| -# set framework folder name |
7 |
| -FRAMEWORK_FOLDER_NAME="${PROJECT_NAME}_XCFramework" |
| 9 | +# Your PROJECT_NAME.xcodeproj should include schemes for |
| 10 | +# iOS |
| 11 | +# tvOS |
| 12 | +# watchOS |
| 13 | +# macOS |
| 14 | +# Mac Catalyst |
8 | 15 |
|
9 |
| -# set framework name or read it from project by this variable |
10 |
| -FRAMEWORK_NAME="Segment" |
| 16 | +XCFRAMEWORK_OUTPUT_PATH="./XCFrameworkOutput" |
11 | 17 |
|
12 |
| -#xcframework path |
13 |
| -FRAMEWORK_PATH="${FRAMEWORK_FOLDER_NAME}/${FRAMEWORK_NAME}.xcframework" |
| 18 | +# clean up old releases |
| 19 | +echo "Removing previous ${PROJECT_NAME}.xcframework.zip" |
| 20 | +rm -rf ${PROJECT_NAME}.xcframework.zip |
| 21 | +rm -rf ${PROJECT_NAME}.xcframework |
| 22 | +rm -rf ${XCFRAMEWORK_OUTPUT_PATH} |
14 | 23 |
|
15 |
| -# set path for iOS simulator archive |
16 |
| -SIMULATOR_ARCHIVE_PATH="${FRAMEWORK_FOLDER_NAME}/simulator.xcarchive" |
| 24 | +mkdir "${XCFRAMEWORK_OUTPUT_PATH}" |
| 25 | +echo "Created ${XCFRAMEWORK_OUTPUT_PATH}" |
17 | 26 |
|
18 |
| -# set path for iOS device archive |
19 |
| -IOS_DEVICE_ARCHIVE_PATH="${FRAMEWORK_FOLDER_NAME}/iOS.xcarchive" |
| 27 | +# iOS Related Slices |
| 28 | +echo "Building iOS Slices ..." |
| 29 | +xcodebuild archive \ |
| 30 | +-scheme "${SCHEME_NAME}" \ |
| 31 | +-destination "generic/platform=iOS" \ |
| 32 | +-archivePath "${XCFRAMEWORK_OUTPUT_PATH}/iOS" \ |
| 33 | +SKIP_INSTALL=NO \ |
| 34 | +BUILD_LIBRARY_FOR_DISTRIBUTION=YES |
20 | 35 |
|
21 |
| -# clean up old releases |
22 |
| -rm -rf Segment.xcframework.zip |
23 |
| -echo "Deleted the xcframework" |
| 36 | +xcodebuild archive \ |
| 37 | +ONLY_ACTIVE_ARCH=NO \ |
| 38 | +-scheme "${SCHEME_NAME}" \ |
| 39 | +-destination "generic/platform=iOS Simulator" \ |
| 40 | +-archivePath "${XCFRAMEWORK_OUTPUT_PATH}/iOSSimulator" \ |
| 41 | +SKIP_INSTALL=NO \ |
| 42 | +BUILD_LIBRARY_FOR_DISTRIBUTION=YES |
| 43 | + |
| 44 | +# tvOS Related Slices |
| 45 | +echo "Building tvOS Slices ..." |
| 46 | +xcodebuild archive \ |
| 47 | +-scheme "${SCHEME_NAME}" \ |
| 48 | +-destination "generic/platform=tvOS" \ |
| 49 | +-archivePath "${XCFRAMEWORK_OUTPUT_PATH}/tvOS" \ |
| 50 | +SKIP_INSTALL=NO \ |
| 51 | +BUILD_LIBRARY_FOR_DISTRIBUTION=YES |
| 52 | + |
| 53 | +xcodebuild archive \ |
| 54 | +ONLY_ACTIVE_ARCH=NO \ |
| 55 | +-scheme "${SCHEME_NAME}" \ |
| 56 | +-destination "generic/platform=tvOS Simulator" \ |
| 57 | +-archivePath "${XCFRAMEWORK_OUTPUT_PATH}/tvOSSimulator" \ |
| 58 | +SKIP_INSTALL=NO \ |
| 59 | +BUILD_LIBRARY_FOR_DISTRIBUTION=YES |
| 60 | + |
| 61 | +# watchOS Related Slices |
| 62 | +echo "Building watchOS Slices ..." |
| 63 | +xcodebuild archive \ |
| 64 | +-scheme "${SCHEME_NAME}" \ |
| 65 | +-destination "generic/platform=watchOS" \ |
| 66 | +-archivePath "${XCFRAMEWORK_OUTPUT_PATH}/watchOS" \ |
| 67 | +SKIP_INSTALL=NO \ |
| 68 | +BUILD_LIBRARY_FOR_DISTRIBUTION=YES |
| 69 | + |
| 70 | +xcodebuild archive \ |
| 71 | +ONLY_ACTIVE_ARCH=NO \ |
| 72 | +-scheme "${SCHEME_NAME}" \ |
| 73 | +-destination "generic/platform=watchOS Simulator" \ |
| 74 | +-archivePath "${XCFRAMEWORK_OUTPUT_PATH}/watchOSSimulator" \ |
| 75 | +SKIP_INSTALL=NO \ |
| 76 | +BUILD_LIBRARY_FOR_DISTRIBUTION=YES |
24 | 77 |
|
25 |
| -rm -rf "${FRAMEWORK_FOLDER_NAME}" |
26 |
| -echo "Deleted ${FRAMEWORK_FOLDER_NAME}" |
| 78 | +# macOS Related Slices |
| 79 | +echo "Building macOS Slices ..." |
27 | 80 |
|
28 |
| -mkdir "${FRAMEWORK_FOLDER_NAME}" |
29 |
| -echo "Created ${FRAMEWORK_FOLDER_NAME}" |
| 81 | +xcodebuild archive \ |
| 82 | +ONLY_ACTIVE_ARCH=NO \ |
| 83 | +-scheme "${SCHEME_NAME}" \ |
| 84 | +-destination "generic/platform=macOS" \ |
| 85 | +-archivePath "${XCFRAMEWORK_OUTPUT_PATH}/macOS" \ |
| 86 | +SKIP_INSTALL=NO \ |
| 87 | +BUILD_LIBRARY_FOR_DISTRIBUTION=YES |
30 | 88 |
|
31 |
| -echo "Archiving ${FRAMEWORK_NAME}" |
| 89 | +xcodebuild archive \ |
| 90 | +ONLY_ACTIVE_ARCH=NO \ |
| 91 | +-scheme "${SCHEME_NAME}" \ |
| 92 | +-destination "generic/platform=macOS,variant=Mac Catalyst,name=Any Mac" \ |
| 93 | +-archivePath "${XCFRAMEWORK_OUTPUT_PATH}/macOSCatalyst" \ |
| 94 | +SKIP_INSTALL=NO \ |
| 95 | +BUILD_LIBRARY_FOR_DISTRIBUTION=YES |
32 | 96 |
|
33 |
| -xcodebuild archive -scheme ${PROJECT_NAME} -destination="iOS Simulator" -archivePath "${SIMULATOR_ARCHIVE_PATH}" -sdk iphonesimulator SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES |
| 97 | +# Combine all the slices into XCFramework |
| 98 | +echo "Combining Slices into XCFramework ..." |
| 99 | +xcodebuild -create-xcframework \ |
| 100 | +-framework ./${XCFRAMEWORK_OUTPUT_PATH}/iOS.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework \ |
| 101 | +-framework ./${XCFRAMEWORK_OUTPUT_PATH}/iOSSimulator.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework \ |
| 102 | +-framework ./${XCFRAMEWORK_OUTPUT_PATH}/tvOS.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework \ |
| 103 | +-framework ./${XCFRAMEWORK_OUTPUT_PATH}/tvOSSimulator.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework \ |
| 104 | +-framework ./${XCFRAMEWORK_OUTPUT_PATH}/watchOS.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework \ |
| 105 | +-framework ./${XCFRAMEWORK_OUTPUT_PATH}/watchOSSimulator.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework \ |
| 106 | +-framework ./${XCFRAMEWORK_OUTPUT_PATH}/macOS.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework \ |
| 107 | +-framework ./${XCFRAMEWORK_OUTPUT_PATH}/macOSCatalyst.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework \ |
| 108 | +-output "./${XCFRAMEWORK_OUTPUT_PATH}/${PROJECT_NAME}.xcframework" |
34 | 109 |
|
35 |
| -xcodebuild archive -scheme ${PROJECT_NAME} -destination="iOS" -archivePath "${IOS_DEVICE_ARCHIVE_PATH}" -sdk iphoneos SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES |
| 110 | +# Zip it up! |
36 | 111 |
|
37 |
| -#Creating XCFramework |
38 |
| -xcodebuild -create-xcframework -framework ${SIMULATOR_ARCHIVE_PATH}/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework -framework ${IOS_DEVICE_ARCHIVE_PATH}/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework -output "${FRAMEWORK_PATH}" |
39 |
| -rm -rf "${SIMULATOR_ARCHIVE_PATH}" |
40 |
| -rm -rf "${IOS_DEVICE_ARCHIVE_PATH}" |
| 112 | +echo "Zipping up ${PROJECT_NAME}.xcframework ..." |
| 113 | +zip -r ${PROJECT_NAME}.xcframework.zip "./${XCFRAMEWORK_OUTPUT_PATH}/${PROJECT_NAME}.xcframework" |
41 | 114 |
|
42 |
| -zip -r Segment.xcframework.zip "${FRAMEWORK_FOLDER_NAME}/Segment.xcframework" |
| 115 | +echo "Done." |
0 commit comments