create-xcframework.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/bin/bash
  2. set -e
  3. set -o pipefail
  4. XCODE_VERSION=$(xcodebuild -version | head -n 1| awk -F ' ' '{print $2}')
  5. XCODE_VERSION_MAJOR=$(echo $XCODE_VERSION | awk -F '.' '{print $1}')
  6. XCODE_VERSION_MINOR=$(echo $XCODE_VERSION | awk -F '.' '{print $2}')
  7. XCODE_VERSION_PATCH=$(echo $XCODE_VERSION | awk -F '.' '{print $3}')
  8. if [ -z "$SRCROOT" ]
  9. then
  10. SRCROOT=$(pwd)
  11. fi
  12. if [ $XCODE_VERSION_MAJOR -lt 11 ]
  13. then
  14. echo "Xcode 10 does not support xcframework. You can still use the individual framework for each platform."
  15. open -a Finder "${SRCROOT}/build/"
  16. exit 0
  17. fi
  18. mkdir -p "${SRCROOT}/build"
  19. PLATFORMS=("iOS" "iOSSimulator" "macOS" "tvOS" "tvOSSimulator" "watchOS" "watchOSSimulator")
  20. if [ $XCODE_VERSION_MAJOR -ge 11 ]
  21. then
  22. PLATFORMS+=("macCatalyst")
  23. fi
  24. if [[ ($XCODE_VERSION_MAJOR -gt 15) || ($XCODE_VERSION_MAJOR -eq 15 && $XCODE_VERSION_MINOR -ge 2) ]]
  25. then
  26. PLATFORMS+=("visionOS")
  27. PLATFORMS+=("visionOSSimulator")
  28. fi
  29. COMMAND_ARGS=""
  30. for CURRENT_PLATFORM in "${PLATFORMS[@]}"
  31. do
  32. COMMAND_ARGS="${COMMAND_ARGS} -framework ${SRCROOT}/build/${CURRENT_PLATFORM}/SDWebImage.framework"
  33. if [[ $MACH_O_TYPE != "staticlib" ]]; then
  34. COMMAND_ARGS="${COMMAND_ARGS} -debug-symbols ${SRCROOT}/build/${CURRENT_PLATFORM}/SDWebImage.framework.dSYM"
  35. fi
  36. done
  37. # Combine XCFramework
  38. echo "Create XCFramework"
  39. xcodebuild -create-xcframework $COMMAND_ARGS -output "${SRCROOT}/build/SDWebImage.xcframework"