#!/bin/bash # Builds an unsigned Stemify.ipa on a Mac, for re-signing with Sideloadly/AltStore. # Uses swiftc directly so it works even when xcodebuild/actool need -runFirstLaunch. set -euo pipefail cd "$(dirname "$0")/.." export PATH=/opt/homebrew/bin:$PATH OUT=build; APP=$OUT/Payload/Stemify.app rm -rf $OUT && mkdir -p $APP SDK=$(xcrun --sdk iphoneos --show-sdk-path) xcrun -sdk iphoneos swiftc -target arm64-apple-ios17.0 -sdk "$SDK" -O -wmo -swift-version 5 \ -module-name Stemify -parse-as-library $(find Stemify -name '*.swift') -o $APP/Stemify # Info.plist: xcodegen's generated one with the build settings filled in. xcodegen generate -q sed -e 's/$(DEVELOPMENT_LANGUAGE)/en/; s/$(EXECUTABLE_NAME)/Stemify/; s/$(PRODUCT_BUNDLE_IDENTIFIER)/com.stemify.mobile/' \ -e 's/$(PRODUCT_NAME)/Stemify/; s/$(MARKETING_VERSION)/1.0/; s/$(CURRENT_PROJECT_VERSION)/1/' \ -e 's/$(PRODUCT_MODULE_NAME)/Stemify/' Stemify/Info.plist > $APP/Info.plist P=$APP/Info.plist plutil -insert MinimumOSVersion -string 17.0 $P plutil -insert CFBundleSupportedPlatforms -json '["iPhoneOS"]' $P plutil -insert UIDeviceFamily -json '[1]' $P plutil -insert UIRequiredDeviceCapabilities -json '["arm64"]' $P plutil -insert DTPlatformName -string iphoneos $P plutil -insert CFBundleIcons -json '{"CFBundlePrimaryIcon":{"CFBundleIconFiles":["AppIcon60x60"]}}' $P plutil -lint $P printf 'APPL????' > $APP/PkgInfo # Loose icon files, since actool also needs -runFirstLaunch. SRC=Stemify/Resources/Assets.xcassets/AppIcon.appiconset/icon.png sips -z 120 120 $SRC --out $APP/AppIcon60x60@2x.png >/dev/null sips -z 180 180 $SRC --out $APP/AppIcon60x60@3x.png >/dev/null (cd $OUT && zip -qry Stemify.ipa Payload) echo "$OUT/Stemify.ipa"