MetAndroid=false laat Android weg uit de TargetFrameworks (anders weigert een Mac zonder Android-werkbelasting de build). ios-bouwen.sh bouwt nu eerst en start daarna, en gebruikt voor de simulator een lokale handtekening (CodesignKey=-). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014MGLqt1uKfNARQHut9ifcx
77 lines
3.2 KiB
Bash
77 lines
3.2 KiB
Bash
#!/usr/bin/env bash
|
|
# Bouwt (en start) de iOS-app op een Mac.
|
|
#
|
|
# tools/ios-bouwen.sh controle alleen kijken of de Mac er klaar voor is
|
|
# tools/ios-bouwen.sh simulator bouwen en starten in de iPhone-simulator (geen account nodig)
|
|
# tools/ios-bouwen.sh toestel bouwen en op een aangesloten iPhone zetten (Apple-ID / team nodig)
|
|
#
|
|
# Eerste keer: chmod +x tools/ios-bouwen.sh
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "$0")/.."
|
|
PROJECT="src/MijnBesluit.App/MijnBesluit.App.csproj"
|
|
TFM="net10.0-ios"
|
|
MODUS="${1:-controle}"
|
|
|
|
stap() { printf '\n==> %s\n' "$*"; }
|
|
stop() { printf '\nMISLUKT: %s\n' "$*" >&2; exit 1; }
|
|
|
|
controle() {
|
|
stap "Controle van de Mac"
|
|
[[ "$(uname)" == "Darwin" ]] || stop "dit script draait alleen op macOS."
|
|
|
|
command -v xcodebuild >/dev/null || stop "Xcode ontbreekt. Installeer Xcode uit de App Store."
|
|
xcodebuild -version
|
|
xcodebuild -checkFirstLaunchStatus >/dev/null 2>&1 \
|
|
|| stop "Open Xcode één keer met de hand en accepteer de licentie (of: sudo xcodebuild -runFirstLaunch)."
|
|
|
|
command -v dotnet >/dev/null || stop ".NET SDK ontbreekt. Installeer .NET 10 van https://dotnet.microsoft.com/download"
|
|
dotnet --version
|
|
|
|
if ! dotnet workload list 2>/dev/null | grep -q '^maui-ios\|^maui '; then
|
|
stap "MAUI-werkbelasting voor iOS ontbreekt; installeren"
|
|
dotnet workload install maui-ios
|
|
fi
|
|
dotnet workload list
|
|
echo; echo "Mac is klaar."
|
|
}
|
|
|
|
case "$MODUS" in
|
|
controle)
|
|
controle
|
|
;;
|
|
simulator)
|
|
controle
|
|
stap "Bouwen en starten in de simulator"
|
|
# Eerst de lijst met simulators tonen, zodat je ziet welke je kunt kiezen.
|
|
xcrun simctl list devices available | grep -i iphone | head -5 || true
|
|
# Eerst bouwen, daarna starten: met alleen -t:Run bouwt hij de app niet en weet hij niet wat
|
|
# hij moet starten. MetAndroid=false: op de Mac staat alleen de iOS-werkbelasting.
|
|
# CodesignKey=-: een eenvoudige lokale handtekening. De simulator wil geen certificaat, maar de
|
|
# app heeft wel een handtekening nodig vanwege de Keychain-rechten in Entitlements.plist.
|
|
dotnet build "$PROJECT" -f "$TFM" -p:MetIos=true -p:MetAndroid=false \
|
|
-p:RuntimeIdentifier=iossimulator-arm64 -p:CodesignKey=-
|
|
dotnet build "$PROJECT" -f "$TFM" -p:MetIos=true -p:MetAndroid=false -t:Run \
|
|
-p:RuntimeIdentifier=iossimulator-arm64 -p:CodesignKey=-
|
|
;;
|
|
toestel)
|
|
controle
|
|
stap "Aangesloten toestellen"
|
|
xcrun devicectl list devices || true
|
|
echo
|
|
echo "Voor een echt toestel moet in Xcode een team gekozen zijn (Settings > Accounts, Apple-ID"
|
|
echo "toevoegen) en moet het toestel in Ontwikkelaarsmodus staan"
|
|
echo "(Instellingen > Privacy en beveiliging > Ontwikkelaarsmodus)."
|
|
echo "Zonder betaald account werkt dit 7 dagen per installatie, en zonder meldingen."
|
|
stap "Bouwen voor het toestel"
|
|
dotnet build "$PROJECT" -f "$TFM" -p:MetIos=true -p:MetAndroid=false \
|
|
-p:RuntimeIdentifier=ios-arm64 -p:CodesignKey="Apple Development"
|
|
echo
|
|
echo "Gebouwd. Installeren gaat het makkelijkst via Visual Studio (Pair to Mac) of"
|
|
echo "Xcode > Window > Devices and Simulators, of: dotnet build -t:Run -p:_DeviceName=<UDID>"
|
|
;;
|
|
*)
|
|
stop "onbekende optie '$MODUS' (kies: controle, simulator of toestel)"
|
|
;;
|
|
esac
|