Eerste commit

This commit is contained in:
jf
2026-09-27 14:21:31 +00:00
commit de4ff128cb
295 changed files with 47374 additions and 0 deletions
+106
View File
@@ -0,0 +1,106 @@
<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. -->
<TargetFrameworks>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.0</ApplicationDisplayVersion>
<ApplicationVersion>1</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>
</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\*" />
</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>