Tags: dotnet/maui
Tags
Backport simulator runtime provisioning fix (#35773) <!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ## Summary - Backports only the simulator runtime provisioning fix from PR #35364 commit 7b16d25. - Avoids deleting all simulator runtimes if the first install attempt fails. - Tries the exact universal, default universal, and default iOS simulator runtimes, with pre/post simulator diagnostics. ## Validation - `git diff --cached --check` - `ruby -e 'require "yaml"; YAML.load_file(ARGV.fetch(0)); puts "ruby yaml parse: ok"' eng/pipelines/common/provision.yml` Co-authored-by: bot <bot@test> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
[release/10.0.1xx-sr7] Fix BackButtonBehavior_IconOverride_CustomIcon… …ShownOnBackButton on iOS 26 (#35566) <!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Issue UI test `BackButtonBehavior_IconOverride_CustomIconShownOnBackButton` fails on iOS 26 (vlatest) on the `release/10.0.1xx-sr7` branch. - Build: [1427432](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1427432) (`maui-pr-uitests` on SR7 head `bdca474345`) - Failed twice (both attempts) — deterministic, not flaky - Failure: `System.TimeoutException : Timed out waiting for element...` at `ShellNavigationFeatureTests.cs:line 922` - Other platforms (Android API 30, iOS 18.5, MacCatalyst) all pass ### Root cause PR #35521 backported the `_sendPopPending` product fix from #34890 to SR7 and **removed** the `Assert.Ignore` from tests 50 and 51 (since the product is now fixed and those tests should pass on iOS 26). It left in place an obsolete iOS 26 workaround in test 52: ```csharp [Test, Order(52)] public void BackButtonBehavior_IconOverride_CustomIconShownOnBackButton() { if (iOS26OrHigher) { NavigateToDetail1AndWait(); // ← obsolete after #35521 } App.WaitForElement("Detail1GoBackButton"); ... ``` That workaround was originally needed when test 51 was being skipped on iOS 26 (so test 52 started from Main and had to navigate to Detail1 itself). Now that #35521 un-ignored test 51, the flow on iOS 26 is: 1. Test 51 runs, calls `NavigateToDetail1AndWait()` and ends with `ShellScreenshot()` — UI is on **Detail1**, no reset 2. Test 52 starts on Detail1, hits `if (iOS26OrHigher)` and tries to navigate **Main → Detail1** 3. But we're already on Detail1, so `NavigateToDetail1Button` isn't visible → `TimeoutException` This is purely a test state-leak bug — not a product regression. ### Fix Remove the now-redundant `iOS26OrHigher` block from test 52. After the removal, test 52 starts by tapping `Detail1GoBackButton` directly, which is correct because: - Test 51 leaves the UI on Detail1 - `Detail1GoBackButton` is a custom page-content button (created via `ShellNavHelper.CreateNavButton(..., "Detail1GoBackButton")` in `ShellNavigationControlPage.xaml.cs`), **not** the shell back arrow — it is unaffected by test 51's `IsVisibleButton` toggle (which sets `BackButtonBehavior.IsVisible=false` on the shell back arrow) ### Diff ```diff [Test, Order(52)] public void BackButtonBehavior_IconOverride_CustomIconShownOnBackButton() { - if (iOS26OrHigher) - { - NavigateToDetail1AndWait(); - } App.WaitForElement("Detail1GoBackButton"); App.Tap("Detail1GoBackButton"); ... ``` ### Follow-up (main) `main` and `net11.0` have the **opposite** asymmetry: the product fix (`_sendPopPending` reset) is already there, but tests 50 and 51 still carry the `Assert.Ignore` (so iOS 26 coverage for those scenarios is silently skipped). When those `Assert.Ignore` lines get removed, the same workaround should also be removed from test 52 — otherwise main will hit the same failure this PR fixes here. ### Validation - Tested locally: only the obsolete branch is removed; remaining test body matches the iOS 18.5 / Android / MacCatalyst flow that already passes - The 4 deleted lines were dead code on every other platform anyway (`iOS26OrHigher` is false there) - No product code touched Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
[release/11.0.1xx-preview4] Update dependencies from dotnet/dotnet, d… …otnet/macios (#35271) This pull request updates the following dependencies [marker]: <> (Begin:5ff6fff7-e896-44f6-b87f-673c4569f4a5) ## From https://github.com/dotnet/macios - **Subscription**: [5ff6fff7-e896-44f6-b87f-673c4569f4a5](https://maestro.dot.net/subscriptions?search=5ff6fff7-e896-44f6-b87f-673c4569f4a5) - **Build**: [20260501.3](https://dev.azure.com/devdiv/DevDiv/_build/results?buildId=13990367) ([312733](https://maestro.dot.net/channel/9588/github:dotnet:macios/build/312733)) - **Date Produced**: May 1, 2026 8:08:10 AM UTC - **Commit**: [cbe42632ab063a8b23df492692f92beeeda68a16](dotnet/macios@cbe4263) - **Branch**: [release/11.0.1xx-preview4](https://github.com/dotnet/macios/tree/release/11.0.1xx-preview4) [DependencyUpdate]: <> (Begin) - **Dependency Updates**: - From [26.4.11511-net11-p4 to 26.4.11514-net11-p4][3] - Microsoft.iOS.Sdk.net11.0_26.4 - Microsoft.MacCatalyst.Sdk.net11.0_26.4 - Microsoft.macOS.Sdk.net11.0_26.4 - Microsoft.tvOS.Sdk.net11.0_26.4 [3]: dotnet/macios@16dad20...cbe4263 [DependencyUpdate]: <> (End) [marker]: <> (End:5ff6fff7-e896-44f6-b87f-673c4569f4a5) [marker]: <> (Begin:74f9a062-0c3c-4244-97f5-1bdef5ec5486) ## From https://github.com/dotnet/dotnet - **Subscription**: [74f9a062-0c3c-4244-97f5-1bdef5ec5486](https://maestro.dot.net/subscriptions?search=74f9a062-0c3c-4244-97f5-1bdef5ec5486) - **Build**: [20260430.15](https://dev.azure.com/dnceng/internal/_build/results?buildId=2964538) ([312694](https://maestro.dot.net/channel/9588/github:dotnet:dotnet/build/312694)) - **Date Produced**: May 1, 2026 3:25:05 AM UTC - **Commit**: [4370ea16341331f045fa9b89cc46e03aed27195c](dotnet/dotnet@4370ea1) - **Branch**: [release/11.0.1xx-preview4](https://github.com/dotnet/dotnet/tree/release/11.0.1xx-preview4) [DependencyUpdate]: <> (Begin) - **Dependency Updates**: - From [11.0.0-preview.4.26224.122 to 11.0.0-preview.4.26230.115][2] - Microsoft.AspNetCore.Authentication.Facebook - Microsoft.AspNetCore.Authentication.Google - Microsoft.AspNetCore.Authentication.MicrosoftAccount - Microsoft.AspNetCore.Authorization - Microsoft.AspNetCore.Components - Microsoft.AspNetCore.Components.Analyzers - Microsoft.AspNetCore.Components.Forms - Microsoft.AspNetCore.Components.Web - Microsoft.AspNetCore.Components.WebAssembly - Microsoft.AspNetCore.Components.WebAssembly.Server - Microsoft.AspNetCore.Components.WebView - Microsoft.AspNetCore.Metadata - Microsoft.Extensions.Configuration - Microsoft.Extensions.Configuration.Abstractions - Microsoft.Extensions.Configuration.Json - Microsoft.Extensions.DependencyInjection - Microsoft.Extensions.DependencyInjection.Abstractions - Microsoft.Extensions.FileProviders.Abstractions - Microsoft.Extensions.Hosting.Abstractions - Microsoft.Extensions.Logging - Microsoft.Extensions.Logging.Abstractions - Microsoft.Extensions.Logging.Console - Microsoft.Extensions.Logging.Debug - Microsoft.Extensions.Primitives - Microsoft.JSInterop - Microsoft.NETCore.App.Ref - From [11.0.0-beta.26224.122 to 11.0.0-beta.26230.115][2] - Microsoft.DotNet.Arcade.Sdk - Microsoft.DotNet.Build.Tasks.Feed - Microsoft.DotNet.Build.Tasks.Installers - Microsoft.DotNet.Build.Tasks.Workloads - Microsoft.DotNet.Helix.Sdk - Microsoft.DotNet.RemoteExecutor - Microsoft.DotNet.SharedFramework.Sdk - Microsoft.DotNet.XUnitExtensions - From [11.0.100-preview.4.26224.122 to 11.0.100-preview.4.26230.115][2] - Microsoft.NET.Sdk [2]: dotnet/dotnet@48bd87d...4370ea1 [DependencyUpdate]: <> (End) [marker]: <> (End:74f9a062-0c3c-4244-97f5-1bdef5ec5486) [marker]: <> (Begin:Coherency Updates) ## Coherency Updates The following updates ensure that dependencies with a *CoherentParentDependency* attribute were produced in a build used as input to the parent dependency's build. See [Dependency Description Format](https://github.com/dotnet/arcade/blob/master/Documentation/DependencyDescriptionFormat.md#dependency-description-overview) [DependencyUpdate]: <> (Begin) - **Coherency Updates**: - **Microsoft.MacCatalyst.Sdk.net10.0_26.4**: from 26.4.10255 to 26.4.10259 (parent: Microsoft.MacCatalyst.Sdk.net11.0_26.4) - **Microsoft.macOS.Sdk.net10.0_26.4**: from 26.4.10255 to 26.4.10259 (parent: Microsoft.macOS.Sdk.net11.0_26.4) - **Microsoft.iOS.Sdk.net10.0_26.4**: from 26.4.10255 to 26.4.10259 (parent: Microsoft.iOS.Sdk.net11.0_26.4) - **Microsoft.tvOS.Sdk.net10.0_26.4**: from 26.4.10255 to 26.4.10259 (parent: Microsoft.tvOS.Sdk.net11.0_26.4) [DependencyUpdate]: <> (End) [marker]: <> (End:Coherency Updates) --------- Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> Co-authored-by: GitHub Actions <github-actions@xamarin.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use Azure Artifacts Maven feed for CFSClean network isolation complia… …nce (#35089) <!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ## Problem The official build pipeline (`dotnet-maui`, def 1095) fails because [CFSClean network isolation](#34540) blocks direct access to `repo.maven.apache.org`. This breaks two separate Gradle invocations: 1. **`src/Core/AndroidNative` build** — our own Gradle project 2. **`Microsoft.Android.Sdk.Bindings.Gradle.targets`** — Android SDK binding generator in `Core.csproj` Per [1ES CFS guidance](https://aka.ms/1es/netiso/CFS), the fix is to route all Maven dependency resolution through an Azure Artifacts feed with upstream sources. ## Fix ### Gradle configuration changes - **`settings.gradle`** — Replace `mavenCentral()`, `google()`, `gradlePluginPortal()` with the `dotnet-public-maven` Azure Artifacts feed. Add the [Azure Artifacts Gradle credential provider](https://pkgs.dev.azure.com/artifacts-public/PublicTools/_packaging/AzureArtifacts/maven/v1) plugin (v1.1.1) for local authentication. - **`build.gradle`** — Point `buildscript.repositories` to the same feed for AGP classpath resolution. - **`eng/init.gradle`** — Global Gradle init script that redirects any remaining Maven Central/Google Maven references (e.g. from `Microsoft.Android.Sdk.Bindings.Gradle.targets`) to the feed. Installed into `GRADLE_USER_HOME` by the pipeline. ### Pipeline changes - **`cache-gradle.yml`** — Copy `init.gradle` into `GRADLE_USER_HOME` **after** cache restore to prevent stale cached copies. Uses `$(GRADLE_USER_HOME)` variable for the destination path. ### Why the ingestion script (`eng/ingest-maven-deps.sh`) is needed The `dotnet-public-maven` feed proxies Maven Central, but new packages require an **authenticated first-time pull** to be saved. The Gradle credential provider plugin has two limitations that prevent `dotnet build` from self-ingesting: 1. **Skips entirely in CI** — when `TF_BUILD=True` (Azure Pipelines), the plugin is a no-op 2. **Doesn't cover all Gradle scopes** — the plugin injects auth into `pluginManagement.repositories` and `project.repositories`, but NOT `buildscript.repositories` or AGP's internal `detachedConfiguration` scopes. This means `dotnet build` locally cannot ingest new packages through the Android SDK binding targets even with correct credentials. We verified this by adding an un-ingested package (`io.coil-kt:coil:2.7.0`) — `dotnet build` fails with 401 despite the credential provider authenticating successfully. **Upstream issue:** [microsoft/artifacts-credprovider#671](microsoft/artifacts-credprovider#671) The script works around these gaps by: 1. Acquiring an auth token via the .NET credential provider (MSAL) 2. Pre-ingesting platform-specific artifacts (aapt2) for all OS variants (macOS/Linux/Windows) 3. Running Gradle with `--refresh-dependencies` to bypass local cache 4. Falling back to `curl` with Bearer token for unreachable scopes **Run `./eng/ingest-maven-deps.sh` after adding or updating any Maven/Gradle dependency.** ### Documentation updates - `settings.gradle` — explains the feed setup and when to run the script - `gradle-wrapper.properties` — warning not to upgrade Gradle past 8.x (`dotnet/android#10738`) - `copilot-instructions.md` — always-on guidance for Gradle 401 failures - `azdo-build-investigator/SKILL.md` — error signatures and DO NOTs for CI investigation - `android.instructions.md` — quick reference for Android developers ## Verified - ✅ Internal official build [2961149](https://dev.azure.com/dnceng/internal/_build/results?buildId=2961149) passed — Pack macOS + Pack Windows both green - ✅ Same pattern used by dotnet/aspnetcore ([PR #64962](dotnet/aspnetcore#64962)) - ✅ Feed is public — no auth needed to read already-ingested packages, external contributors can build without credentials - ✅ Locally verified: `dotnet build` works for already-ingested packages, fails for new ones (confirming script is needed) --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Matt Mitchell (.NET) <mmitche@microsoft.com>
[release/11.0.1xx-preview3] Bump macios SDKs to 26.2.11588-net11-p3 (#… …34853) Bump iOS/MacCatalyst/macOS/tvOS SDK versions from `26.2.11587-net11-p3` to `26.2.11588-net11-p3` to match [workload-versions#766](dotnet/workload-versions#766). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
[backport 10.0.1xx-sr5] Fix MAUIG2045 false positive with x:Reference… … source in DataTemplate (#34525) <!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ## Description Backport of #34501 to `release/10.0.1xx-sr5`. When a binding uses `Source={x:Reference}`, the source generator was incorrectly validating the binding path against `x:DataType` instead of the referenced element, producing a false MAUIG2045 warning. This fix detects explicit binding sources (both `RelativeSource` and `x:Reference`) and skips compilation, falling back to runtime binding. Fixes #34490 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
[release/11.0.1xx-preview2] Use wildcard versions for template depend… …encies in preview builds (#34305) Backport of #34214 to release/11.0.1xx-preview2 /cc @mattleibow Co-authored-by: Matthew Leibowitz <mattleibow@live.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
PreviousNext