Die Konfigurationsdatei appinfo.json enthält Informationen, mit denen die Nutzung Ihrer App definiert wird und die als Schlüsselwertpaare gespeichert werden. Viele der in der Datei definierten Eigenschaften werden unter Einstellungen in AppStudio konfiguriert. In manchen Fällen müssen Sie der Datei allerdings manuell Elemente hinzufügen.
Einige der unten aufgelisteten Kategorien sind in der appinfo.json-Konfigurationsdatei nicht standardmäßig vorhanden. Andere Kategorien sind bereits in der Konfigurationsdatei enthalten, deren Eigenschaften in den Einstellungen verwaltet werden. Die in diesem Abschnitt aufgeführten Eigenschaften sind eine Ergänzung zu denen, die in den Einstellungen konfiguriert werden.
Die Datei appinfo.json befindet sich im Hauptordner der App. Für Ihre App können Sie über die Schaltfläche Dateien in ArcGIS AppStudio darauf zugreifen.
Funktionen
Die Kategorie "Funktionen" ist bereits in der appinfo.json-Konfigurationsdatei vorhanden und kann mit Optionen gefüllt werden, die im Abschnitt Funktionen des Werkzeugs Einstellungen ausgewählt wurden. Sie können zudem die folgenden Eigenschaften manuell hinzufügen.
- backup: Wurde "false" festgelegt, wird unter Android keine Sicherung oder Wiederherstellung der Anwendung vorgenommen. Die App wird außerdem bei vollständigen Systemsicherungen ausgeschlossen. Wird nichts angegeben, ist der Standardwert "false".
- ios.appTransportSecurity.allowArbitraryLoads: Wurde "false" festgelegt, werden bei Netzwerkverbindungen Transportsicherheitseinschränkungen angewendet. Wird nichts angegeben, ist der Standardwert "false".
- interAppFileSharing: Wurde "true" festgelegt, kann unter iOS auf die Dateien in Ihrer App über die Dateien-App zugegriffen werden. Wird nichts angegeben, ist der Standardwert "false".
- mediaLocation: Wurde "true" festgelegt, kann die App unbearbeitete Exif-Metadaten aus Fotos abrufen. Wird nichts angegeben, ist der Standardwert "false".
- indoorLocation: Wurde "true" festgelegt, sind alle für die Indoor-Positionierung erforderlichen Bluetooth-Funktionen aktiviert. Wird nichts angegeben, ist der Standardwert "false".
Im folgenden Beispiel werden keine Transportsicherheitseinschränkungen angewendet.
"capabilities": {
"ios": {
"appTransportSecurity": {
"allowArbitraryLoads": true
}
},
Bereitstellung
Die Kategorie "Bereitstellung" ist bereits in der appinfo.json-Konfigurationsdatei vorhanden und kann mit Optionen gefüllt werden, die in den Abschnitten Plattformen und Erweitert des Werkzeugs Einstellungen ausgewählt wurden. Sie können zudem die folgenden Eigenschaften manuell hinzufügen.
- android.trustUserCertificates: Wenn Sie diese Eigenschaft auf "true" festlegen, akzeptiert eine App alle Zertifizierungsstellen. Standardmäßig ist diese Eigenschaft auf "false" festgelegt, und in AppStudio-Apps gelten von Benutzern hinzugefügte Zertifizierungsstellen nicht als sichere Verbindungen für Android.
- android.minimumSdkVersion: Mit ihr wird die API-Mindeststufe definiert, die zum Ausführen der App erforderlich ist. Wird nichts angegeben, wird für AppStudio-Apps standardmäßig der Wert 23 verwendet.
- android.targetSdkVersion: Mit ihr wird die API-Stufe definiert, die für die App vorgesehen ist. Dies hat auch Einfluss auf die Vorgehensweise zum Gewähren von Berechtigungen für die App. Wenn auf dem Gerät Android 6.0 oder höher ausgeführt wird und das Ziel-SDK der App 23 oder eine höhere Stufe ist, muss der Benutzer die benötigten Berechtigungen einzeln anfordern, während die App ausgeführt wird. Wird nichts angegeben, wird für AppStudio-Apps standardmäßig der Wert 31 für "Lokal erstellen" und der Wert 34 für "In Cloud erstellen" verwendet. Weitere Informationen finden Sie in der Hilfe zur Google Play Console.
Hinweis:
Benutzer von "Lokal erstellen" müssen deployment.android.targetSdkVersion in der Datei "appinfo.json" der App auf 34 festlegen, um die unter https://developer.android.com/google/play/requirements/target-sdk aufgeführten Anforderungen zu erfüllen.
- android.enableGooglePlayServicesSecurityProvider: Hiermit wird gesteuert, ob die App den Google Play-Sicherheitsanbieter aufruft, um sicherzustellen, dass die App auf einem Gerät ausgeführt wird, auf dem die neuesten Updates zum Schutz gegen bekannte Exploits installiert sind. Wird nichts angegeben, wird für AppStudio-Apps standardmäßig der Wert "False" verwendet.
- ios.minimumVersion: Damit wird die Mindestversion des Betriebssystems für die Ausführung der Software definiert. Wird nichts angegeben, wird für AppStudio-Apps standardmäßig der Wert 13.0 verwendet.
- desktop.allowOverwrite: Ist dieser Wert auf true festgelegt, kann die App unter Windows installiert werden, ohne dass vorherige Versionen der App deinstalliert werden müssen. Wird nichts angegeben, lautet der Wert standardmäßig "false".
Im folgenden Beispiel werden alle Zertifizierungsstellen unter Android akzeptiert. Für die Installation der App unter Android und iOS sind die Mindestbetriebssysteme 6.0 bzw. 13.0 erforderlich.
"deployment": {
"android": {
"trustUserCertificates": true,
"minimumSdkVersion": 23,
"targetSdkVersion": 31
},
"ios": {
"minimumVersion": "13.0"
}
},
Anzeige
Die Kategorie "Anzeige" ist bereits in der appinfo.json-Konfigurationsdatei vorhanden und kann mit Optionen gefüllt werden, die im Abschnitt Anzeige des Werkzeugs Einstellungen ausgewählt wurden. Sie können zudem die folgenden Eigenschaften manuell hinzufügen.
- enableHighDpi: Damit wird festgelegt, ob die App auf Geräten, die diesen Modus unterstützen, im Modus für hohe DPI-Werte geöffnet wird. Wird nichts angegeben, ist der Standardwert "false".
- statusBar: Damit wird festgelegt, ob die Statusleiste angezeigt wird, wenn die App auf iOS- und Android-Geräten verwendet wird. Diese Eigenschaft ist nicht mit der Eigenschaft usesStatusBar zu verwechseln, mit der festgelegt wird, ob die Statusleiste auf Telefonen oder Tablets angezeigt wird. Sie wird über die Optionen der Statusleiste auf der Registerkarte Einstellungen > Geräte der App festgelegt. Wird nichts angegeben, ist der Standardwert "false".
- ios.windowMode: Sie definiert, ob die App die Multitasking-Funktion des iPad unterstützt, das heißt, ob die App neben anderen Apps auf demselben Bildschirm verwendet werden kann Diese Eigenschaft ist standardmäßig aktiviert, wenn für Ihre App der Hochformat- bzw. der Querformat-Modus in den Tablet-Optionen auf der Registerkarte Einstellungen > Geräte deaktiviert ist. Um ios.windowMode zu deaktivieren und die Ausführung der App auf dem iPad nur im Vollbildmodus zuzulassen, legen Sie fullscreen fest.
Im folgenden Beispiel ist der Modus für hohe DPI-Werte sowie die Statusleiste auf allen iOS-Geräten aktiviert, und die App wird nur im Vollbildmodus auf einem iPad ausgeführt.
"display": {
"enableHighDpi": true,
"statusBar": true,
"ios": {
"windowMode": "fullscreen"
}
},
Erstellen
Die Kategorie "Erstellen" ist in der appinfo.json-Konfigurationsdatei noch nicht vorhanden. Sie können die folgenden Eigenschaften manuell hinzufügen.
- ignore: Sie definiert eine Liste von Dateinamenmustern, die beim Erstellen aus den Ressourcen der App ausgeschlossen werden sollen. So können Dateien im App-Element bleiben, die beim Entwickeln und Testen nützlich sind, aber beim Erstellen der App nicht benötigt werden.
- ios.enableBitcode: Damit wird angegeben, ob die App Bitcode unterstützt. Apple optimiert die Binärdatei einer App für bestimmte Geräte, ohne dass Aktualisierungen oder eine erneute Übermittlung erforderlich werden. Bitcode ist nur für iOS-Apps verfügbar und wird standardmäßig in Builds für den Apple App Store aktiviert.
Verwaltung
Die Kategorie "Verwaltung" ist in der appinfo.json-Konfigurationsdatei noch nicht vorhanden. Sie können die folgenden Eigenschaften manuell hinzufügen.
- configurationSchema: Verwendet werden kann hier ein Dateiname oder ein Pfad zu einer .xml-Datei mit Standardeinstellungen für die App-Konfiguration, die bei der Bereitstellung der App über EMM-Software (Enterprise Mobile Management) verwendet werden. Weitere Informationen zur Formatierung dieser .xml-Datei finden Sie in der Referenz für Android-Entwickler unter Set up managed configurations.
- android.restrictionFile: Verwendet werden kann hier ein Dateiname oder ein Pfad zu einer .xml-Datei, mit der Beschränkungen auf Android-Geräten vorgegeben werden. Dies ist bei der Bereitstellung der App über EMM-Software erforderlich, damit die App-Konfiguration genutzt werden kann. Weitere Informationen zur Formatierung dieser .xml-Datei finden Sie in der Referenz für Android-Entwickler unter RestrictionsManager.
- windows.applicationName: Der Name der Anwendung, für die Eigenschaften zur App-Konfiguration erforderlich sind, falls die App eine Enterprise-Konfiguration erfordert.
- windows.keyRoot: Das Registrierungsschlüssel-Stammverzeichnis, in dem sich diese Eigenschaften für die App-Konfiguration befinden. Bei keiner Angabe ist die Standardeinstellung HKEY_CURRENT_USER.
- windows.vendorName: Der Name des für die Anwendung verantwortlichen Softwareherstellers. Bei Esri Apps lautet dieser Wert ESRI.
Im folgenden Beispiel sind die Konfigurationsdateien und Parameter aufgeführt, die bei der Bereitstellung der App über EMM-Software verwendet werden.
"management": {
"android": {
"restrictionFile": "AppConfig_Android.xml"
},
"configurationSchema": "AppConfig.xml",
"windows": {
"applicationName": "MyApp",
"keyRoot": "HKEY_CURRENT_USER",
"vendorName": "MyName"
}
},
Ressourcen
Die Kategorie "Bereitstellung" ist bereits in der appinfo.json-Konfigurationsdatei vorhanden und kann mit Optionen gefüllt werden, die in den Abschnitten Ressourcen des Werkzeugs Einstellungen ausgewählt wurden. Sie können zudem die folgenden Eigenschaften manuell hinzufügen.
- appIconBackgroundColor: Sie akzeptiert einen hexadezimalen Farbwert und definiert die Hintergrundfarbe für Plattformen, die eine bestimmte Symbolform erzwingen. Beispielsweise erzwingt iOS als App-Symbole ein abgerundetes Rechteck und füllt transparente Flächen automatisch mit schwarzer Farbe aus. Wenn kein Wert angegeben wird, wird das Standardverhalten der Plattform angewendet.
- launchImageTextColor: Sie akzeptiert einen hexadezimalen Farbwert und definiert die Farbe von Text, der auf dem Einführungsbildschirm Ihrer App angezeigt wird. Die Standardfarbe für diesen Text ist Schwarz, was auf dem Einführungsbildschirm Ihrer App schwer lesbar sein kann.
- platformName.appIcon: Zusätzlich sollte platformName durch die verwendete Plattform ersetzt werden. Hier kann ein Dateipfad zur Definition eines plattformspezifischen App-Symbols verwendet werden. Wird kein Symbol für die Plattform bereitgestellt, wird das allgemeine Symbol für die App verwendet.
- android.adaptiveIcons: Wurde "true" festgelegt, zeigen Android-Geräte das adaptive Symbol der App an. Die folgenden Eigenschaften sollten auch unter "Ressourcen" angegeben werden, mit denen Dateipfade zu Elementen des adaptiven Symbols definiert werden.
- android.appIcon: Dateipfad zum Startprogramm des adaptiven Symbols. Verweist auf die Vordergrund- und Hintergrunddateien.
- android.appIconForeground: Dateipfad zum Vordergrund des adaptiven Symbols. Dies kann eine .xml- oder .png-Datei sein.
- android.appIconBackground: Dateipfad zum Hintergrund des adaptiven Symbols. Dies kann eine .xml- oder .png-Datei sein.
- android.appIconBackgroundColor: Hexadezimaler Farbwert, eine optionale Alternative zu android.appIconBackground. Wenn beide Eigenschaften festgelegt sind, wird android.appIconBackground verwendet.
Im folgenden Codebeispiel werden ein adaptives Symbol für Android und eindeutige Symbole für jede Plattform gezeigt.
"resources": {
"android": {
"adaptiveIcons": true,
"appIcon": "ic_launcher.xml",
"appIconBackgroundColor": " ic_launcher_background.xml",
"appIconForeground": " ic_launcher_foreground.xml"
},
"ios": {
"appIcon": "ios_appicon.png"
},
"linux": {
"appIcon": "linux_appicon.png"
},
"macos": {
"appIcon": "mac_appicon.png"
},
"windows": {
"appIcon": "windows_appicon.png"
}
},
Adaptive Symbole sind Android eindeutig zugeordnet und werden verwendet, um sicherzustellen, dass das App-Symbol auf vielen verschiedenen Betriebssystemkonfigurationen wie erwartet angezeigt wird. Adaptive Symbole können als Kreise, Quadrate oder Zwischenformen dargestellt werden. Im Grunde kann ein adaptives Symbol mit einer .png-Datei im Vordergrund und einer Vollfarbe als Hintergrund erstellt werden. Für die Erstellung der .png-Datei kann jedes beliebige Werkzeug verwendet werden. Es ist jedoch wichtig, dass das Bild genügend Platz hat, damit es nicht durch die vom Betriebssystem verwendete Maske abgeschnitten wird. Informationen zu Größe und Form von Dateien für adaptive Symbole finden Sie unter Adaptive Symbole. Mit Online-Werkzeugen wie EasyAppIcon lassen sich alle Dateien erstellen, die Sie für ein adaptives Symbol benötigen; allerdings kann es sein, dass Sie nur bestimmte Dateiausgaben erstellen können. Android Studio eignet sich am besten für die Erstellung von adaptiven Symbolen.
Im Beispielcode oben werden .xml-Dateien sowohl für den Vordergrund als auch für den Hintergrund verwendet. Im folgenden Codebeispiel wird der Inhalt der ic_launcher.xml-Datei angezeigt, die auf die Vorder- und Hintergrunddateien verweist.
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>
Im folgenden Codebeispiel wird der Inhalt der ic_launcher_background.xml-Datei angezeigt, die einen blauen Hintergrund beschreibt.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#3697f0</color>
</resources>
Im folgenden Codebeispiel wird der Inhalt der ic_launcher_foreground.xml-Datei angezeigt, die das Symbol für "AppStudio Run" als Vordergrundbild beschreibt.<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<group android:scaleX="1.62"
android:scaleY="1.62"
android:translateX="28.08"
android:translateY="28.08">
<path
android:fillColor="#FF000000"
android:pathData="M22.079,1L9.92,1A1.921,1.921 0,0 0,8 2.921L8,28.08A1.921,1.921 0,0 0,9.921 30L22.08,30A1.921,1.921 0,0 0,24 28.079L24,2.92A1.921,1.921 0,0 0,22.079 1zM23,28.08a0.922,0.922 0,0 1,-0.921 0.92L18,29v-1h-4v1L9.921,29A0.922,0.922 0,0 1,9 28.08L9,27h14zM23,26L9,26L9,4h14zM23,3L9,3v-0.08A0.922,0.922 0,0 1,9.921 2L22.08,2a0.922,0.922 0,0 1,0.921 0.92zM12.1,10.417L12.1,20.7l8.227,-5.142zM12.9,11.86l5.917,3.698 -5.917,3.699z"/>
</group>
</vector>
Übersetzungen
Nachdem Sie Übersetzungsdateien für Ihre App generiert haben, müssen Sie sicherstellen, dass sie in der Datei appinfo.json referenziert werden. Informationen zum Vorbereiten der App für die Übersetzung und zum Generieren dieser Dateien finden Sie unter Globalisieren Ihrer App.
Sobald diese Dateien in Ihrem App-Element vorhanden sind, müssen die Eigenschaften path und fileName unter einer neuen translations-Kategorie in der appinfo.json-Datei hinzugefügt werden, um deren Speicherort anzugeben.
Im folgenden Beispiel werden die Dateien einer Map Viewer-Vorlagen-App verknüpft:
"translations": {
"path": "MapViewer/languages",
"fileName": "MapViewer"
}
Nachdem obiges Codebeispiel in die Datei appinfo.json aufgenommen wurde, verwendet die erstellte App die Dateien mit dem Namensschema "MapViewer_Gebietsschemacode.qm" (z. B. "MapViewer_en.qm" und "MapViewer_ja.qm") im Ordner unter "MapViewer/languages".
Schlüssel zur Verwendungbeschreibung
Ein gängiger Fall für die direkte Bearbeitung der Datei appinfo.json ist das Hinzufügen von Schlüsseln zur Verwendungsbeschreibung. Dabei handelt es sich um kurze Zeichenfolgen, mit denen beschrieben wird, warum Ihre App die Verwendung von Funktionalitäten wie die Kamera, Positionserfassung im Hintergrund oder Bluetooth anfordert. Dies ist eine Anforderung für iOS- und macOS-Geräte. Sie kann derzeit nicht auf anderen Plattformen genutzt werden. Eine Implementierung als Benutzeroberflächenelement ist für die Zukunft geplant, gegenwärtig ist allerdings das manuelle Hinzufügen erforderlich.
Einzelne Verwendungsbeschreibungen müssen Sie unter der Überschrift usageDescriptionKeys hinzufügen. Sie können diesen Abschnitt jederzeit in die Datei appinfo.json einfügen. Die Reihenfolge der Werte wirkt sich nicht auf die Funktionalität aus. Es schadet nicht, Beschreibungen für alle Funktionen aufzunehmen, auch solcher, die von der App nicht unterstützt werden. Nicht benötigte Beschreibungszeichenfolgen werden bei der App-Erstellung nicht einbezogen.
Im folgenden Codebeispiel wird bluetoothUsageDescription nicht verwendet, da die App keine Bluetooth-Funktionalität umfasst.
"usageDescriptionKeys": {
"bluetoothUsageDescription": "This app uses Bluetooth to scan and connect to devices. (iOS only)",
"cameraUsageDescription": "This app needs access to the camera to take a picture. (iOS only)",
"faceIDUsageDescription": "This app uses face ID to authenticate using facial recognition. (iOS only)",
"locationAlwaysUsageDescription": "This app needs access to device location when the app is running or in the background. (iOS and macOS)",
"locationWhenInUseUsageDescription": "This app needs access to device location when the app is running. (iOS and macOS)",
"microphoneUsageDescription": "This app needs access to a microphone to record audio. (iOS only)",
"photoLibraryUsageDescription": "This app needs access to the photo library to select a photo. (iOS only)",
"photoLibraryAddUsageDescription": "This app uses your photo library to save photos in the camera roll for use in the app. (iOS only)",
"locationAlwaysAndWhenInUseUsageDescription": "This app needs access to device location when the app is running or in the background. (iOS and macOS)",
"sensorsUsageDescription": "This app uses the Activity Recognizer to identify device motion."
},
Zusätzliche Eigenschaften
Die folgende Eigenschaft wird außerhalb einer Kategorie hinzugefügt:
queryApps.packageNames: Diese Eigenschaft wird außerhalb eines Abschnitts hinzugefügt. Akzeptiert wird hier eine Liste von App-Paketnamen. Bei der Verwendung auf Android-Geräten wird diese Liste durch die isAppInstalled-Funktion in der AppFramework-Komponente abgefragt.