chore: bump Xamarin.AndroidX Package Versions#21205
Conversation
Context: #21140 Context: unoplatform/uno-private#1422 Context: dotnet/java-interop@356485e While exploring the use of NativeAOT on Android for .NET 10, a sticking point is that running within an Android+NativeAOT environment requires the use of a new "style" of bindings; see dotnet/java-interop@356485ee. The new style requires .NET 10. However, the various Xamarin.AndroidX packages have been updated to provide bindings for *both* .NET 8 *and* .NET 10 previews, which allows apps targeting .NET 10 to begin exploring NativeAOT use. Update the required Xamarin.AndroidX NuGet package versions to versions which provide both .NET 8 and .NET 10 binaries.
|
🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-21205/docs/index.html |
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21205/wasm-skia-net9/index.html |
|
|
Context: c6a2bce Commit c6a2bce generated a number of NuGet errors on CI, e.g.: …/uno51blank.csproj : error NU1608: Warning As Error: Detected package version outside of dependency constraint: Xamarin.AndroidX.Lifecycle.Process 2.8.7.4 requires Xamarin.AndroidX.Lifecycle.Runtime (>= 2.8.7.4 && < 2.8.8) but version Xamarin.AndroidX.Lifecycle.Runtime 2.9.1 was resolved. Current assumption from reading the `uno51blank.csproj` binlog is that the "root cause" is this: PackageVersion … Xamarin.Google.Android.Material Version = 1.10.0.3 i.e. that the app was pulling in [Xamarin.Google.Android.Material 1.10.0.3][0] -- from 2024-Feb-22! -- which in turn eventually brought in Xamarin.AndroidX.Lifecycle.Process, resulting in the above NU1608 warning-as-error. Update the versions of *all* `Xamarin.*` NuGet packages, including `Xamarin.Google.Android.Material`. Hopefully this will resolve the NU1608 warning. [0]: https://www.nuget.org/packages/Xamarin.Google.Android.Material/1.10.0.3
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21205/wasm-skia-net9/index.html |
|
|
Context: 832fbc5 The attempt to "bump all the Xamarin.* things?" (832fbc5) failed: src\Uno.UI.BindingHelper.Android\Uno.UI.BindingHelper.Android.netcoremobile.csproj(0,0): Error NU1608: Warning As Error: Detected package version outside of dependency constraint: Xamarin.AndroidX.Lifecycle.Process 2.8.7.4 requires Xamarin.AndroidX.Lifecycle.Runtime (>= 2.8.7.4 && < 2.8.8) but version Xamarin.AndroidX.Lifecycle.Runtime 2.9.1 was resolved. What's interesting (to me) is *why*: I bumped to the most recent version of all the packages, but doesn't work, as not all packages are updated at the same time, and thus aren't consistent. Case in point: * [Xamarin.AndroidX.Activity/1.10.1.2][0] (the current latest) depends on Xamarin.AndroidX.Lifecycle.Runtime/2.8.7.4 * [Xamarin.AndroidX.AppCompat/1.7.1][1] (the current latest) depends on Xamarin.AndroidX.Lifecycle.Runtime/2.9.1 Oops. For future reference, the `.binlog` is not entirely helpful for diagnosing NU1608. The generated `obj/*/project.nuget.cache` helps. Drop the Xamarin.AndroidX.Activity version from 1.7.1 to [1.7.0.7][2], which has a consistent Xamarin.AndroidX.Lifecycle.Runtime/2.8.7.4 dep. Review the other package updates in 832fbc5, and drop the versions so that they align *in time* ("2 months ago"). This should help ensure consistency across packages. [0]: https://www.nuget.org/packages/Xamarin.AndroidX.Activity/1.10.1.2#dependencies-body-tab [1]: https://www.nuget.org/packages/Xamarin.AndroidX.AppCompat/1.7.1#dependencies-body-tab [2]: https://www.nuget.org/packages/Xamarin.AndroidX.AppCompat/1.7.0.7#dependencies-body-tab
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21205/wasm-skia-net9/index.html |
Context: af83457 Similar to Xamarin.AndroidX.AppCompat in af83457, the Xamarin.AndroidX.Lifecycle.LiveData NuGet package had *two* releases "two months ago": 2.8.7.4 and 2.9.0. Usage of the newer 2.9.0 resulted in various NU1608 errors: C:\a\1\s\src\Uno.UI\Uno.UI.netcoremobile.csproj : error NU1608: Warning As Error: Detected package version outside of dependency constraint: Xamarin.AndroidX.Lifecycle.ViewModelSavedState 2.8.7.4 requires Xamarin.AndroidX.Lifecycle.LiveData.Core (>= 2.8.7.4 && < 2.8.8) but version Xamarin.AndroidX.Lifecycle.LiveData.Core 2.9.0 was resolved. [C:\a\1\s\Build\filters\Uno.UI-packages-netcoremobile.slnf] Use Xamarin.AndroidX.Lifecycle.LiveData 2.8.7.4 to avoid the NU1608. Local builds then hit another issue: the `AndroidX.DocumentFile` namespace could not be resolved, resulting in a C# compilation error: src/Uno.UWP/Storage/StorageFolder.saf.Android.cs(31,21): error CS0246: The type or namespace name 'DocumentFile' could not be found (are you missing a using directive or an assembly reference?) The cause for this is the Xamarin.AndroidX.Browser NuGet package: [Xamarin.AndroidX.Browser/1.0.0][0] has a dependency on Xamarin.AndroidX.Legacy.Support.Core.UI, which eventully pulls in Xamarin.AndroidX.DocumentFile. [Xamarin.AndroidX.Browser/1.8.0.10][1] *does not*. The Xamarin.AndroidX.Legacy.Support.Core.UI dependency was removed in Xamarin.AndroidX.Browser/1.2.0. Fix the CS0246 by explicitly adding a reference to Xamarin.AndroidX.DocumentFile. Finally, fix some nullability and `[Obsolete]` errors caused by using a newer Xamarin.AndroidX.DocumentFile package. [0]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.0.0#dependencies-body-tab [1]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.8.0.10#dependencies-body-tab
|
|
|
🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-21205/docs/index.html |
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21205/wasm-skia-net9/index.html |
|
🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-21205/docs/index.html |
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21205/wasm-skia-net9/index.html |
|
The build 173120 found UI Test snapshots differences: Details
|
|
Consensus is that:
|
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 now requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 now requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 now requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. * Update `SamplesApp.UITests.csproj` to explicitly use Microsoft.NET.Test.Sdk 17.14.1, to "override" the nearly four year old Microsoft.NET.Test.Sdk 17.0.0 reference implicitly brought in from Uno.UITest.Helpers/1.1.0-dev.70. This hopefully fixes a `MissingMethodException` for `IFileSystem.Exists(string)` seen on CI: Unhandled exception. System.MissingMethodException: Method not found: 'Boolean Microsoft.Testing.Platform.Helpers.IFileSystem.Exists(System.String)'. at Microsoft.Testing.Extensions.VSTestBridge.Configurations.RunSettingsConfigurationProvider.BuildAsync(CommandLineParseResult commandLineParseResult) at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine) at Microsoft.Testing.Extensions.VSTestBridge.Configurations.RunSettingsConfigurationProvider.BuildAsync(CommandLineParseResult commandLineParseResult) at Microsoft.Testing.Platform.Configurations.ConfigurationManager.BuildAsync(IFileLoggerProvider syncFileLoggerProvider, CommandLineParseResult commandLineParseResult) in /_/src/Platform/Microsoft.Testing.Platform/Configurations/ConfigurationManager.cs:line 37 at Microsoft.Testing.Platform.Hosts.TestHostBuilder.BuildAsync(ApplicationLoggingState loggingState, TestApplicationOptions testApplicationOptions, IUnhandledExceptionsHandler unhandledExceptionsHandler, DateTimeOffset createBuilderStart) in /_/src/Platform/Microsoft.Testing.Platform/Hosts/TestHostBuilder.cs:line 131 at Microsoft.Testing.Platform.Builder.TestApplicationBuilder.BuildAsync() in /_/src/Platform/Microsoft.Testing.Platform/Builder/TestApplicationBuilder.cs:line 112 at TestingPlatformEntryPoint.Main(String[] args) in /__w/1/s/src/SamplesApp/SamplesApp.UITests/obj/Release/net9.0/TestPlatformEntryPoint.cs:line 14 at TestingPlatformEntryPoint.<Main>(String[] args) TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. * Add new `$(NetPreviousNetCoreApple)` MSBuild property to `Directory.Build.props`, which contains target frameworks for $(NetPrevios) Apple platforms. Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use `$(NetPreviousNetCoreApple)`. This is so that target frameworks are consistent: `net9.0-ios` *floats*; circa a year ago, it aliased `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`. This can make it annoyingly difficult to `[Obsolete]`s consistent across separate project builds. TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. * Add new `$(NetPreviousNetCoreApple)` MSBuild property to `Directory.Build.props`, which contains target frameworks for $(NetPrevios) Apple platforms. Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use `$(NetPreviousNetCoreApple)`. This is so that target frameworks are consistent: `net9.0-ios` *floats*; circa a year ago, it aliased `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`. This can make it annoyingly difficult to `[Obsolete]`s consistent across separate project builds. TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #21205 Context: #21140 Context: unoplatform/uno-private#1422 Context: dotnet/java-interop@356485e While exploring the use of NativeAOT on Android for .NET 10, a sticking point is that running within an Android+NativeAOT environment requires the use of a new "style" of bindings; see dotnet/java-interop@356485ee. The new style requires .NET 10. However, the various Xamarin.AndroidX packages have been updated to provide bindings for *both* .NET 8 *and* .NET 10 previews, which allows apps targeting .NET 10 to begin exploring NativeAOT use. Update the required Xamarin.AndroidX NuGet package versions to versions which provide both .NET 8 and .NET 10 binaries, but *only* for .NET 10 target frameworks. .NET 9 targets continue. using the previous NuGet package versions. Additionally, the Xamarin.AndroidX.Browser NuGet package: [Xamarin.AndroidX.Browser/1.0.0][0] has a dependency on Xamarin.AndroidX.Legacy.Support.Core.UI, which eventully pulls in Xamarin.AndroidX.DocumentFile. [Xamarin.AndroidX.Browser/1.8.0.10][1] *does not*. The Xamarin.AndroidX.Legacy.Support.Core.UI dependency was removed in Xamarin.AndroidX.Browser/1.2.0. Fix a CS0246 error in `StorageFolder.saf.Android.cs` by explicitly adding a reference to Xamarin.AndroidX.DocumentFile. Finally, fix some nullability and `[Obsolete]` errors caused by using a newer Xamarin.AndroidX.DocumentFile package. [0]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.0.0#dependencies-body-tab [1]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.8.0.10#dependencies-body-tab
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. * Add new `$(NetPreviousNetCoreApple)` MSBuild property to `Directory.Build.props`, which contains target frameworks for $(NetPrevios) Apple platforms. Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh` to provide a "complete" target framework version. This is so that target frameworks are consistent: `net9.0-ios` *floats*; circa a year ago, it aliased `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`. "Even better", this doesn't "flow" to the C# compiler: `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not* `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used! This can make it annoyingly difficult to get `[Obsolete]`s consistent across separate project builds. TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #21205 Context: #21140 Context: unoplatform/uno-private#1422 Context: dotnet/java-interop@356485e While exploring the use of NativeAOT on Android for .NET 10, a sticking point is that running within an Android+NativeAOT environment requires the use of a new "style" of bindings; see dotnet/java-interop@356485ee. The new style requires .NET 10. However, the various Xamarin.AndroidX packages have been updated to provide bindings for *both* .NET 8 *and* .NET 10 previews, which allows apps targeting .NET 10 to begin exploring NativeAOT use. Update the required Xamarin.AndroidX NuGet package versions to versions which provide both .NET 8 and .NET 10 binaries, but *only* for .NET 10 target frameworks. .NET 9 targets continue. using the previous NuGet package versions. Additionally, the Xamarin.AndroidX.Browser NuGet package: [Xamarin.AndroidX.Browser/1.0.0][0] has a dependency on Xamarin.AndroidX.Legacy.Support.Core.UI, which eventully pulls in Xamarin.AndroidX.DocumentFile. [Xamarin.AndroidX.Browser/1.8.0.10][1] *does not*. The Xamarin.AndroidX.Legacy.Support.Core.UI dependency was removed in Xamarin.AndroidX.Browser/1.2.0. Fix a CS0246 error in `StorageFolder.saf.Android.cs` by explicitly adding a reference to Xamarin.AndroidX.DocumentFile. Finally, fix some nullability and `[Obsolete]` errors caused by using a newer Xamarin.AndroidX.DocumentFile package. [0]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.0.0#dependencies-body-tab [1]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.8.0.10#dependencies-body-tab
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. * Add new `$(NetPreviousNetCoreApple)` MSBuild property to `Directory.Build.props`, which contains target frameworks for $(NetPrevios) Apple platforms. Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh` to provide a "complete" target framework version. This is so that target frameworks are consistent: `net9.0-ios` *floats*; circa a year ago, it aliased `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`. "Even better", this doesn't "flow" to the C# compiler: `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not* `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used! This can make it annoyingly difficult to get `[Obsolete]`s consistent across separate project builds. TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #21205 Context: #21140 Context: unoplatform/uno-private#1422 Context: dotnet/java-interop@356485e While exploring the use of NativeAOT on Android for .NET 10, a sticking point is that running within an Android+NativeAOT environment requires the use of a new "style" of bindings; see dotnet/java-interop@356485ee. The new style requires .NET 10. However, the various Xamarin.AndroidX packages have been updated to provide bindings for *both* .NET 8 *and* .NET 10 previews, which allows apps targeting .NET 10 to begin exploring NativeAOT use. Update the required Xamarin.AndroidX NuGet package versions to versions which provide both .NET 8 and .NET 10 binaries, but *only* for .NET 10 target frameworks. .NET 9 targets continue. using the previous NuGet package versions. Additionally, the Xamarin.AndroidX.Browser NuGet package: [Xamarin.AndroidX.Browser/1.0.0][0] has a dependency on Xamarin.AndroidX.Legacy.Support.Core.UI, which eventully pulls in Xamarin.AndroidX.DocumentFile. [Xamarin.AndroidX.Browser/1.8.0.10][1] *does not*. The Xamarin.AndroidX.Legacy.Support.Core.UI dependency was removed in Xamarin.AndroidX.Browser/1.2.0. Fix a CS0246 error in `StorageFolder.saf.Android.cs` by explicitly adding a reference to Xamarin.AndroidX.DocumentFile. Finally, fix some nullability and `[Obsolete]` errors caused by using a newer Xamarin.AndroidX.DocumentFile package. [0]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.0.0#dependencies-body-tab [1]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.8.0.10#dependencies-body-tab
Context: #21205 Context: #21140 Context: unoplatform/uno-private#1422 Context: dotnet/java-interop@356485e While exploring the use of NativeAOT on Android for .NET 10, a sticking point is that running within an Android+NativeAOT environment requires the use of a new "style" of bindings; see dotnet/java-interop@356485ee. The new style requires .NET 10. However, the various Xamarin.AndroidX packages have been updated to provide bindings for *both* .NET 8 *and* .NET 10 previews, which allows apps targeting .NET 10 to begin exploring NativeAOT use. Update the required Xamarin.AndroidX NuGet package versions to versions which provide both .NET 8 and .NET 10 binaries, but *only* for .NET 10 target frameworks. .NET 9 targets continue. using the previous NuGet package versions. Additionally, the Xamarin.AndroidX.Browser NuGet package: [Xamarin.AndroidX.Browser/1.0.0][0] has a dependency on Xamarin.AndroidX.Legacy.Support.Core.UI, which eventully pulls in Xamarin.AndroidX.DocumentFile. [Xamarin.AndroidX.Browser/1.8.0.10][1] *does not*. The Xamarin.AndroidX.Legacy.Support.Core.UI dependency was removed in Xamarin.AndroidX.Browser/1.2.0. Fix a CS0246 error in `StorageFolder.saf.Android.cs` by explicitly adding a reference to Xamarin.AndroidX.DocumentFile. Finally, fix some nullability and `[Obsolete]` errors caused by using a newer Xamarin.AndroidX.DocumentFile package. [0]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.0.0#dependencies-body-tab [1]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.8.0.10#dependencies-body-tab
Context: #21205 Context: #21140 Context: unoplatform/uno-private#1422 Context: dotnet/java-interop@356485e While exploring the use of NativeAOT on Android for .NET 10, a sticking point is that running within an Android+NativeAOT environment requires the use of a new "style" of bindings; see dotnet/java-interop@356485ee. The new style requires .NET 10. However, the various Xamarin.AndroidX packages have been updated to provide bindings for *both* .NET 8 *and* .NET 10 previews, which allows apps targeting .NET 10 to begin exploring NativeAOT use. Update the required Xamarin.AndroidX NuGet package versions to versions which provide both .NET 8 and .NET 10 binaries, but *only* for .NET 10 target frameworks. .NET 9 targets continue. using the previous NuGet package versions. Additionally, the Xamarin.AndroidX.Browser NuGet package: [Xamarin.AndroidX.Browser/1.0.0][0] has a dependency on Xamarin.AndroidX.Legacy.Support.Core.UI, which eventully pulls in Xamarin.AndroidX.DocumentFile. [Xamarin.AndroidX.Browser/1.8.0.10][1] *does not*. The Xamarin.AndroidX.Legacy.Support.Core.UI dependency was removed in Xamarin.AndroidX.Browser/1.2.0. Fix a CS0246 error in `StorageFolder.saf.Android.cs` by explicitly adding a reference to Xamarin.AndroidX.DocumentFile. Finally, fix some nullability and `[Obsolete]` errors caused by using a newer Xamarin.AndroidX.DocumentFile package. [0]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.0.0#dependencies-body-tab [1]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.8.0.10#dependencies-body-tab
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. * Add new `$(NetPreviousNetCoreApple)` MSBuild property to `Directory.Build.props`, which contains target frameworks for $(NetPrevios) Apple platforms. Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh` to provide a "complete" target framework version. This is so that target frameworks are consistent: `net9.0-ios` *floats*; circa a year ago, it aliased `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`. "Even better", this doesn't "flow" to the C# compiler: `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not* `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used! This can make it annoyingly difficult to get `[Obsolete]`s consistent across separate project builds. TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #21205 Context: #21140 Context: unoplatform/uno-private#1422 Context: dotnet/java-interop@356485e While exploring the use of NativeAOT on Android for .NET 10, a sticking point is that running within an Android+NativeAOT environment requires the use of a new "style" of bindings; see dotnet/java-interop@356485ee. The new style requires .NET 10. However, the various Xamarin.AndroidX packages have been updated to provide bindings for *both* .NET 8 *and* .NET 10 previews, which allows apps targeting .NET 10 to begin exploring NativeAOT use. Update the required Xamarin.AndroidX NuGet package versions to versions which provide both .NET 8 and .NET 10 binaries, but *only* for .NET 10 target frameworks. .NET 9 targets continue. using the previous NuGet package versions. Additionally, the Xamarin.AndroidX.Browser NuGet package: [Xamarin.AndroidX.Browser/1.0.0][0] has a dependency on Xamarin.AndroidX.Legacy.Support.Core.UI, which eventully pulls in Xamarin.AndroidX.DocumentFile. [Xamarin.AndroidX.Browser/1.8.0.10][1] *does not*. The Xamarin.AndroidX.Legacy.Support.Core.UI dependency was removed in Xamarin.AndroidX.Browser/1.2.0. Fix a CS0246 error in `StorageFolder.saf.Android.cs` by explicitly adding a reference to Xamarin.AndroidX.DocumentFile. Finally, fix some nullability and `[Obsolete]` errors caused by using a newer Xamarin.AndroidX.DocumentFile package. [0]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.0.0#dependencies-body-tab [1]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.8.0.10#dependencies-body-tab
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. * Add new `$(NetPreviousNetCoreApple)` MSBuild property to `Directory.Build.props`, which contains target frameworks for $(NetPrevios) Apple platforms. Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh` to provide a "complete" target framework version. This is so that target frameworks are consistent: `net9.0-ios` *floats*; circa a year ago, it aliased `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`. "Even better", this doesn't "flow" to the C# compiler: `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not* `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used! This can make it annoyingly difficult to get `[Obsolete]`s consistent across separate project builds. TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #21205 Context: #21140 Context: unoplatform/uno-private#1422 Context: dotnet/java-interop@356485e While exploring the use of NativeAOT on Android for .NET 10, a sticking point is that running within an Android+NativeAOT environment requires the use of a new "style" of bindings; see dotnet/java-interop@356485ee. The new style requires .NET 10. However, the various Xamarin.AndroidX packages have been updated to provide bindings for *both* .NET 8 *and* .NET 10 previews, which allows apps targeting .NET 10 to begin exploring NativeAOT use. Update the required Xamarin.AndroidX NuGet package versions to versions which provide both .NET 8 and .NET 10 binaries, but *only* for .NET 10 target frameworks. .NET 9 targets continue. using the previous NuGet package versions. Additionally, the Xamarin.AndroidX.Browser NuGet package: [Xamarin.AndroidX.Browser/1.0.0][0] has a dependency on Xamarin.AndroidX.Legacy.Support.Core.UI, which eventully pulls in Xamarin.AndroidX.DocumentFile. [Xamarin.AndroidX.Browser/1.8.0.10][1] *does not*. The Xamarin.AndroidX.Legacy.Support.Core.UI dependency was removed in Xamarin.AndroidX.Browser/1.2.0. Fix a CS0246 error in `StorageFolder.saf.Android.cs` by explicitly adding a reference to Xamarin.AndroidX.DocumentFile. Finally, fix some nullability and `[Obsolete]` errors caused by using a newer Xamarin.AndroidX.DocumentFile package. [0]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.0.0#dependencies-body-tab [1]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.8.0.10#dependencies-body-tab
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. * Add new `$(NetPreviousNetCoreApple)` MSBuild property to `Directory.Build.props`, which contains target frameworks for $(NetPrevios) Apple platforms. Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh` to provide a "complete" target framework version. This is so that target frameworks are consistent: `net9.0-ios` *floats*; circa a year ago, it aliased `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`. "Even better", this doesn't "flow" to the C# compiler: `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not* `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used! This can make it annoyingly difficult to get `[Obsolete]`s consistent across separate project builds. TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #21205 Context: #21140 Context: unoplatform/uno-private#1422 Context: dotnet/java-interop@356485e While exploring the use of NativeAOT on Android for .NET 10, a sticking point is that running within an Android+NativeAOT environment requires the use of a new "style" of bindings; see dotnet/java-interop@356485ee. The new style requires .NET 10. However, the various Xamarin.AndroidX packages have been updated to provide bindings for *both* .NET 8 *and* .NET 10 previews, which allows apps targeting .NET 10 to begin exploring NativeAOT use. Update the required Xamarin.AndroidX NuGet package versions to versions which provide both .NET 8 and .NET 10 binaries, but *only* for .NET 10 target frameworks. .NET 9 targets continue. using the previous NuGet package versions. Additionally, the Xamarin.AndroidX.Browser NuGet package: [Xamarin.AndroidX.Browser/1.0.0][0] has a dependency on Xamarin.AndroidX.Legacy.Support.Core.UI, which eventully pulls in Xamarin.AndroidX.DocumentFile. [Xamarin.AndroidX.Browser/1.8.0.10][1] *does not*. The Xamarin.AndroidX.Legacy.Support.Core.UI dependency was removed in Xamarin.AndroidX.Browser/1.2.0. Fix a CS0246 error in `StorageFolder.saf.Android.cs` by explicitly adding a reference to Xamarin.AndroidX.DocumentFile. Finally, fix some nullability and `[Obsolete]` errors caused by using a newer Xamarin.AndroidX.DocumentFile package. [0]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.0.0#dependencies-body-tab [1]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.8.0.10#dependencies-body-tab
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. * Add new `$(NetPreviousNetCoreApple)` MSBuild property to `Directory.Build.props`, which contains target frameworks for $(NetPrevios) Apple platforms. Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh` to provide a "complete" target framework version. This is so that target frameworks are consistent: `net9.0-ios` *floats*; circa a year ago, it aliased `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`. "Even better", this doesn't "flow" to the C# compiler: `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not* `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used! This can make it annoyingly difficult to get `[Obsolete]`s consistent across separate project builds. TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #21205 Context: #21140 Context: unoplatform/uno-private#1422 Context: dotnet/java-interop@356485e While exploring the use of NativeAOT on Android for .NET 10, a sticking point is that running within an Android+NativeAOT environment requires the use of a new "style" of bindings; see dotnet/java-interop@356485ee. The new style requires .NET 10. However, the various Xamarin.AndroidX packages have been updated to provide bindings for *both* .NET 8 *and* .NET 10 previews, which allows apps targeting .NET 10 to begin exploring NativeAOT use. Update the required Xamarin.AndroidX NuGet package versions to versions which provide both .NET 8 and .NET 10 binaries, but *only* for .NET 10 target frameworks. .NET 9 targets continue. using the previous NuGet package versions. Additionally, the Xamarin.AndroidX.Browser NuGet package: [Xamarin.AndroidX.Browser/1.0.0][0] has a dependency on Xamarin.AndroidX.Legacy.Support.Core.UI, which eventully pulls in Xamarin.AndroidX.DocumentFile. [Xamarin.AndroidX.Browser/1.8.0.10][1] *does not*. The Xamarin.AndroidX.Legacy.Support.Core.UI dependency was removed in Xamarin.AndroidX.Browser/1.2.0. Fix a CS0246 error in `StorageFolder.saf.Android.cs` by explicitly adding a reference to Xamarin.AndroidX.DocumentFile. Finally, fix some nullability and `[Obsolete]` errors caused by using a newer Xamarin.AndroidX.DocumentFile package. [0]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.0.0#dependencies-body-tab [1]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.8.0.10#dependencies-body-tab
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. * Add new `$(NetPreviousNetCoreApple)` MSBuild property to `Directory.Build.props`, which contains target frameworks for $(NetPrevios) Apple platforms. Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh` to provide a "complete" target framework version. This is so that target frameworks are consistent: `net9.0-ios` *floats*; circa a year ago, it aliased `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`. "Even better", this doesn't "flow" to the C# compiler: `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not* `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used! This can make it annoyingly difficult to get `[Obsolete]`s consistent across separate project builds. TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #21205 Context: #21140 Context: unoplatform/uno-private#1422 Context: dotnet/java-interop@356485e While exploring the use of NativeAOT on Android for .NET 10, a sticking point is that running within an Android+NativeAOT environment requires the use of a new "style" of bindings; see dotnet/java-interop@356485ee. The new style requires .NET 10. However, the various Xamarin.AndroidX packages have been updated to provide bindings for *both* .NET 8 *and* .NET 10 previews, which allows apps targeting .NET 10 to begin exploring NativeAOT use. Update the required Xamarin.AndroidX NuGet package versions to versions which provide both .NET 8 and .NET 10 binaries, but *only* for .NET 10 target frameworks. .NET 9 targets continue. using the previous NuGet package versions. Additionally, the Xamarin.AndroidX.Browser NuGet package: [Xamarin.AndroidX.Browser/1.0.0][0] has a dependency on Xamarin.AndroidX.Legacy.Support.Core.UI, which eventully pulls in Xamarin.AndroidX.DocumentFile. [Xamarin.AndroidX.Browser/1.8.0.10][1] *does not*. The Xamarin.AndroidX.Legacy.Support.Core.UI dependency was removed in Xamarin.AndroidX.Browser/1.2.0. Fix a CS0246 error in `StorageFolder.saf.Android.cs` by explicitly adding a reference to Xamarin.AndroidX.DocumentFile. Finally, fix some nullability and `[Obsolete]` errors caused by using a newer Xamarin.AndroidX.DocumentFile package. [0]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.0.0#dependencies-body-tab [1]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.8.0.10#dependencies-body-tab
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. * Add new `$(NetPreviousNetCoreApple)` MSBuild property to `Directory.Build.props`, which contains target frameworks for $(NetPrevios) Apple platforms. Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh` to provide a "complete" target framework version. This is so that target frameworks are consistent: `net9.0-ios` *floats*; circa a year ago, it aliased `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`. "Even better", this doesn't "flow" to the C# compiler: `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not* `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used! This can make it annoyingly difficult to get `[Obsolete]`s consistent across separate project builds. TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #21205 Context: #21140 Context: unoplatform/uno-private#1422 Context: dotnet/java-interop@356485e While exploring the use of NativeAOT on Android for .NET 10, a sticking point is that running within an Android+NativeAOT environment requires the use of a new "style" of bindings; see dotnet/java-interop@356485ee. The new style requires .NET 10. However, the various Xamarin.AndroidX packages have been updated to provide bindings for *both* .NET 8 *and* .NET 10 previews, which allows apps targeting .NET 10 to begin exploring NativeAOT use. Update the required Xamarin.AndroidX NuGet package versions to versions which provide both .NET 8 and .NET 10 binaries, but *only* for .NET 10 target frameworks. .NET 9 targets continue. using the previous NuGet package versions. Additionally, the Xamarin.AndroidX.Browser NuGet package: [Xamarin.AndroidX.Browser/1.0.0][0] has a dependency on Xamarin.AndroidX.Legacy.Support.Core.UI, which eventully pulls in Xamarin.AndroidX.DocumentFile. [Xamarin.AndroidX.Browser/1.8.0.10][1] *does not*. The Xamarin.AndroidX.Legacy.Support.Core.UI dependency was removed in Xamarin.AndroidX.Browser/1.2.0. Fix a CS0246 error in `StorageFolder.saf.Android.cs` by explicitly adding a reference to Xamarin.AndroidX.DocumentFile. Finally, fix some nullability and `[Obsolete]` errors caused by using a newer Xamarin.AndroidX.DocumentFile package. [0]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.0.0#dependencies-body-tab [1]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.8.0.10#dependencies-body-tab
Context: #19934 Context: #21140 Context: dotnet/sdk#48949 #19934 was the first attempt to build unoplatform/uno with .NET 10. It *built* (mostly), but it had *lots* of unit test failures (over 3700) that were not understood at the time. #21140 was an attempt to cleanup & simplify #19934. It partially succeeded, but required additional reconsideration for a cleaner and more understandable merge. (Later, PR #21183 helped explain many of the unit test failures that PR #19934 observed: Xamarin.UITest doesn't work reliably under .NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!) Some of the contents of #19934 and #21140 have been split out into separately merged PRs such as #21230 (CS0246 fixes) and #21199 (remove `[Export]` in some scenarios). Squash existing "known good" and related changes: * doc updates * Bumping target framework versions, * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7. * `$(TreatWarningsAsErrors)`=true + NuGet warnings. For example: error NU1510: Warning As Error: PackageReference System.Private.Uri will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due to nullability changes, particularly in iOS. * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which @jonpryor was able to fix in a reasonable timeframe, and some of which was thrown into `$(NoWarn)` to deal with later. * Remove hardcoded `$(TargetFramework)`=net8.0 from `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds, and remove other uses of `net8.0` from everywhere other than `src/SolutionTemplate`. * Provide `%(PackageReference.Version)` for packages that were producing NU1015 errors, specifically `Uno.Fonts.OpenSans`. * Remove `@(PackageReference)` values which produced NU1510 warnings such as: warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary. * Improve `dotnet-install.yml` use, as some CI environments *don't* have a `unoplatform/uno` checkout, and thus *cannot* copy files such as `build/ci/net10/global.json`. * Improve `local-android-uitest-run.sh` for local macOS use: Export and use `$ANDROID_AVD_HOME`, so that we have a "known" location for whare Emulator images are created. (Not sure what's wrong with my environment, but they are not reliably created or loaded from `$HOME/.android/avd`.) Also update so that it doesn't require running the script from the `build/test-scripts` directory. You can now run it from topdir: UITEST_IS_LOCAL=true \ build/test-scripts/local-android-uitest-run.sh * Provision OpenJDK-17, as .NET 9 requires it. * Use Xcode 16.4, as .NET 10 iOS now requires it. * Add new `$(NetPreviousNetCoreApple)` MSBuild property to `Directory.Build.props`, which contains target frameworks for $(NetPrevios) Apple platforms. Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh` to provide a "complete" target framework version. This is so that target frameworks are consistent: `net9.0-ios` *floats*; circa a year ago, it aliased `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`. "Even better", this doesn't "flow" to the C# compiler: `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not* `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used! This can make it annoyingly difficult to get `[Obsolete]`s consistent across separate project builds. TODO, for future commits to this PR: * Xamarin.AndroidX package version bumps from #21205. We felt that these shouldn't be separately merged, as some of version bumps are quite significant and should instead only be used with .NET 10. * A new understanding of `src/SolutionTemplate`: the intent, as @jonpryor currently understands it, is that tests within `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)` should *not* be updated, etc. Which means that when we drop support for an older version of .NET, we should in turn *remove the old tests*.
Context: #21205 Context: #21140 Context: unoplatform/uno-private#1422 Context: dotnet/java-interop@356485e While exploring the use of NativeAOT on Android for .NET 10, a sticking point is that running within an Android+NativeAOT environment requires the use of a new "style" of bindings; see dotnet/java-interop@356485ee. The new style requires .NET 10. However, the various Xamarin.AndroidX packages have been updated to provide bindings for *both* .NET 8 *and* .NET 10 previews, which allows apps targeting .NET 10 to begin exploring NativeAOT use. Update the required Xamarin.AndroidX NuGet package versions to versions which provide both .NET 8 and .NET 10 binaries, but *only* for .NET 10 target frameworks. .NET 9 targets continue. using the previous NuGet package versions. Additionally, the Xamarin.AndroidX.Browser NuGet package: [Xamarin.AndroidX.Browser/1.0.0][0] has a dependency on Xamarin.AndroidX.Legacy.Support.Core.UI, which eventully pulls in Xamarin.AndroidX.DocumentFile. [Xamarin.AndroidX.Browser/1.8.0.10][1] *does not*. The Xamarin.AndroidX.Legacy.Support.Core.UI dependency was removed in Xamarin.AndroidX.Browser/1.2.0. Fix a CS0246 error in `StorageFolder.saf.Android.cs` by explicitly adding a reference to Xamarin.AndroidX.DocumentFile. Finally, fix some nullability and `[Obsolete]` errors caused by using a newer Xamarin.AndroidX.DocumentFile package. [0]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.0.0#dependencies-body-tab [1]: https://www.nuget.org/packages/Xamarin.AndroidX.Browser/1.8.0.10#dependencies-body-tab
|
This PR is stale because it has been open 60 days with no activity. Remove stale label or comment or it will be closed in 10 days. |
|
This PR was closed because it has been stalled for 10 days with no activity. |
Context: #21140
Context: https://github.com/unoplatform/uno-private/issues/1422
Context: dotnet/java-interop@356485e
While exploring the use of NativeAOT on Android for .NET 10, a sticking point is that running within an Android+NativeAOT environment requires the use of a new "style" of bindings; see dotnet/java-interop@356485ee.
The new style requires .NET 10.
However, the various Xamarin.AndroidX packages have been updated to provide bindings for both .NET 8 and .NET 10 previews, which allows apps targeting .NET 10 to begin exploring NativeAOT use.
Update the required Xamarin.AndroidX NuGet package versions to versions which provide both .NET 8 and .NET 10 binaries.
GitHub Issue: closes #
PR Type:
What is the current behavior? 🤔
What is the new behavior? 🚀
PR Checklist ✅
Please check if your PR fulfills the following requirements:
Screenshots Compare Test Runresults.Other information ℹ️