Compare commits
2
Commits
5446dd4170
...
4918df574a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4918df574a | ||
|
|
706403ba31 |
@@ -41,6 +41,28 @@ gecompileerd is, geeft meestal een handvol kleine dingen (een ontbrekende using,
|
|||||||
API-naam). `PrivacyInfo.xcprivacy` moet na het bouwen in de `.app` zitten
|
API-naam). `PrivacyInfo.xcprivacy` moet na het bouwen in de `.app` zitten
|
||||||
(`find . -name PrivacyInfo.xcprivacy`).
|
(`find . -name PrivacyInfo.xcprivacy`).
|
||||||
|
|
||||||
|
## Een gehuurde Mac (MacinCloud) zonder beheerrechten
|
||||||
|
|
||||||
|
Beproefd op 20 oktober 2026: een Managed Server van MacinCloud (Mac mini M2, macOS Tahoe 26.x,
|
||||||
|
Xcode 26.6), met Windows via RDP. Daar heb je geen beheerrechten, en de .NET die erop staat heeft
|
||||||
|
een kapotte werkbelastinginstelling. Wat wel werkt:
|
||||||
|
|
||||||
|
1. Een eigen .NET in je eigen map, in dezelfde versie als de systeem-.NET:
|
||||||
|
`bash ~/dotnet-install.sh --version 10.0.302 --install-dir ~/dotnet302`
|
||||||
|
(script van https://dot.net/v1/dotnet-install.sh), en in elk Terminal-venster:
|
||||||
|
`export DOTNET_ROOT=$HOME/dotnet302 PATH=$HOME/dotnet302:$PATH`.
|
||||||
|
2. `dotnet workload install maui-ios` daarmee. **Let op de Xcode-versie:** de nieuwste .NET
|
||||||
|
(10.0.4xx) levert iOS 27.1 en eist Xcode 27.1 ("requires Xcode 27.1"). De 10.0.3xx-band levert
|
||||||
|
iOS 26.5 en past bij Xcode 26.x. Gebruik dus de oudere SDK zolang Xcode 26 de nieuwste stabiele is.
|
||||||
|
3. `tools/ios-bouwen.sh simulator`. Het script zet `MetAndroid=false` (anders eist de build de
|
||||||
|
Android-werkbelasting) en `CodesignKey=-` (lokale handtekening; de simulator wil geen
|
||||||
|
certificaat, maar de Keychain-rechten in `Entitlements.plist` vragen om een handtekening).
|
||||||
|
Geef nooit `-p:TargetFrameworks=...` op de opdrachtregel mee: dat gaat ook naar de gedeelde
|
||||||
|
projecten (net8.0) en breekt hun herstel.
|
||||||
|
|
||||||
|
Resultaat: de app bouwt en draait in de iPhone 16 Pro-simulator (iOS 18.0), inclusief inloggen en
|
||||||
|
de overzichtsschermen.
|
||||||
|
|
||||||
## Wat er nog moet
|
## Wat er nog moet
|
||||||
|
|
||||||
**Een Mac.** Apple's bouwgereedschap draait alleen op macOS. Visual Studio op Windows verbindt
|
**Een Mac.** Apple's bouwgereedschap draait alleen op macOS. Visual Studio op Windows verbindt
|
||||||
|
|||||||
@@ -16,7 +16,10 @@
|
|||||||
|
|
||||||
of blijvend, door MetIos in een Directory.Build.props of in de omgeving te zetten op de
|
of blijvend, door MetIos in een Directory.Build.props of in de omgeving te zetten op de
|
||||||
machine die wél aan een Mac hangt. Zie docs/iOS-app.md. -->
|
machine die wél aan een Mac hangt. Zie docs/iOS-app.md. -->
|
||||||
<TargetFrameworks>net10.0-android</TargetFrameworks>
|
<!-- MetAndroid=false laat Android weg: op een Mac die alleen iOS bouwt staat de Android-
|
||||||
|
werkbelasting er niet, en dan weigert de hele build (NETSDK1147). Zonder deze schakelaar
|
||||||
|
verandert er niets: Android blijft standaard aan. -->
|
||||||
|
<TargetFrameworks Condition="'$(MetAndroid)' != 'false'">net10.0-android</TargetFrameworks>
|
||||||
<TargetFrameworks Condition="'$(MetIos)' == 'true'">$(TargetFrameworks);net10.0-ios</TargetFrameworks>
|
<TargetFrameworks Condition="'$(MetIos)' == 'true'">$(TargetFrameworks);net10.0-ios</TargetFrameworks>
|
||||||
|
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
|
|||||||
+9
-3
@@ -45,8 +45,14 @@ case "$MODUS" in
|
|||||||
stap "Bouwen en starten in de simulator"
|
stap "Bouwen en starten in de simulator"
|
||||||
# Eerst de lijst met simulators tonen, zodat je ziet welke je kunt kiezen.
|
# Eerst de lijst met simulators tonen, zodat je ziet welke je kunt kiezen.
|
||||||
xcrun simctl list devices available | grep -i iphone | head -5 || true
|
xcrun simctl list devices available | grep -i iphone | head -5 || true
|
||||||
dotnet build "$PROJECT" -f "$TFM" -p:MetIos=true -t:Run \
|
# Eerst bouwen, daarna starten: met alleen -t:Run bouwt hij de app niet en weet hij niet wat
|
||||||
-p:RuntimeIdentifier=iossimulator-arm64
|
# 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)
|
toestel)
|
||||||
controle
|
controle
|
||||||
@@ -58,7 +64,7 @@ case "$MODUS" in
|
|||||||
echo "(Instellingen > Privacy en beveiliging > Ontwikkelaarsmodus)."
|
echo "(Instellingen > Privacy en beveiliging > Ontwikkelaarsmodus)."
|
||||||
echo "Zonder betaald account werkt dit 7 dagen per installatie, en zonder meldingen."
|
echo "Zonder betaald account werkt dit 7 dagen per installatie, en zonder meldingen."
|
||||||
stap "Bouwen voor het toestel"
|
stap "Bouwen voor het toestel"
|
||||||
dotnet build "$PROJECT" -f "$TFM" -p:MetIos=true \
|
dotnet build "$PROJECT" -f "$TFM" -p:MetIos=true -p:MetAndroid=false \
|
||||||
-p:RuntimeIdentifier=ios-arm64 -p:CodesignKey="Apple Development"
|
-p:RuntimeIdentifier=ios-arm64 -p:CodesignKey="Apple Development"
|
||||||
echo
|
echo
|
||||||
echo "Gebouwd. Installeren gaat het makkelijkst via Visual Studio (Pair to Mac) of"
|
echo "Gebouwd. Installeren gaat het makkelijkst via Visual Studio (Pair to Mac) of"
|
||||||
|
|||||||
Reference in New Issue
Block a user