Manifeste de l’application Android
Chaque application de .NET Multi-platform App UI (.NET MAUI) sur Android a un fichier AndroidManifest.xml, situé dans le dossier Platforms\Android, qui décrit les informations essentielles sur votre application pour créer des outils, le système d’exploitation Android et Google Play.
Le fichier manifeste de votre application Android .NET MAUI est généré dans le cadre du processus de génération .NET MAUI sur Android. Ce processus de génération prend le code XML dans le fichier Platforms\Android\AndroidManifest.xml et le fusionne avec n’importe quel code XML généré à partir d’attributs spécifiques sur vos classes. Le fichier manifeste résultant se trouve dans le dossier obj. Par exemple, il se trouve dans obj\Debug\net8.0-android\AndroidManifest.xml pour les versions debug sur .NET 8.
Remarque
Visual Studio 17.6+ inclut un éditeur qui simplifie le processus de spécification des détails de l’application, de la version Android cible et des autorisations requises dans un fichier manifeste Android.
Génération du manifeste
Toutes les applications .NET MAUI ont une classe MainActivity
qui dérive de Activity, via la classe MauiAppCompatActivity
, et qui a le ActivityAttribute appliqué à celle-ci. Certaines applications peuvent inclure des classes supplémentaires dérivées de Activity et qui ont ActivityAttribute d’appliqué.
Au moment de la génération, les assemblys sont analysés pour les classes non-abstract
qui dérivent de Activity et qui ont ActivityAttribute d’appliqué. Ces classes et attributs sont utilisés pour générer le manifeste de l’application. Considérons par exemple le code suivant :
using Android.App;
namespace MyMauiApp;
public class MyActivity : Activity
{
}
Cet exemple ne génère rien dans le fichier manifeste. Pour qu’un élément <activity/>
soit généré, vous devez ajouter le ActivityAttribute :
using Android.App;
namespace MyMauiApp;
[Activity]
public class MyActivity : Activity
{
}
Cet exemple entraîne l’ajout du fragment XML suivant au fichier manifeste :
<activity android:name="crc64bdb9c38958c20c7c.MyActivity" />
Remarque
ActivityAttribute n’a aucun effet sur les types abstract
.
Nom de l’activité
Le nom du type d’une activité est basé sur la vérification de redondance cyclique 64 bits du nom qualifié d’assembly du type exporté. Cela permet de fournir le même nom complet qualifié à partir de deux assemblys différents sans recevoir d’erreur d’empaquetage.
Pour remplacer cette valeur par défaut et spécifier explicitement le nom de votre activité, utilisez la propriété Name :
using Android.App;
namespace MyMauiApp;
[Activity (Name="companyname.mymauiapp.activity")]
public class MyActivity : Activity
{
}
Cet exemple produit le fragment XML suivant :
<activity android:name="companyname.mymauiapp.activity" />
Remarque
Vous devez uniquement utiliser la propriété Name
pour des raisons de compatibilité descendante, car un changement de nom peut ralentir la recherche de type au moment de l’exécution.
Un scénario classique pour définir la propriété Name est lorsque vous devez obtenir un nom Java lisible pour votre activité. Cela peut être utile si une autre application Android doit être en mesure d’ouvrir votre application, ou si vous avez un script pour lancer votre application et tester le temps de démarrage.
Lancer à partir du sélecteur d’application
Si votre application Android .NET MAUI contient plusieurs activités et que vous devez spécifier quelle activité doit être lancée à partir du lanceur d’applications, utilisez la propriété MainLauncher :
using Android.App;
namespace MyMauiApp;
[Activity (Label="My Maui App", MainLauncher = true)]
public class MyActivity : Activity
{
}
Cet exemple produit le fragment XML suivant :
<activity android:label="My Maui App"
android:name="crc64bdb9c38958c20c7c.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Autorisations
Lorsque vous ajoutez des autorisations à une application Android, elles sont enregistrées dans le fichier manifeste. Par exemple, si vous définissez l’autorisation ACCESS_NETWORK_STATE
, l’élément suivant est ajouté au fichier manifeste :
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Le modèle de projet d’application .NET MAUI définit les autorisations INTERNET
et ACCESS_NETWORK_STATE
dans Platforms\Android\AndroidManifest.xml, car la plupart des applications nécessitent un accès à Internet. Si vous supprimez l’autorisation INTERNET
de votre manifeste, les versions debug incluent toujours l’autorisation dans le fichier manifeste généré.
Conseil
Si vous constatez que le passage à un build de mise en production entraîne la perte d’une autorisation disponible dans la version debug, vérifiez que vous avez explicitement défini l’autorisation requise dans votre fichier manifeste.
Actions et fonctionnalités d’intention
Le fichier manifeste Android vous permet de décrire les fonctionnalités de votre application. Cela est obtenu par le biais d’Intentions et des IntentFilterAttribute. Vous pouvez spécifier les actions appropriées pour votre activité avec le constructeur IntentFilterAttribute et les catégories appropriées avec la propriété Categories. Au moins une activité doit être fournie, c’est pourquoi les activités sont fournies dans le constructeur. Un [IntentFilter]
peut être fourni plusieurs fois, et chaque utilisation entraîne un élément <intent-filter/>
distinct dans le <activity/>
:
using Android.App;
using Android.Content;
namespace MyMauiApp;
[Activity(Label = "My Maui App", MainLauncher = true)]
[IntentFilter(new[] {Intent.ActionView},
Categories = new[] {Intent.CategorySampleCode, "my.custom.category"})]
public class MyActivity : Activity
{
}
Cet exemple produit le fragment XML suivant :
<activity android:label="My Maui App"
android:name="crc64bdb9c38958c20c7c.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.SAMPLE_CODE" />
<category android:name="my.custom.category" />
</intent-filter>
</activity>
Élément d’application
Le fichier manifeste Android vous permet également de déclarer des propriétés pour l’ensemble de votre application. Ceci est obtenu via l’élément <application>
et son équivalent, le ApplicationAttribute. En règle générale, vous déclarez des propriétés <application>
pour l’ensemble de votre application, puis remplacez ces propriétés selon les besoins d’une activité.
Par exemple, l’attribut Application
suivant peut être ajouté à MainApplication.cs pour indiquer que le nom lisible par l’utilisateur de l’application est « Mon application Maui » et qu’il utilise le style Maui.SplashTheme
comme thème par défaut pour toutes les activités :
using Android.App;
using Android.Runtime;
namespace MyMauiApp;
[Application(Label = "My Maui App", Theme = "@style/Maui.SplashTheme")]
public class MainApplication : MauiApplication
{
public MainApplication(IntPtr handle, JniHandleOwnership ownership)
: base(handle, ownership)
{
}
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
}
Cette déclaration entraîne la génération du fragment XML suivant dans obj\Debug\net8.0-android\AndroidManifest.xml :
<application android:label="MyMauiApp" android:theme="@style/Maui.SplashTheme" android:debuggable="true" ...>
Remarque
Les versions debug définissent automatiquement android:debuggable="true"
afin que les débogueurs et d’autres outils puissent être attachés à votre application. Toutefois, il n’est pas défini pour les builds de mise en production.
Dans cet exemple, toutes les activités de l’application ont le style Maui.SplashTheme
par défaut. Si vous définissez le thème d’une activité sur Maui.MyTheme
, seule cette activité utilisera le style Maui.MyTheme
, tandis que toutes les autres activités de votre application auront le style Maui.SplashTheme
par défaut défini dans l’élément <application>
.
Le ApplicationAttribute n’est pas la seule façon de configurer les attributs <application>
. Vous pouvez également insérer des propriétés directement dans l’élément <application>
du fichier manifeste. Ces propriétés sont ensuite fusionnées dans le fichier manifeste généré. Pour plus d’informations, consultez la section propriétés de ApplicationAttribute.
Important
Le contenu de Platforms\Android\AndroidManifest.xml remplace toujours les données fournies par les attributs.
Barre de titre de l’application
L’application Android a une barre de titre qui affiche une étiquette. La valeur de la propriété de build $(ApplicationTitle)
, dans votre fichier projet d’application .NET MAUI, s’affiche dans la barre de titre. .NET MAUI l’inclut dans le manifeste généré comme la valeur de android.label
:
<application android:label="My Maui App" ... />
Pour spécifier une étiquette d’activités dans la barre de titre, utilisez la propriété Label :
using Android.App;
namespace MyMauiApp;
[Activity (Label="My Maui App")]
public class MyActivity : Activity
{
}
Cet exemple produit le fragment XML suivant :
<activity android:label="My Maui App"
android:name="crc64bdb9c38958c20c7c.MyActivity" />
Icône d’application
Par défaut, votre application a une icône .NET. Pour plus d’informations sur la spécification d’une icône personnalisée, consultez Modifier l’icône d’une application .NET MAUI.
Attributs
Le tableau suivant présente les attributs .NET pour Android qui génèrent des fragments XML de manifeste Android :
Voir aussi
- Vue d’ensemble du manifeste d’application sur developer.android.com
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour