Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Ogni app .NET multipiattaforma dell'interfaccia utente (.NET MAUI) in Android ha un file di AndroidManifest.xml , che si trova nella cartella Platforms\Android , che descrive le informazioni essenziali sull'app per creare strumenti, il sistema operativo Android e Google Play.
Il file manifesto per l'app ANDROID .NET MAUI viene generato come parte del processo di compilazione MAUI .NET in Android. Questo processo di compilazione accetta il codice XML nel file Platforms\Android\AndroidManifest.xml e lo unisce a qualsiasi XML generato da attributi specifici nelle classi. Il file manifesto risultante è disponibile nella cartella obj . Ad esempio, è disponibile in obj\Debug\net8.0-android\AndroidManifest.xml per le build di debug in .NET 8.
Nota
Visual Studio 17.6+ include un editor che semplifica il processo di specificare i dettagli dell'app, la versione android di destinazione e le autorizzazioni necessarie in un file manifesto Android.
Generazione del manifesto
Tutte le app MAUI .NET hanno una MainActivity
classe che deriva da Activity, tramite la MauiAppCompatActivity
classe e che ha l'oggetto ActivityAttribute applicato. Alcune app possono includere classi aggiuntive che derivano da Activity e che hanno applicato .ActivityAttribute
In fase di compilazione, gli assembly vengono analizzati perabstract
individuare classi non che derivano da Activity e che hanno applicato .ActivityAttribute Queste classi e attributi vengono usati per generare il manifesto dell'app. Si consideri il codice di esempio seguente:
using Android.App;
namespace MyMauiApp;
public class MyActivity : Activity
{
}
In questo esempio non viene generato alcun elemento nel file manifesto. Per generare un <activity/>
elemento, è necessario aggiungere :ActivityAttribute
using Android.App;
namespace MyMauiApp;
[Activity]
public class MyActivity : Activity
{
}
In questo esempio viene aggiunto il frammento XML seguente al file manifesto:
<activity android:name="crc64bdb9c38958c20c7c.MyActivity" />
Nota
ActivityAttribute non ha alcun effetto sui abstract
tipi.
Nome dell'attività
Il nome del tipo di un'attività si basa sul controllo della ridondanza ciclico a 64 bit del nome completo dell'assembly del tipo esportato. In questo modo è possibile specificare lo stesso nome completo da due assembly diversi senza ricevere un errore di creazione del pacchetto.
Per eseguire l'override di questo valore predefinito e specificare in modo esplicito il nome dell'attività, usare la Name proprietà :
using Android.App;
namespace MyMauiApp;
[Activity (Name="companyname.mymauiapp.activity")]
public class MyActivity : Activity
{
}
In questo esempio viene generato il frammento XML seguente:
<activity android:name="companyname.mymauiapp.activity" />
Nota
È consigliabile usare la proprietà solo per motivi di compatibilità con le versioni precedenti, in quanto la ridenominazione può rallentare la Name
ricerca dei tipi in fase di esecuzione.
Uno scenario tipico per l'impostazione della Name proprietà è quando è necessario ottenere un nome Java leggibile per l'attività. Questo può essere utile se un'altra app Android deve essere in grado di aprire l'app o se hai uno script per avviare l'app e testare il tempo di avvio.
Avviare dalla selezione dell'app
Se l'app ANDROID .NET MAUI contiene più attività ed è necessario specificare quale attività deve essere avviata dall'utilità di avvio dell'app, usare la MainLauncher proprietà :
using Android.App;
namespace MyMauiApp;
[Activity (Label="My Maui App", MainLauncher = true)]
public class MyActivity : Activity
{
}
In questo esempio viene generato il frammento XML seguente:
<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>
Autorizzazioni
Quando si aggiungono autorizzazioni a un'app Android, vengono registrate nel file manifesto. Ad esempio, se si imposta l'autorizzazione, l'elemento ACCESS_NETWORK_STATE
seguente viene aggiunto al file manifesto:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Il modello di progetto dell'app .NET MAUI imposta le INTERNET
autorizzazioni e ACCESS_NETWORK_STATE
in Platforms\Android\AndroidManifest.xml, perché la maggior parte delle app richiede l'accesso a Internet. Se si rimuove l'autorizzazione INTERNET
dal manifesto, le compilazioni di debug includeranno comunque l'autorizzazione nel file manifesto generato.
Suggerimento
Se si scopre che il passaggio a una build di versione causa la perdita di un'autorizzazione disponibile nella compilazione di debug, verificare di aver impostato in modo esplicito l'autorizzazione necessaria nel file manifesto.
Azioni e funzionalità delle finalità
Il file manifesto Android consente di descrivere le funzionalità dell'app. Questo risultato viene ottenuto tramite finalità e .IntentFilterAttribute È possibile specificare le azioni appropriate per l'attività con il IntentFilterAttribute costruttore e quali categorie sono appropriate con la Categories proprietà . È necessario specificare almeno un'attività, motivo per cui le attività vengono fornite nel costruttore. Un [IntentFilter]
oggetto può essere fornito più volte e ogni utilizzo restituisce un elemento separato <intent-filter/>
all'interno di <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
{
}
In questo esempio viene generato il frammento XML seguente:
<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>
Elemento Application
Il file manifesto Android offre anche un modo per dichiarare le proprietà per l'intera app. Questo risultato viene ottenuto tramite l'elemento <application>
e la relativa controparte, ovvero .ApplicationAttribute In genere dichiari <application>
le proprietà per l'intera app e quindi esegui l'override di queste proprietà in base alle esigenze.
Ad esempio, l'attributo seguente Application
può essere aggiunto a MainApplication.cs per indicare che il nome leggibile dell'app è "My Maui App" e che usa lo Maui.SplashTheme
stile come tema predefinito per tutte le attività:
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();
}
Questa dichiarazione determina la generazione del frammento XML seguente in obj\Debug\net8.0-android\AndroidManifest.xml:
<application android:label="MyMauiApp" android:theme="@style/Maui.SplashTheme" android:debuggable="true" ...>
Nota
Le compilazioni di debug vengono impostate android:debuggable="true"
automaticamente in modo che i debugger e altri strumenti possano collegarsi all'app. Tuttavia, non è impostato per le build di versione.
In questo esempio, per impostazione predefinita tutte le attività nell'app saranno lo Maui.SplashTheme
stile. Se imposti il tema di un'attività su Maui.MyTheme
, solo l'attività userà lo Maui.MyTheme
stile mentre per impostazione predefinita qualsiasi altra attività nell'app sarà lo Maui.SplashTheme
stile impostato nell'elemento <application>
.
Non ApplicationAttribute è l'unico modo per configurare <application>
gli attributi. È anche possibile inserire proprietà direttamente nell'elemento <application>
del file manifesto. Queste proprietà vengono quindi unite nel file manifesto generato. Per altre informazioni, vedere la sezione delle proprietà di ApplicationAttribute.
Importante
Il contenuto di Platforms\Android\AndroidManifest.xml esegue sempre l'override dei dati forniti dagli attributi.
Barra del titolo dell'app
L'app Android ha una barra del titolo che visualizza un'etichetta. Il valore della $(ApplicationTitle)
proprietà di compilazione, nel file di progetto dell'app MAUI .NET, viene visualizzato sulla barra del titolo. .NET MAUI lo include nel manifesto generato come valore di android.label
:
<application android:label="My Maui App" ... />
Per specificare un'etichetta di attività sulla barra del titolo, usare la Label proprietà :
using Android.App;
namespace MyMauiApp;
[Activity (Label="My Maui App")]
public class MyActivity : Activity
{
}
In questo esempio viene generato il frammento XML seguente:
<activity android:label="My Maui App"
android:name="crc64bdb9c38958c20c7c.MyActivity" />
Icona app
Per impostazione predefinita, all'app verrà assegnata un'icona .NET. Per informazioni sulla specifica di un'icona personalizzata, vedere Modificare un'icona dell'app MAUI .NET.
Attributi
La tabella seguente illustra gli attributi .NET per Android che generano frammenti XML manifesto Android:
Vedi anche
- Panoramica del manifesto dell'app in developer.android.com