[DO NOT MERGE] TFM net8.0
Dogfooding net8.0 only TFM for AndroidX (AX) bindings.
It is to be determined if and when to merge. Thus DO-NOT-MERGE in title and label + draft status.
Some metadata had to be fixed. And some APIs have changed and this needs some investigation
GPS-FB-MLKit PR is Work in Progress (WIP).
Does this change any of the generated binding API's?
Probably. Not sure yet. There were some Metadata changes.
Describe your contribution
In May support for Xamarin.Classic (monoandroid12) and net6.0 will be dropped and this is recon PR to see what is ahead of the team.
- created branch based on .NET 8 (net8.0) build - PR https://github.com/xamarin/AndroidX/pull/804
- bumped Material to 1.11.0
- fixed metdata
Round 01
Errors:
./generated/org.jetbrains.kotlin.kotlin-stdlib/obj/Release/net8.0-android/generated/src/Kotlin.Collections.Builders.AbstractMapBuilderEntrySet.cs(87,38): error CS0111: Type 'AbstractMapBuilderEntrySet' already defines a member called 'Contains' with the same parameter types [./generated/org.jetbrains.kotlin.kotlin-stdlib/org.jetbrains.kotlin.kotlin-stdlib.csproj::TargetFramework=net8.0-android]
./generated/org.jetbrains.kotlin.kotlin-stdlib/obj/Release/net8.0-android/generated/src/Kotlin.Collections.Builders.MapBuilder.cs(22,100): error CS0535: 'MapBuilder' does not implement interface member 'IMap.Size()' [./generated/org.jetbrains.kotlin.kotlin-stdlib/org.jetbrains.kotlin.kotlin-stdlib.csproj::TargetFramework=net8.0-android]
./generated/org.jetbrains.kotlin.kotlin-stdlib/obj/Release/net8.0-android/generated/src/Kotlin.Collections.Builders.MapBuilder.cs(22,100): error CS0535: 'MapBuilder' does not implement interface member 'IMap.Values()' [./generated/org.jetbrains.kotlin.kotlin-stdlib/org.jetbrains.kotlin.kotlin-stdlib.csproj::TargetFramework=net8.0-android]
./generated/org.jetbrains.kotlin.kotlin-stdlib/obj/Release/net8.0-android/generated/src/Kotlin.Collections.Builders.MapBuilderEntries.cs(22,30): error CS0534: 'MapBuilderEntries' does not implement inherited abstract member 'AbstractMutableSet.Add(Object?)' [./generated/org.jetbrains.kotlin.kotlin-stdlib/org.jetbrains.kotlin.kotlin-stdlib.csproj::TargetFramework=net8.0-android]
./generated/org.jetbrains.kotlin.kotlin-stdlib/obj/Release/net8.0-android/generated/src/Kotlin.Collections.Builders.MapBuilderEntries.cs(22,30): error CS0534: 'MapBuilderEntries' does not implement inherited abstract member 'AbstractMutableSet.GetSize()' [./generated/org.jetbrains.kotlin.kotlin-stdlib/org.jetbrains.kotlin.kotlin-stdlib.csproj::TargetFramework=net8.0-android]
Round 02
Errors:
./generated/com.google.crypto.tink.tink-android/obj/Debug/net8.0-android/generated/src/Xamarin.Google.Crypto.Tink.Prf.AesCmacPrfKey.cs(122,73): error CS0115: 'AesCmacPrfKey.GetParameters()': no suitable method found to override [./generated/com.google.crypto.tink.tink-android/com.google.crypto.tink.tink-android.csproj::TargetFramework=net8.0-android]
./generated/com.google.crypto.tink.tink-android/obj/Debug/net8.0-android/generated/src/Xamarin.Google.Crypto.Tink.Prf.HkdfPrfKey.cs(192,73): error CS0115: 'HkdfPrfKey.GetParameters()': no suitable method found to override [./generated/com.google.crypto.tink.tink-android/com.google.crypto.tink.tink-android.csproj::TargetFramework=net8.0-android]
./generated/com.google.crypto.tink.tink-android/obj/Debug/net8.0-android/generated/src/Xamarin.Google.Crypto.Tink.Prf.HmacPrfKey.cs(192,73): error CS0115: 'HmacPrfKey.GetParameters()': no suitable method found to override [./generated/com.google.crypto.tink.tink-android/com.google.crypto.tink.tink-android.csproj::TargetFramework=net8.0-android]
./generated/com.google.crypto.tink.tink-android/obj/Debug/net8.0-android/generated/src/Xamarin.Google.Crypto.Tink.StreamingAead.AesCtrHmacStreamingKey.cs(109,73): error CS0115: 'AesCtrHmacStreamingKey.GetParameters()': no suitable method found to override [./generated/com.google.crypto.tink.tink-android/com.google.crypto.tink.tink-android.csproj::TargetFramework=net8.0-android]
./generated/com.google.crypto.tink.tink-android/obj/Debug/net8.0-android/generated/src/Xamarin.Google.Crypto.Tink.StreamingAead.AesGcmHkdfStreamingKey.cs(109,73): error CS0115: 'AesGcmHkdfStreamingKey.GetParameters()': no suitable method found to override [./generated/com.google.crypto.tink.tink-android/com.google.crypto.tink.tink-android.csproj::TargetFramework=net8.0-android]
./generated/com.google.crypto.tink.tink-android/obj/Debug/net8.0-android/generated/src/Xamarin.Google.Crypto.Tink.Signature.EcdsaPrivateKey.cs(231,66): error CS0115: 'EcdsaPrivateKey.GetPublicKey()': no suitable method found to override [./generated/com.google.crypto.tink.tink-android/com.google.crypto.tink.tink-android.csproj::TargetFramework=net8.0-android]
./generated/com.google.crypto.tink.tink-android/obj/Debug/net8.0-android/generated/src/Xamarin.Google.Crypto.Tink.Signature.EcdsaPublicKey.cs(290,73): error CS0115: 'EcdsaPublicKey.GetParameters()': no suitable method found to override [./generated/com.google.crypto.tink.tink-android/com.google.crypto.tink.tink-android.csproj::TargetFramework=net8.0-android]
./generated/com.google.crypto.tink.tink-android/obj/Debug/net8.0-android/generated/src/Xamarin.Google.Crypto.Tink.Signature.Ed25519PrivateKey.cs(122,66): error CS0115: 'Ed25519PrivateKey.GetPublicKey()': no suitable method found to override [./generated/com.google.crypto.tink.tink-android/com.google.crypto.tink.tink-android.csproj::TargetFramework=net8.0-android]
./generated/com.google.crypto.tink.tink-android/obj/Debug/net8.0-android/generated/src/Xamarin.Google.Crypto.Tink.Signature.Ed25519PublicKey.cs(152,73): error CS0115: 'Ed25519PublicKey.GetParameters()': no suitable method found to override [./generated/com.google.crypto.tink.tink-android/com.google.crypto.tink.tink-android.csproj::TargetFramework=net8.0-android]
./generated/com.google.crypto.tink.tink-android/obj/Debug/net8.0-android/generated/src/Xamarin.Google.Crypto.Tink.Signature.RsaSsaPkcs1PrivateKey.cs(414,66): error CS0115: 'RsaSsaPkcs1PrivateKey.GetPublicKey()': no suitable method found to override [./generated/com.google.crypto.tink.tink-android/com.google.crypto.tink.tink-android.csproj::TargetFramework=net8.0-android]
./generated/com.google.crypto.tink.tink-android/obj/Debug/net8.0-android/generated/src/Xamarin.Google.Crypto.Tink.Signature.RsaSsaPssPrivateKey.cs(401,66): error CS0115: 'RsaSsaPssPrivateKey.GetPublicKey()': no suitable method found to override [./generated/com.google.crypto.tink.tink-android/com.google.crypto.tink.tink-android.csproj::TargetFramework=net8.0-android]
./generated/com.google.crypto.tink.tink-android/obj/Debug/net8.0-android/generated/src/Xamarin.Google.Crypto.Tink.Signature.RsaSsaPkcs1PublicKey.cs(290,73): error CS0115: 'RsaSsaPkcs1PublicKey.GetParameters()': no suitable method found to override [./generated/com.google.crypto.tink.tink-android/com.google.crypto.tink.tink-android.csproj::TargetFramework=net8.0-android]
./generated/com.google.crypto.tink.tink-android/obj/Debug/net8.0-android/generated/src/Xamarin.Google.Crypto.Tink.Signature.RsaSsaPssPublicKey.cs(290,73): error CS0115: 'RsaSsaPssPublicKey.GetParameters()': no suitable method found to override [./generated/com.google.crypto.tink.tink-android/com.google.crypto.tink.tink-android.csproj::TargetFramework=net8.0-android]
https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=8618748&view=logs&j=3b059b26-55fe-5273-567a-5b3fa6c051e7&t=90a64c1c-0058-5f10-5c08-27329dc26712
CI builds 280 errors like:
2023-10-31T08:50:36.7536580Z /Users/runner/hostedtoolcache/dotnet/sdk/8.0.100-rc.2.23502.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(398,5): error NETSDK1073: The FrameworkReference 'Microsoft.Android' was not recognized [/Users/runner/work/1/s/generated/io.reactivex.rxjava3.rxkotlin/io.reactivex.rxjava3.rxkotlin.csproj::TargetFramework=net8.0-android]
/azp run
Azure Pipelines successfully started running 1 pipeline(s).
/azp run
Azure Pipelines successfully started running 1 pipeline(s).
The number of namespaces removed makes me worried that significant amounts of types are no longer being bound. 😢
Let me finish GPS-FB-MLKit and then I can investigate this. Shouldn't be too long.
- The .NET 8 SDK cannot build
net6.0-android, so there's no (reasonable) way to multitargetnet6.0-androidandnet8.0-android.Likely, actually publishing
net8.0-androidpackages is not possible until at least Mid 2024.
is it not possible to compile net8 libs with 8 SDK and 6 and classic bits with 6 SDK and use nuget.exe with a .nuspec file to generate the package from the already compiled bits?
is it not possible to compile net8 libs with 8 SDK and 6 and classic bits with 6 SDK and use nuget.exe with a .nuspec file to generate the package from the already compiled bits?
Yes, that would be the "not reasonable way", as we would have to rewrite large portions of our infrastructure for 500+ packages to work this way. 😁
There also isn't much benefit to compiling against .NET 8. The only difference would be if something in one of these packages requires API that was only added to Android in API-34. The intent of most of these packages is to provide code that runs on all versions of Android.
The only difference would be if something in one of these packages requires API that was only added to Android in API-34.
looks like com.google.android.material requires API34 since 1.11.0 as it uses colors that are added in API34:
[Android.Runtime.Register("system_on_error_dark", ApiSince=34)]
public const int SystemOnErrorDark = 17170596;
I have no why you requested review from me, but it is green and .net 7.0 is now dead, go and merge it.
I have no why you requested review from me, but it is green and .net 7.0 is now dead, go and merge it.
You were in reviewers list (most likely because you commented). net7.0 is not completely dead, because there was update last week, but yes we need to switch to net8.0, because of some other issues.
net8.0 is on its way. this week i hope