-
Notifications
You must be signed in to change notification settings - Fork 2
/
build-framework.sh
92 lines (71 loc) · 2.6 KB
/
build-framework.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#! /bin/sh -e
# This script demonstrates archive and create action on frameworks and libraries
#
# @author Boris Bielik
# Release dir path
OUTPUT_DIR_PATH=$1
if [[ -z $1 ]]; then
echo "Output dir was not set. try to run ./scripts/create_xcframeworks.sh Products"
exit 1;
fi
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 archive \
-workspace KarhooSDK.xcworkspace \
-scheme ${1} \
-destination "${2}" \
-archivePath "${3}" \
SKIP_INSTALL=NO \
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
}
#### Static Library ####
LIBRARY=KarhooSDK
echo "▸ Archive $LIBRARY"
buildArchive ${LIBRARY}
echo "▸ Create $FRAMEWORK.xcframework"
createXCFrameworkForStaticLibrary ${LIBRARY}
#### Dynamic Framework ####
DYNAMIC_FRAMEWORK=KarhooSDK
echo "▸ Archive $DYNAMIC_FRAMEWORK"
buildArchive ${DYNAMIC_FRAMEWORK}
echo "▸ Create $DYNAMIC_FRAMEWORK.xcframework"
createXCFramework ${DYNAMIC_FRAMEWORK}