Created
June 25, 2021 15:41
-
-
Save rehannali/90c081563353e0f29b9998626e2dca84 to your computer and use it in GitHub Desktop.
Universal Framework for xcframework
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# Make sure to run this script in Framework folder to work properly. | |
# Create universal-framework.sh and copy all content to it. | |
# Provide FRAMEWORK_NAME to start build | |
# Globals Variables | |
# Avilable Platforms/Architectures | |
# macosx | iphoneos | iphonesimulator | appletvos | appletvsimulator | watchos | watchsimulator | |
DEVICE_ARCH="iphoneos" | |
DEVICE_SIM_ARCH="iphonesimulator" | |
FRAMEWORK_NAME="OneLoadNetwork" | |
FRAMEWORK_DIR_PATH="$(pwd)"/${FRAMEWORK_NAME}-Universal | |
BUILD_DIR_PATH=${FRAMEWORK_DIR_PATH}/build | |
DERIVED_DATA_DIR_PATH=${FRAMEWORK_DIR_PATH}/derived-data | |
LOG_PATH=${FRAMEWORK_DIR_PATH}/logs | |
SIMULATOR_DIR_PATH=${BUILD_DIR_PATH}/simulator | |
DEVICES_DIR_PATH=${BUILD_DIR_PATH}/devices | |
UNIVERSAL_LIBRARY_DIR_PATH=${BUILD_DIR_PATH}/universal | |
SUCCESS=true | |
EXIT_MESSAGE=$? | |
ROW_STRING="\n##################################################################\n" | |
###################### | |
printPaths() | |
{ | |
echo "${ROW_STRING}" | |
echo "BUILD_DIR: ${BUILD_DIR_PATH}" | |
echo "DERIVED_DATA_DIR: ${DERIVED_DATA_DIR_PATH}" | |
echo "LOG_PATH: ${LOG_PATH}" | |
echo "DEVICE_LIBRARY_PATH: ${DEVICES_DIR_PATH}" | |
echo "SIMULATOR_LIBRARY_PATH: ${SIMULATOR_DIR_PATH}" | |
echo "UNIVERSAL_LIBRARY_DIR: ${UNIVERSAL_LIBRARY_DIR_PATH}" | |
echo "${ROW_STRING}" | |
} | |
checkSuccess() | |
{ | |
if [[ -z $EXIT_MESSAGE ]]; then | |
SUCCESS=false | |
exitWithMessage | |
exit 1 | |
fi | |
} | |
exitWithMessage() | |
{ | |
echo "${ROW_STRING}" | |
if [ "$SUCCESS" = true ] ; then | |
echo "\n\n\n π Completed with Success! π" | |
else | |
echo "\n\n\n π± Completed with Errors! Please check line above for details:" | |
echo "${EXIT_MESSAGE}" | |
fi | |
echo "\n π For more details you can always check the ${LOG_PATH}/${FRAMEWORK_NAME}_archive.log file. π \n\n\n" | |
echo "${ROW_STRING}" | |
} | |
makeDirectories() | |
{ | |
mkdir -p "${LOG_PATH}" | |
mkdir -p "${SIMULATOR_DIR_PATH}" | |
mkdir -p "${DEVICES_DIR_PATH}" | |
mkdir -p "${UNIVERSAL_LIBRARY_DIR_PATH}" | |
} | |
###################### | |
# Cleaning up old directories if available. | |
if [ -d "${FRAMEWORK_DIR_PATH}/" ]; then | |
rm -rf "${FRAMEWORK_DIR_PATH}" | |
fi | |
# Make sure we have all directories available to work. | |
makeDirectories | |
# Start with logging process | |
exec > ${LOG_PATH}/${FRAMEWORK_NAME}_archive.log 2>&1 | |
open ${LOG_PATH}/${FRAMEWORK_NAME}_archive.log | |
echo "\n β± Starting the Building Process for Universal Framework... \n\n\n" | |
# Printing the PATHS | |
printPaths | |
###################### | |
echo "${ROW_STRING}" | |
echo "\n\n\n π Step 1: Archiving for ${DEVICE_SIM_ARCH}" | |
echo "${ROW_STRING}" | |
EXIT_MESSAGE="$(xcodebuild archive -scheme "${FRAMEWORK_NAME}" -destination="iOS Simulator" -archivePath "${SIMULATOR_DIR_PATH}"/"${DEVICE_SIM_ARCH}".xcarchive -derivedDataPath "${DERIVED_DATA_DIR_PATH}" -sdk "${DEVICE_SIM_ARCH}" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES)" | |
checkSuccess | |
###################### | |
echo "${ROW_STRING}" | |
echo "\n\n\n π Step 2: Archiving for ${DEVICE_ARCH} \n\n\n" | |
EXIT_MESSAGE="$(xcodebuild archive -scheme "${FRAMEWORK_NAME}" -destination="iOS" -archivePath "${DEVICES_DIR_PATH}"/"${DEVICE_ARCH}".xcarchive -derivedDataPath "${DERIVED_DATA_DIR_PATH}" -sdk "${DEVICE_ARCH}" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES)" | |
checkSuccess | |
###################### | |
echo "${ROW_STRING}" | |
echo "\n\n\n π Step 3: Creating XC Framework into universal folder" | |
echo "${ROW_STRING}" | |
xcodebuild -create-xcframework -framework "${DEVICES_DIR_PATH}"/"${DEVICE_ARCH}".xcarchive/Products/Library/Frameworks/"${FRAMEWORK_NAME}".framework -framework "${SIMULATOR_DIR_PATH}"/"${DEVICE_SIM_ARCH}".xcarchive/Products/Library/Frameworks/"${FRAMEWORK_NAME}".framework -output "${UNIVERSAL_LIBRARY_DIR_PATH}"/"${FRAMEWORK_NAME}".xcframework | |
###################### | |
echo "${ROW_STRING}" | |
echo "\n\n\n π Step 4: Zip XC Framework into universal folder" | |
echo "${ROW_STRING}" | |
cd "${UNIVERSAL_LIBRARY_DIR_PATH}" | |
zip -r9 "${FRAMEWORK_NAME}-$(date +"%Y%m%d%H%M%S")".xcframework.zip "${FRAMEWORK_NAME}".xcframework | |
###################### | |
# Open the Framework directory | |
echo "${ROW_STRING}" | |
open "${UNIVERSAL_LIBRARY_DIR_PATH}" | |
echo "${ROW_STRING}" | |
###################### | |
# Open the log file on Console application | |
exitWithMessage |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment