Skip to content

Commit 0ebc8eb

Browse files
authored
.NET MAUI 8 (#1880)
* Support versioning. * Fix moniker. * Add StartPath property. * TryDispatchAsync on BlazorWebView * Diagnosing BlazorWebView issues (#1747) * Enable logging in Blazor Hybrid apps. * What's new in .NET 8. * Fix linting errors. * Add heading. * Add xref. * New PointerGestureRecognizer commands and events (#1749) * New PointerGestureRecognizer commands and events. * What's new edit. * Flashlight.IsSupportedAsync method (#1756) * Add IsSupportedAsync method. * Edits. * BlazorWebView tweaks. * Three AutomationProperties deprecated. (#1757) * Add deprecations. * App.Properties removal (#1758) * App.Properties removal. * Fix link. * Edit. * Unify SensorSpeed intervals (#1775) * Unify intervals. * Edit. * PhoneDialer.Current removed. * OpenGLView removed. * SolidColorBrush.Content is the ContentProperty of the class (#1776) * SolidColorBrush.Content is the ContentProperty of the class. * Fix linter error. * ClickGestureRecognizer obsoleted. (#1777) * GetPosition of drag/drop gesture (#1778) * GetPosition of drag/drop gesture. * Add GetPosition to whatsnew. * Fix xrefs. * Add UserAgent property (#1779) * Set media playback prefs in a WebView on iOS (#1780) * Set media playback prefs. * Remove hard tabs. * Rearrange content. * Edit. * Edit. * Edit. * Edit. * Edit. * VisualElement.FocusChangeRequested event deprecated (#1781) * VisualElement.FocusChangeRequested event deprecated. * Edit. * AppThemeBinding supports DynamicResource values (#1783) * AppThemeBinding supports DynamicResource values * Edit. * Grid gains new Add methods. (#1784) * iOS lifecycle PerformFetch delegate (#1785) * PerformFetch delegate. * Edit. * Secondary tap on Android (#1787) * Android support for secondary tap. * Edit. * Common properties moved to InputView (#1789) * Properties moved to InputView. * Edits. * Edit. * PointerEventArgs platform args (#1790) * Added PlatformPointerEventArgs * Edit. * Drag/drop event args gain platform args (#1791) * Platform args for drag and drop gestures. * Edits. * Edits. * Add tabs. * Edit. * Use tabs for platform args. * Added code examples. * Edit. * Control resource generation (#1797) * Control resource generation * Fix metadata block. * Link to content in troubleshooting doc. * Edits. * Edit. * Duplicate image file errors (#1799) * Duplicate image file errors * Edit. * Edit. * Edit. * Soft input keyboard extensions (#1800) * Soft input keyboard extensions. * Edit. * Use the .NET xmlns schema for Maps types (#1801) * ClassModifier XAML attribute. * XAML class modifiers (#1804) * XAML class modifiers. * Fix moniker range. * WiFi permission on Android 13 (#1806) * Update table for .NET 7 * Edit. * Edit. * Bluetooth permission on Android. (#1807) * Caching disabled for Android streams (#1808) * Caching disabled for Android streams. * Edit. * Edit. * Edits. * Keyboard auto scroll manager on iOS (#1813) * Keyboard scrolling auto manager. * Fix include links. * Consume Android system fonts (#1814) * Consume Android system fonts. * Add note about entitlement on .NET 8. * Close code block. * Edits. * Edit. * Single use query parameters for GoToAsync (#1815) * Single use query parameters. * Edit. * Edits. * Inspect a WebView on MacCat * Shell tab color appearance (#1818) * Shell tab color appearance. * Fix link. * Decouple window management from the App class (#1819) * Decouple window management from the App class * Edit. * Add headings. * Edit. * Use TApp in UseMauiEmbedding method call. (#1820) * Keyboard accelerators (#1821) * Keyboard accelerators draft. * Edits. * Table edit. * Edits. * Edits. * Shipping info. (#1826) * ApplicationIdGuid build property not required. (#1829) * Geolocation foreground listening (#1832) * Geolocation foreground listening. * Edits. * HideSoftInputOnTapped property (#1833) * HideSoftInputOnTapped property. * Edit. * Use a factory method to avoid reflection. * Edits. * Limitation is .NET 7 only (#1834) * Limitation is .NET 7 only. * Fix linting error. * PlatformImage.FromStream can be used on Windows (#1837) * Use PlatformImage on Windows * PlatformImage can be used on WIndows. * Performance (#1844) * Classify new features. (#1846) * Upgrade from 7 to 8 (#1855) * Upgrade from 7 to 8 * Fix link. * Android animations respect power saving. * Revert "Android animations respect power saving." This reverts commit 5f3998c. * Android animations respect power saving (#1856) * Android animations respect power saving. * Fix include file link. * Edit. * Heading edit. * Put moniker in include file. * Remove section. (#1857) * High speed sampling rates for Android sensors (#1861) * High speed sampling rate sensor permission. * Edit. * Edits. * Publish unpackaged apps (#1864) * Initial content * Publishing selectors per platform. * Edits. * Edits. * Unpackaged apps on Windows. * VSMac EOL (#1865) * VSMac EOL. * Edits. * .NET 7 to .NET 8 (#1867) * .NET 7 to .NET 8. * .NET 7 to 8 * net7 to net8 * Build your first app in .NET 8 (#1868) * .NET 8 images. * Try .NET 7/8 split. * iOS images. * Fix image link * Windows images. * Android images. * Rename image. * Resize image. * VSMac Android images. * More images. * Edits. * Edits. * .NET 8 installation (#1871) * .NET 7 to 8 * VSMac edits. * Edit. * Edit. * iOS release notes * dotnet publish in .NET 8 (#1877) * dotnet publish in .NET 8 * Edit. * Edit. * Default RuntimeIdentifier on iOS (#1878) * Default RuntimeIdentifier on iOS * Edit. * Edit. * Troubleshoot a remote build. (#1879) * Troubleshoot a remote build. * Edits. * Release note links.
1 parent f9fa182 commit 0ebc8eb

File tree

156 files changed

+2784
-314
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

156 files changed

+2784
-314
lines changed

.openpublishing.publish.config.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"locale": "en-us",
88
"monikers": [],
99
"moniker_ranges": [
10+
">=net-maui-7.0"
1011
],
1112
"open_to_public_contributors": true,
1213
"xref_query_tags": [

docs/TOC.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@
115115
href: xaml/fundamentals/mvvm.md
116116
- name: Compilation
117117
href: xaml/xamlc.md
118+
- name: Class modifiers
119+
href: xaml/class-modifiers.md
118120
- name: Field modifiers
119121
href: xaml/field-modifiers.md
120122
- name: Generics
@@ -471,6 +473,8 @@
471473
href: user-interface/menu-bar.md
472474
- name: Display menu items
473475
href: user-interface/menuitem.md
476+
- name: Keyboard accelerators
477+
href: user-interface/keyboard-accelerators.md
474478
- name: Shadows
475479
href: user-interface/shadow.md
476480
- name: Styles
@@ -784,8 +788,10 @@
784788
items:
785789
- name: Overview
786790
href: windows/deployment/overview.md
787-
- name: Publish with the .NET CLI
791+
- name: Publish a packaged app with the .NET CLI
788792
href: windows/deployment/publish-cli.md
793+
- name: Publish an unpackaged app with the .NET CLI
794+
href: windows/deployment/publish-unpackaged-cli.md
789795
- name: Publish with Visual Studio to a folder
790796
href: windows/deployment/publish-visual-studio-folder.md
791797
- name: Troubleshooting

docs/android/deployment/index.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ ms.date: 04/05/2023
88

99
> [!div class="op_single_selector"]
1010
>
11-
> - [Publish for Android](index.md)
12-
> - [Publish for iOS](../../ios/deployment/index.md)
13-
> - [Publish for macOS](../../mac-catalyst/deployment/index.md)
14-
> - [Publish for Windows](../../windows/deployment/overview.md)
11+
> - [Publish for Google Play distribution](publish-google-play.md)
12+
> - [Publish for ad-hoc distribution](publish-ad-hoc.md)
13+
> - [Publish using the command line](publish-cli.md)
1514
1615
The final step in the development of a .NET Multi-platform App UI (.NET MAUI) app is to publish it. Publishing is the process of creating a package that contains the app and is ready for users to install on their devices. Publishing involve two essential tasks:
1716

docs/android/deployment/publish-ad-hoc.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ ms.date: 05/15/2023
66

77
# Publish an Android app for ad-hoc distribution
88

9+
> [!div class="op_single_selector"]
10+
>
11+
> - [Publish for Google Play distribution](publish-google-play.md)
12+
> - [Publish using the command line](publish-cli.md)
13+
914
When distributing Android apps outside Google Play, and other marketplaces, *ad-hoc* distribution enables you to make the app available for download on a website or server. Android requires that apps created for ad-hoc distribution use the Android Package (APK) format.
1015

1116
To distribute a .NET Multi-platform App UI (.NET MAUI) Android app, you'll need to sign it with a key from your keystore. Keystores are binary files that serve as repositories of certificates and private keys.

docs/android/deployment/publish-cli.md

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ ms.date: 05/16/2023
66

77
# Publish an Android app using the command line
88

9+
> [!div class="op_single_selector"]
10+
>
11+
> - [Publish for Google Play distribution](publish-google-play.md)
12+
> - [Publish for ad-hoc distribution](publish-ad-hoc.md)
13+
914
To distribute a .NET Multi-platform App UI (.NET MAUI) Android app, you'll need to sign it with a key from your keystore. A *keystore* is a database of security certificates that's created by using `keytool` from the Java Development Kit (JDK). A keystore is required when publishing a .NET MAUI Android app, as Android won't run apps that haven't been signed.
1015

1116
## Create a keystore file
@@ -59,7 +64,7 @@ To build your app from the command line, and sign it using your keystore, open a
5964

6065
| Parameter | Value |
6166
|------------------------------|-------------------------------------------------------------------------------------------------|
62-
| `-f` or `--framework` | The target framework, which is `net7.0-android`. |
67+
| `-f` or `--framework` | The target framework, which is `net8.0-android`. |
6368
| `-c` or `--configuration` | The build configuration, which is `Release`. |
6469

6570
> [!WARNING]
@@ -91,19 +96,21 @@ For a full list of build properties, see [Build properties](/xamarin/android/dep
9196
Run the `dotnet publish` command with the following parameters to build and sign your app:
9297

9398
```console
94-
dotnet publish -f net7.0-android -c Release -p:AndroidKeyStore=true -p:AndroidSigningKeyStore={filename}.keystore -p:AndroidSigningKeyAlias={keyname} -p:AndroidSigningKeyPass={password} -p:AndroidSigningStorePass={password}
99+
dotnet publish -f net8.0-android -c Release -p:AndroidKeyStore=true -p:AndroidSigningKeyStore={filename}.keystore -p:AndroidSigningKeyAlias={keyname} -p:AndroidSigningKeyPass={password} -p:AndroidSigningStorePass={password}
95100
```
96101

102+
[!INCLUDE [dotnet publish in .NET 8](~/includes/dotnet-publish-net8.md)]
103+
97104
For example, use the following command to build and sign your app using the previously created keystore:
98105

99106
```console
100-
dotnet publish -f net7.0-android -c Release -p:AndroidKeyStore=true -p:AndroidSigningKeyStore=myapp.keystore -p:AndroidSigningKeyAlias=myapp -p:AndroidSigningKeyPass=mypassword -p:AndroidSigningStorePass=mypassword
107+
dotnet publish -f net8.0-android -c Release -p:AndroidKeyStore=true -p:AndroidSigningKeyStore=myapp.keystore -p:AndroidSigningKeyAlias=myapp -p:AndroidSigningKeyPass=mypassword -p:AndroidSigningStorePass=mypassword
101108
```
102109

103110
Both the `AndroidSigningKeyPass` and `AndroidSigningStorePass` properties support `env:` and `file:` prefixes that can be used to specify an environment variable or file that contains the password. Specifying the password in this way prevents it from appearing in build logs. For example, to use an environment variable named `AndroidSigningPassword`:
104111

105112
```console
106-
dotnet publish -f net7.0-android -c Release -p:AndroidKeyStore=true -p:AndroidSigningKeyStore=myapp.keystore -p:AndroidSigningKeyAlias=myapp -p:AndroidSigningKeyPass=env:AndroidSigningPassword -p:AndroidSigningStorePass=env:AndroidSigningPassword
113+
dotnet publish -f net8.0-android -c Release -p:AndroidKeyStore=true -p:AndroidSigningKeyStore=myapp.keystore -p:AndroidSigningKeyAlias=myapp -p:AndroidSigningKeyPass=env:AndroidSigningPassword -p:AndroidSigningStorePass=env:AndroidSigningPassword
107114
```
108115

109116
> [!IMPORTANT]
@@ -112,10 +119,10 @@ dotnet publish -f net7.0-android -c Release -p:AndroidKeyStore=true -p:AndroidSi
112119
To use a file located at *C:\Users\user1\AndroidSigningPassword.txt*:
113120

114121
```console
115-
dotnet publish -f net7.0-android -c Release -p:AndroidKeyStore=true -p:AndroidSigningKeyStore=myapp.keystore -p:AndroidSigningKeyAlias=myapp -p:AndroidSigningKeyPass=file:C:\Users\user1\AndroidSigningPassword.txt -p:AndroidSigningStorePass=file:C:\Users\user1\AndroidSigningPassword.txt
122+
dotnet publish -f net8.0-android -c Release -p:AndroidKeyStore=true -p:AndroidSigningKeyStore=myapp.keystore -p:AndroidSigningKeyAlias=myapp -p:AndroidSigningKeyPass=file:C:\Users\user1\AndroidSigningPassword.txt -p:AndroidSigningStorePass=file:C:\Users\user1\AndroidSigningPassword.txt
116123
```
117124

118-
Publishing builds and signs the app, and then copies the AAB and APK files to the *bin\\Release\\net7.0-android\\publish* folder. There are two AAB files - one unsigned and another signed. The signed variant has **-signed** in the file name.
125+
Publishing builds and signs the app, and then copies the AAB and APK files to the *bin\\Release\\net8.0-android\\publish* folder. There are two AAB files - one unsigned and another signed. The signed variant has **-signed** in the file name.
119126

120127
For more information about the `dotnet publish` command, see [dotnet publish](/dotnet/core/tools/dotnet-publish).
121128

docs/android/deployment/publish-google-play.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ ms.date: 05/15/2023
66

77
# Publish an Android app for Google Play distribution
88

9+
> [!div class="op_single_selector"]
10+
>
11+
> - [Publish for ad-hoc distribution](publish-ad-hoc.md)
12+
> - [Publish using the command line](publish-cli.md)
13+
914
The most common approach to distributing Android apps to users is through the Google Play. The first time an app is submitted to Google Play it must be submitted through the Google Play Console. Subsequent versions of the app can be submitted through Visual Studio. In both cases, a Google Play Developer account is required. Apps submitted to Google Play require approval from Google.
1015

1116
To distribute a .NET Multi-platform App UI (.NET MAUI) Android app, you'll need to sign it with a key from your keystore, prior to upload to Google Play. Keystores are binary files that serve as repositories of certificates and private keys.

docs/android/linking.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ Linker behavior can be configured for each build configuration of your app. By d
3030
# [Visual Studio for Mac](#tab/vsmac)
3131
<!-- markdownlint-enable MD025 -->
3232

33+
[!INCLUDE [Visual Studio for Mac end of life](~/includes/vsmac-eol.md)]
34+
3335
1. In the **Solution Window**, right-click on your .NET MAUI app project and select **Properties**.
3436
1. In the **Project Properties** window, select the **Build > Android > Linker** tab.
3537
1. In the **Project Properties** window, ensure the **Configuration** drop-down is set to **Release** and set the **Linker Behavior** drop-down to your desired linker behavior:

docs/android/manifest.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ms.date: 03/07/2023
88

99
Every .NET Multi-platform App UI (.NET MAUI) app on Android has an *AndroidManifest.xml* file, located in the *Platforms\\Android* folder, that describes essential information about your app to build tools, the Android operating system, and Google Play.
1010

11-
The manifest file for your .NET MAUI Android app is generated as part of the .NET MAUI build process on Android. This build process takes the XML in the *Platforms\\Android\\AndroidManifest.xml* file, and merges it with any XML that's generated from specific attributes on your classes. The resulting manifest file can be found in the *obj* folder. For example, it can be found at *obj\\Debug\\net7.0-android\\AndroidManifest.xml* for debug builds on .NET 7.
11+
The manifest file for your .NET MAUI Android app is generated as part of the .NET MAUI build process on Android. This build process takes the XML in the *Platforms\\Android\\AndroidManifest.xml* file, and merges it with any XML that's generated from specific attributes on your classes. The resulting manifest file can be found in the *obj* folder. For example, it can be found at *obj\\Debug\\net8.0-android\\AndroidManifest.xml* for debug builds on .NET 8.
1212

1313
<!-- TODO: Uncomment when VS 17.6 P2 is released
1414
> [!NOTE]
@@ -181,7 +181,7 @@ public class MainApplication : MauiApplication
181181

182182
```
183183

184-
This declaration causes the following XML fragment to be generated in *obj\\Debug\\net7.0-android\\AndroidManifest.xml*:
184+
This declaration causes the following XML fragment to be generated in *obj\\Debug\\net8.0-android\\AndroidManifest.xml*:
185185

186186
```xml
187187
<application android:label="MyMauiApp" android:theme="@style/Maui.SplashTheme" android:debuggable="true" ...>

docs/deployment/visual-studio-properties.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ The **Application** section describes some settings related to which platforms y
2828
| Setting | Default value | Description |
2929
| - | - | - |
3030
| Target the iOS platform | Checked | Specifies that this project will target the iOS platform. |
31-
| Target iOS Framework | `net7.0-ios` | The [Target Framework Moniker][tfm] used to target iOS.
31+
| Target iOS Framework | `net8.0-ios` | The [Target Framework Moniker][tfm] used to target iOS.
3232
| Minimum Target iOS Framework | `14.2` | The minimum version of iOS your app targets.
3333

3434
- **Android Targets**
@@ -38,7 +38,7 @@ The **Application** section describes some settings related to which platforms y
3838
| Setting | Default value | Description |
3939
| - | - | - |
4040
| Target the Android platform | Checked | When checked, the .NET MAUI project will target and build an Android version of your app. Uncheck to disable the Android target. |
41-
| Target Android Framework | `net7.0-android` | The [Target Framework Moniker][tfm] used to target Android.
41+
| Target Android Framework | `net8.0-android` | The [Target Framework Moniker][tfm] used to target Android.
4242
| Minimum Target Android Framework | `21.0` | The minimum version of Android your app targets.
4343

4444
- **Windows Targets**
@@ -48,7 +48,7 @@ The **Application** section describes some settings related to which platforms y
4848
| Setting | Default value | Description |
4949
| - | - | - |
5050
| Target the Windows platform | Checked | When checked, the .NET MAUI project will target and build a Windows version of your app. Uncheck to disable the Windows target. |
51-
| Target Windows Framework | `net7.0-windows10.0.19041.0` | The [Target Framework Moniker][tfm] used to target Windows.
51+
| Target Windows Framework | `net8.0-windows10.0.19041.0` | The [Target Framework Moniker][tfm] used to target Windows.
5252
| Minimum Target Windows Framework | `10.0.17763.0` | The minimum version of Windows your app targets.
5353

5454
## Build

docs/docfx.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@
7777
"markdownEngineName": "markdig",
7878
"groups": {
7979
"net": {
80-
"dest": "net-dest"
80+
"dest": "net-dest",
81+
"moniker_range": ">=net-maui-7.0"
8182
}
8283
}
8384
}

0 commit comments

Comments
 (0)