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
118 lines
7.3 KiB
XML
118 lines
7.3 KiB
XML
<Project Sdk="Microsoft.NET.Sdk.Razor">
|
|
|
|
<PropertyGroup>
|
|
<!-- De schermen zijn voor allebei dezelfde; alleen wat het toestel zelf doet verschilt.
|
|
Zie Platforms\ en de #if-blokken in Toestelslot.cs en Toestelmeldingen.cs.
|
|
|
|
iOS staat standaard UIT, en dat is geen halfheid maar de enige werkbare stand. Zodra
|
|
net10.0-ios in deze lijst staat, wil elke build - ook een build van alleen de APK - de
|
|
iOS-werkbelasting en een Mac hebben. Op een machine zonder die twee struikelt dan het
|
|
maken van de Android-app over iets wat er niets mee te maken heeft.
|
|
|
|
Aanzetten doe je per keer:
|
|
|
|
dotnet build -p:MetIos=true
|
|
tools\Apk-maken.ps1 (blijft gewoon Android, hier verandert niets)
|
|
|
|
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. -->
|
|
<!-- 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>
|
|
|
|
<OutputType>Exe</OutputType>
|
|
<RootNamespace>MijnBesluit.App</RootNamespace>
|
|
<UseMaui>true</UseMaui>
|
|
<SingleProject>true</SingleProject>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<Nullable>enable</Nullable>
|
|
|
|
<ApplicationTitle>MijnBesluit</ApplicationTitle>
|
|
<ApplicationId>nl.mijnbesluit.app</ApplicationId>
|
|
<ApplicationDisplayVersion>1.1</ApplicationDisplayVersion>
|
|
<ApplicationVersion>3</ApplicationVersion>
|
|
|
|
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">24.0</SupportedOSPlatformVersion>
|
|
|
|
<!-- Op papier kan MAUI vanaf iOS 12.2, maar onder 13 zijn er meldingen van apps die op een
|
|
echt toestel omvallen, en 15.0 is wat het sjabloon zelf gebruikt. Dat draait op een
|
|
iPhone 6s en nieuwer - toestellen uit 2015. Lager gaan levert je een handvol toestellen
|
|
op en een soort fouten dat je niet kunt nabootsen. -->
|
|
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">15.0</SupportedOSPlatformVersion>
|
|
|
|
<!-- Alleen voor iOS: Keychain-toegang voor SecureStorage (zie Platforms\iOS\Entitlements.plist).
|
|
De Remove+Include hieronder werkt of MAUI het privacybestand nu al vanzelf oppakt of niet. -->
|
|
<CodesignEntitlements Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">Platforms\iOS\Entitlements.plist</CodesignEntitlements>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<!-- Het echte logo. Het pictogram is alleen het witte woordmerk op een doorzichtige
|
|
achtergrond, met het logogroen eronder: zo maakt Android er zelf een rond, vierkant of
|
|
druppelvormig pictogram van zonder dat er letters afvallen. Het woordmerk staat daarom
|
|
op zeventig procent - alles buiten die cirkel kan een toestel wegsnijden.
|
|
Het startscherm laat het hele logo zien op de rustige achtergrondkleur. -->
|
|
<MauiIcon Include="Resources\AppIcon\appicon.png" Color="#C1D13F" />
|
|
<MauiSplashScreen Include="Resources\Splash\splash.png" Color="#faf7f2" BaseSize="128,128" />
|
|
<MauiFont Include="Resources\Fonts\*" />
|
|
|
|
<!-- Privacyverklaring voor Apple; wordt in de iOS-app gebundeld. -->
|
|
<BundleResource Remove="Platforms\iOS\PrivacyInfo.xcprivacy" Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'" />
|
|
<BundleResource Include="Platforms\iOS\PrivacyInfo.xcprivacy" LogicalName="PrivacyInfo.xcprivacy" Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<!-- Sinds .NET 8 brengt <UseMaui>true</UseMaui> deze packages niet meer vanzelf mee.
|
|
$(MauiVersion) volgt de werkbelasting die op deze machine staat, dus hier hoeft geen
|
|
versienummer met de hand bijgehouden te worden. -->
|
|
<PackageReference Include="Microsoft.Maui.Controls" Version="$(MauiVersion)" />
|
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebView.Maui" Version="$(MauiVersion)" />
|
|
|
|
<ProjectReference Include="..\MijnBesluit.AppUi\MijnBesluit.AppUi.csproj" />
|
|
</ItemGroup>
|
|
|
|
<!-- Meldingen op de telefoon, via Firebase.
|
|
|
|
Dit blok doet niets zolang google-services.json er niet staat, en gaat vanzelf aan zodra
|
|
je hem uit de Firebase-console in Platforms\Android zet. Zo is er geen stap "en vergeet
|
|
het csproj niet aan te passen" die je een keer overslaat, en blijft het project bouwen op
|
|
een machine waar dat bestand niet staat.
|
|
|
|
De schakelaar FIREBASE hoort bij de #if in Toestelmeldingen.cs: zonder het package is die
|
|
code niet te compileren, dus die staat uit tot het package er is.
|
|
|
|
Zie docs/Meldingen.md. -->
|
|
<PropertyGroup Condition="Exists('$(MSBuildProjectDirectory)\Platforms\Android\google-services.json')">
|
|
<DefineConstants>$(DefineConstants);FIREBASE</DefineConstants>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android' AND Exists('$(MSBuildProjectDirectory)\Platforms\Android\google-services.json')">
|
|
<!-- Binding op com.google.firebase:firebase-messaging. Het versienummer moet passen bij de
|
|
werkbelasting op deze machine; 125.1.1.1 hoort bij net10.0-android. Klaagt de build over
|
|
versies, kijk dan in NuGet welke bij jouw .NET-versie hoort. -->
|
|
<PackageReference Include="Xamarin.Firebase.Messaging" Version="125.1.1.1" />
|
|
|
|
<!-- Firebase's afhankelijkheden pinnen oudere AndroidX .Ktx-packages, terwijl MAUI de
|
|
bijbehorende basispackages al nieuwer binnenhaalt. Dat gaf niet alleen de NU1608-
|
|
waarschuwingen, maar ook een harde fout bij het dexen: sinds AndroidX Fragment 1.9.0
|
|
zitten de Kotlin-uitbreidingen in het hoofdpackage zelf, dus kwam bijvoorbeeld
|
|
androidx.fragment.app.FragmentManagerKt twee keer binnen: een keer uit fragment.aar
|
|
en een keer uit het oude fragment-ktx.aar.
|
|
|
|
Door deze vijf expliciet op de versie te zetten die bij het al opgeloste basispackage
|
|
hoort, zijn de .Ktx-packages leeg (ze verwijzen alleen nog naar het hoofdpackage) en
|
|
is de dubbele klasse weg. Verhoogt een nieuwere MAUI de basispackages, dan komen de
|
|
NU1608-waarschuwingen terug; dat is het signaal om deze nummers mee te verhogen, niet
|
|
om het blok weg te halen. De nummers komen uit NuGet: Fragment.Ktx 1.9.0 bestaat,
|
|
Collection.Ktx 1.6.0.1, en de drie Lifecycle-packages op 2.11.0.1. -->
|
|
<PackageReference Include="Xamarin.AndroidX.Fragment.Ktx" Version="1.9.0" />
|
|
<PackageReference Include="Xamarin.AndroidX.Collection.Ktx" Version="1.6.0.1" />
|
|
<PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.11.0.1" />
|
|
<PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData.Core.Ktx" Version="2.11.0.1" />
|
|
<PackageReference Include="Xamarin.AndroidX.Lifecycle.Process" Version="2.11.0.1" />
|
|
<GoogleServicesJson Include="Platforms\Android\google-services.json" />
|
|
</ItemGroup>
|
|
|
|
</Project>
|