Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Jede .NET Multi-platform App UI (.NET MAUI) App auf Android verfügt über eine AndroidManifest.xml-Datei, die sich im Ordner Platforms\Android befindet und wesentliche Informationen über Ihre App für Build-Tools, das Android-Betriebssystem und Google Play beschreibt.
Die Manifestdatei für Ihre .NET MAUI-Android-App wird als Teil des .NET MAUI-Build-Prozesses auf Android generiert. Dieser Build-Prozess nimmt das XML in der Datei Platforms\Android\AndroidManifest.xml und fügt es mit jeglichem XML zusammen, das aus spezifischen Attributen Ihrer Klassen generiert wurde. Die resultierende Manifestdatei befindet sich im Ordner obj. Sie finden sie beispielsweise unter obj\Debug\net8.0-android\AndroidManifest.xml für Debugbuilds auf .NET 8.
Hinweis
Visual Studio 17.6+ enthält einen Editor, der das Festlegen von App-Details, der Android-Zielversion und der erforderlichen Berechtigungen in einer Android-Manifestdatei vereinfacht.
Generieren des Manifests
Alle .NET MAUI-Apps haben eine MainActivity
-Klasse, die von Activity über die MauiAppCompatActivity
-Klasse abgeleitet ist und auf die ActivityAttribute angewendet wird. Einige Apps können zusätzliche Klassen enthalten, die sich von Activity ableiten und auf die ActivityAttribute angewendet wird.
Zur Erstellungszeit werden Assemblies nach Nicht-abstract
-Klassen durchsucht, die von Activity abgeleitet sind und auf die ActivityAttribute angewendet wurde. Diese Klassen und Attribute werden verwendet, um das Manifest der App zu erstellen. Stellen Sie sich beispielsweise den folgende Code vor:
using Android.App;
namespace MyMauiApp;
public class MyActivity : Activity
{
}
Dieses Beispiel führt dazu, dass in der Manifestdatei nichts erzeugt wird. Um ein <activity/>
-Element zu erzeugen, müssen Sie das ActivityAttribute hinzufügen:
using Android.App;
namespace MyMauiApp;
[Activity]
public class MyActivity : Activity
{
}
In diesem Beispiel wird das folgende XML-Fragment zur Manifestdatei hinzugefügt:
<activity android:name="crc64bdb9c38958c20c7c.MyActivity" />
Hinweis
ActivityAttribute hat keine Auswirkungen auf abstract
-Typen.
Name der Aktivität
Der Typname einer Aktivität basiert auf der zyklischen 64-Bit-Redundanzprüfung des assembler-qualifizierten Namens des exportierten Typs. Dadurch kann derselbe vollqualifizierte Name von zwei verschiedenen Assemblies bereitgestellt werden, ohne dass ein Paketierungsfehler auftritt.
Um diese Vorgabe außer Kraft zu setzen und den Namen Ihrer Aktivität explizit anzugeben, verwenden Sie die Eigenschaft Name:
using Android.App;
namespace MyMauiApp;
[Activity (Name="companyname.mymauiapp.activity")]
public class MyActivity : Activity
{
}
Dieses Beispiel erzeugt das folgende XML-Fragment:
<activity android:name="companyname.mymauiapp.activity" />
Hinweis
Sie sollten die Eigenschaft Name
nur aus Gründen der Abwärtskompatibilität verwenden, da eine solche Umbenennung die Typensuche zur Laufzeit verlangsamen kann.
Ein typisches Szenario für die Einstellung der Eigenschaft Name ist, wenn Sie einen lesbaren Java-Namen für Ihre Aktivität benötigen. Dies kann nützlich sein, wenn eine andere Android-App in der Lage sein muss, Ihre App zu öffnen, oder wenn Sie ein Skript haben, um Ihre App zu starten und die Startzeit zu testen.
Starten über die App-Auswahl
Wenn Ihre .NET MAUI Android-App mehrere Aktivitäten enthält und Sie angeben müssen, welche Aktivität vom App-Launcher aus gestartet werden kann, verwenden Sie die Eigenschaft MainLauncher:
using Android.App;
namespace MyMauiApp;
[Activity (Label="My Maui App", MainLauncher = true)]
public class MyActivity : Activity
{
}
Dieses Beispiel erzeugt das folgende XML-Fragment:
<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>
Berechtigungen
Wenn Sie einer Android-App Berechtigungen hinzufügen, werden diese in der Manifestdatei aufgezeichnet. Wenn Sie beispielsweise die Berechtigung ACCESS_NETWORK_STATE
festlegen, wird der Manifestdatei das folgende Element hinzugefügt:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Die .NET MAUI-App-Projektvorlage setzt die INTERNET
- und ACCESS_NETWORK_STATE
-Berechtigungen in Platforms\Android\AndroidManifest.xml, da die meisten Apps einen Internetzugang benötigen. Wenn Sie die Berechtigung INTERNET
aus Ihrem Manifest entfernen, enthalten Debug-Builds die Berechtigung weiterhin in der generierten Manifestdatei.
Tipp
Wenn Sie feststellen, dass der Wechsel zu einem Release-Build dazu führt, dass Ihre App eine Berechtigung verliert, die im Debug-Build verfügbar war, überprüfen Sie, ob Sie die erforderliche Berechtigung explizit in Ihrer Manifestdatei festgelegt haben.
Intent-Aktionen und -Funktionen
Die Android-Manifestdatei bietet Ihnen die Möglichkeit, die Fähigkeiten Ihrer App zu beschreiben. Dies wird über Absichten und IntentFilterAttribute erreicht. Sie können mit dem IntentFilterAttribute-Konstruktor angeben, welche Aktionen für Ihre Aktivität geeignet sind, und mit der Categories-Eigenschaft, welche Kategorien geeignet sind. Es muss mindestens eine Aktivität vorhanden sein, weshalb die Aktivitäten im Konstruktor angegeben werden. Ein [IntentFilter]
kann mehrfach angegeben werden, und jede Verwendung führt zu einem separaten <intent-filter/>
-Element innerhalb der <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
{
}
Dieses Beispiel erzeugt das folgende XML-Fragment:
<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>
Application-Element
Die Android-Manifestdatei bietet Ihnen auch die Möglichkeit, Eigenschaften für Ihre gesamte App zu deklarieren. Dies wird durch das <application>
-Element und sein Gegenstück, das ApplicationAttribute-Element, erreicht. Normalerweise deklarieren Sie <application>
-Eigenschaften für Ihre gesamte App und überschreiben diese Eigenschaften dann bei Bedarf auf Aktivitätsbasis.
Zum Beispiel könnte das folgende Application
-Attribut zu MainApplication.cs hinzugefügt werden, um anzugeben, dass der für den Benutzer lesbare Name der App "My Maui App" ist und dass sie den Maui.SplashTheme
-Stil als Standardthema für alle Aktivitäten verwendet:
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();
}
Diese Erklärung bewirkt, dass das folgende XML-Fragment in obj\Debug\net8.0-android\AndroidManifest.xml generiert wird:
<application android:label="MyMauiApp" android:theme="@style/Maui.SplashTheme" android:debuggable="true" ...>
Hinweis
Debug-Builds setzen automatisch android:debuggable="true"
, sodass Debugger und andere Hilfsmittel an Ihre App angehängt werden können. Es ist jedoch nicht für Release-Builds vorgesehen.
In diesem Beispiel werden alle Aktivitäten in der App standardmäßig auf den Maui.SplashTheme
-Stil eingestellt. Wenn Sie das Thema einer Aktivität auf Maui.MyTheme
setzen, wird nur diese Aktivität den Stil Maui.MyTheme
verwenden, während alle anderen Aktivitäten in Ihrer App standardmäßig den Stil Maui.SplashTheme
verwenden, der im Element <application>
festgelegt ist.
Die ApplicationAttribute ist nicht die einzige Möglichkeit, <application>
-Attribute zu konfigurieren. Sie können Eigenschaften auch direkt in das <application>
-Element der Manifestdatei einfügen. Diese Eigenschaften werden dann in die erzeugte Manifestdatei übernommen. Weitere Informationen finden Sie im Abschnitt Eigenschaften von ApplicationAttribute.
Wichtig
Der Inhalt von Platforms\Android\AndroidManifest.xml hat immer Vorrang vor den durch Attribute bereitgestellten Daten.
App-Titelleiste
Android-Apps haben eine Titelleiste, die eine Bezeichnung anzeigt. Der Wert der $(ApplicationTitle)
-Build-Eigenschaft in Ihrer .NET MAUI App-Projektdatei wird in der Titelleiste angezeigt. NET MAUI nimmt es in das generierte Manifest als Wert von android.label
auf:
<application android:label="My Maui App" ... />
Verwenden Sie die Eigenschaft Label, um eine Aktivitätsbezeichnung in der Titelleiste anzugeben:
using Android.App;
namespace MyMauiApp;
[Activity (Label="My Maui App")]
public class MyActivity : Activity
{
}
Dieses Beispiel erzeugt das folgende XML-Fragment:
<activity android:label="My Maui App"
android:name="crc64bdb9c38958c20c7c.MyActivity" />
App-Symbol
Standardmäßig wird Ihre App mit einem .NET-Symbol versehen. Informationen zum Festlegen eines benutzerdefinierten Symbols finden Sie unter Ändern eines .NET MAUI-Appssymbols.
Attribute
Die folgende Tabelle zeigt die .NET for Android-Attribute, die Android-Manifest-XML-Fragmente erzeugen:
Weitere Informationen
- App-Manifest-Übersicht auf developer.android.com