Редактирование appinfo

Файл конфигурации appinfo.json содержит информацию, которая определяет работу приложения, хранящуюся в виде пар ключ-значение. Часть свойств, определенных в файле, настраиваются в Настройках AppStudio, но могут возникнуть случаи, когда необходимо вручную добавлять значения в файл.

Некоторые категории, перечисленные ниже, вообще отсутствуют в файле конфигурации appinfo.json по умолчанию. Другие категории уже отображаются в файле конфигурации со свойствами, которыми можно управлять в Настройках. Свойства, перечисленные в этом разделе, являются дополнительными по отношению к тем, которые были заданы в Настройках.

Файл appinfo.json находится в главной папке вашего приложения. Чтобы его найти, нажмите кнопку Файлы для вашего приложения в ArcGIS AppStudio.

Функциональные возможности

Категория возможностей уже будет существовать в файле конфигурации appinfo.json и может быть заполнена параметрами, которые были выбраны в разделе Возможности инструмента Настройки. Вы также можете добавить вручную следующие параметры.

  • backup — Если задано значение false, в никогда не будет выполняться резервное копирование или восстановление приложения Android, и приложение будет исключено из резервных копий системы. Если значение не указано, используется значение по умолчанию false.
  • ios.appTransportSecurity.allowArbitraryLoads — Если задано значение false, для сетевых подключений будут применены ограничения транспортной безопасности. Если значение не указано, используется значение по умолчанию false.
  • interAppFileSharing — Если задано значение true, файлы вашего приложения будут доступны через приложение Файлы на iOS. Если значение не указано, используется значение по умолчанию false.
  • mediaLocation — если задано true, приложение может извлекать неотредактированные метаданные Exif из фотографий. Если значение не указано, используется значение по умолчанию false.
  • indoorLocation - если задано true, все необходимые функции Bluetooth для позиционирования внутри помещений включены. Если значение не указано, используется значение по умолчанию false.

В следующем примере не применяются никакие ограничения транспортной безопасности.

"capabilities": {
    "ios": {
        "appTransportSecurity": {
             "allowArbitraryLoads": true
    }
},

Развертывание

Категория развертывания уже будет существовать в файле конфигурации appinfo.json и может быть заполнена параметрами, которые были выбраны в разделах Платформы и Дополнительно инструмента Настройки. Вы также можете добавить вручную следующие параметры.

  • android.trustUserCertificates — Если задать для этого свойства значение true, приложение будет принимать все сертификаты. По умолчанию приложения задано false, и приложения AppStudio не доверяют издателям сертификатов, добавленных пользователями, для безопасных подключений в Android.
  • android.minimumSdkVersion — Определяет минимальный уровень API, необходимый для запуска приложения. Если не задано, значением приложения AppStudio по умолчанию будет 23.
  • android.targetSdkVersion — Определяет предполагаемый уровень API для приложений. Оно также определяет способ предоставления пользователем прав приложению. Если устройство работает на Android 6.0 или более новой версии, или используется целевое SDK 23 или выше, пользователь должен запрашивать каждое разрешение при работе приложения. Если не указано, значением приложения AppStudio по умолчанию будет 31 для local Male и 33 для cloud Make. Для более подробной информации см. Справку Google Play Console.
    Примечание:

    Пользователи Local make должны установить для deployment.android.targetSdkVersion значение 33 в файле appinfo.json своих приложений, чтобы соответствовать требованиям, перечисленным в https://developer.android.com/google/play/requirements/target-sdk.

  • android.enableGooglePlayServicesSecurityProvider — Контролирует, вызывает ли ваше приложение поставщика безопасности Google Play, чтобы убедиться, что приложение работает на устройстве с последними обновлениями в целях защиты от известных угроз. Если значение не указано, используется значение приложения AppStudio по умолчанию false.
  • ios.minimumVersion — Определяет минимальную версию операционной системы, на которой может работать программное обеспечение. Если не задано, значением для приложения AppStudio по умолчанию будет 13.0.
  • desktop.allowOverwrite — Если задано как true, это приложение может быть установлено на Windows без удаления его предыдущей версии. Если не задано, то значение по умолчанию false.

В следующем примере все подтвержденные полномочия будут приниматься Android, а минимальные требования к операционным системам для установки приложения для Android и iOS, это версии 6.0 и 13.0, соответственно.

"deployment": {
    "android": {
        "trustUserCertificates": true,
        "minimumSdkVersion": 23,
        "targetSdkVersion": 31
    },
    "ios": {
        "minimumVersion": "13.0"
    }
},

Отображение

Категория отображения уже будет существовать в файле конфигурации appinfo.json и может быть заполнена параметрами, которые были выбраны в разделе Отображение инструмента Настройки. Вы также можете добавить вручную следующие параметры.

  • enableHighDpi — Определяет, будет ли приложение открываться в режиме высокого разрешения на устройствах, где такая возможность поддерживается. Если значение не указано, используется значение по умолчанию false.
  • statusBar — Определяет, будет ли отображаться строка состояния при использовании приложения на любых устройствах iOS и Android. На него не должно оказывать влияния свойство usesStatusBar, которое управляется переключением Строки состояния на вкладке Настройки > Устройства для приложения, которое управляет тем, будет ли строка состояния видна на телефонах и планшетах. Если значение не указано, используется значение по умолчанию false.
  • ios.windowMode — Определяет, как приложение взаимодействует с функциональностью многозадачности iPad, позволяя использовать его вместе с другими приложениями на одном экране. По умолчанию это свойство включено, если портретный или ландшафтный режим отключены в опциях Планшет на вкладке Настройки > Устройства вашего приложения. Для отключения ios.windowMode и разрешения запуска вашего приложения только в полноэкранном режиме iPad задайте значение fullscreen.

В следующем примере включено высокое dpi, строка состояния включена на всех устройствах iOS, а приложение будет работать только в полноэкранном режиме на iPad.

"display": {
    "enableHighDpi": true,
    "statusBar": true,
    "ios": {
       "windowMode": "fullscreen"
    }
},

Make

Категория Make еще не существует в файле конфигурации appinfo.json. Вы можете добавить вручную следующие параметры.

  • ignore — Определяет список схем имен файлов, которые будут исключены из ресурсов приложения при его создании. Это позволяет хранить файлы в элементе приложения, что может быть полезным при разработке и тестировании, но не является необходимым при создании приложения.
  • ios.enableBitcode — Определяет поддержку приложением Bitcode. Apple оптимизирует код приложения для определенных устройств, позволяя устранить необходимость обновления или повторной отправки данных. Bitcode применяется только для приложений iOS и по умолчанию включен на сборках Apple App Store.

Управление

Категория Управление еще не существует в файле конфигурации appinfo.json. Вы можете добавить вручную следующие параметры.

  • configurationSchema — Принимает имя файла или путь к файлу .xml, который содержит настройки приложения по умолчанию, которые используются при развертывании приложения с Enterprise Mobile Management (EMM) ПО. Сведения о форматировании этого файла .xml см. в руководстве разработчика Android по Настройке управляемых конфигураций.
  • android.restrictionFile — Принимает имя файла или путь к файлу .xml, который используется для введения ограничений на устройствах Android. Оно необходимо для использования конфигурации приложения при развертывании приложения с помощью EMM. Сведения о форматировании этого файла .xml см. в руководстве разработчика Android по RestrictionsManager.
  • windows.applicationName — Имя приложения, которому требуются свойства конфигурации приложения, если приложение требует корпоративной конфигурации.
  • windows.keyRoot — Корневой раздел реестра, в котором нужно искать эти свойства конфигурации приложения. Если не задано, по умолчанию равняется HKEY_CURRENT_USER.
  • windows.vendorName — Имя поставщика программного обеспечения, ответственного за приложение. Для приложений Esri, значение равно ESRI.

В следующем примере перечислены файлы конфигурации и параметры, используемые при развертывании приложения с программным обеспечением EMM.

"management": {
     "android": {
         "restrictionFile": "AppConfig_Android.xml"
     },
     "configurationSchema": "AppConfig.xml",
     "windows": {
         "applicationName": "MyApp",
         "keyRoot": "HKEY_CURRENT_USER",
         "vendorName": "MyName"
     }
},

Ресурсы

Категория развертывания уже будет существовать в файле конфигурации appinfo.json и может быть заполнена параметрами, которые были выбраны в разделе Ресурсы инструмента Настройки. Вы также можете добавить вручную следующие параметры.

  • appIconBackgroundColor — Получает значение цвета и определяет цвет заполнения фона для платформ, которые используют строго заданную форму значка. Например, iOS применяет скругленный прямоугольник для значков приложений и автоматически заполняет прозрачные области черным цветом. Если значение не задано, будет применено поведение поведение по умолчанию для данной платформы.
  • launchImageTextColor — Получает значение цвета и определяет цвет текста, который появляется на экране запуска вашего приложения в качестве заставки. Цветом по умолчанию для этого текста является черный, что может быть неудобно в зависимости от экрана заставки вашего приложения.
  • platformName.appIcon — Кроме того, platformName необходимо заменить на используемую платформу. Свойство принимает путь к файлу для определения значка приложения для конкретной платформы. Если для платформы не задан значок, будет использоваться стандартный значок, используемый для приложения.
  • android.adaptiveIcons — Если установлено на true, устройства Android будут отображать адаптивный значок приложения. В разделе ресурсов также следует указать следующие свойства, определяющие пути к файлам элементов адаптивного значка.
    • android.appIcon — Путь к файлу для вызова адаптивного значка. Ссылается на файлы переднего плана и фоновые файлы.
    • android.appIconForeground — Путь к файлу переднего плана адаптивного значка. Это может быть файл .xml или .png.
    • android.appIconBackground — Путь к фоновому файлу адаптивного значка. Это может быть файл .xml или .png.
    • android.appIconBackgroundColor — Кодовое значение цвета, необязательная альтернатива android.appIconBackground. Если определены оба параметра, будет использоваться android.appIconBackground.

В следующем примере кода показан адаптивный значок для Android и уникальные значки для каждой платформы.

"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"
    }
},

Адаптивные значки уникальны для Android и используются для обеспечения того, чтобы значок вашего приложения отображался должным образом в широком диапазоне конфигураций операционной системы. Адаптивные значки могут отображаться в виде кругов, квадратов или промежуточных вариантов. На самом базовом уровне адаптивный значок может состоять из .png на переднем плане и сплошного цвета в качестве фона. Для создания .png можно использовать любой инструмент, но важно убедиться, что ваше изображение имеет достаточный внутренний отступ, чтобы оно не было обрезано маской, применяемой операционной системой. Для получения информации о размере и форме файлов адаптивных значков см. раздел Адаптивные значки. Онлайн-инструменты, такие как EasyAppIcon, можно использовать для создания всех файлов, необходимых для адаптивного значка, но их возможности могут быть ограничены созданием только определенных файлов на выходе. Для лучших результатов в отношении создания адаптивных значков рекомендуется использовать Android Studio.

В приведенном выше примере кода файлы .xml используются как для переднего плана, так и для фона. В следующем примере кода показано содержимое файла ic_launcher.xml, который ссылается на файлы переднего плана и фона.

<?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>

В следующем примере кода показано содержимое файла ic_launcher_background.xml, который описывает сплошной синий фон.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="ic_launcher_background">#3697f0</color>
</resources>

В следующем примере кода показано содержимое файла ic_launcher_foreground.xml, который описывает значок AppStudioПускPlayer как изображение переднего плана.

<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>

Переводы

После того как вы создали файлы переводов для своего приложения, необходимо убедиться, что ссылки на них прописаны в файле appinfo.json. Более подробно о подготовке вашего приложения к переводу и созданию этих файлов можно узнать в разделе Глобализация вашего приложения.

После того как эти файлы окажутся в элементе приложения свойства path и fileName необходимо добавить под новой категорией translations в файле appinfo.json, чтобы задать их местоположение.

Следующий пример объединяет файлы приложения-шаблона Map Viewer:

"translations": {
    "path": "MapViewer/languages",
    "fileName": "MapViewer"
}

После того, как вы добавите приведенный выше пример кода в свой файл appinfo.json, созданное приложение будет использовать файлы в папке языков MapViewer с именем MapViewer_localecode.qm (например, MapViewer_en.qm и MapViewer_ja.qm).

Ключи описания использования

Одним из случаев непосредственного редактирования файла appinfo.json является необходимость добавления ключей описания использования. Это короткие строки, описывающие необходимость использования вашим приложением таких функций, как камера, фоновый захват местоположения или Bluetooth. Это необходимое требование для устройств iOS и macOS, которое не может в данный момент времени использоваться на других платформах. В дальнейшем планируется добавить эти функции в интерфейс пользователя, но в текущий момент они могут быть добавлены только вручную.

Отдельные описания использования должны быть добавлены под заголовком usageDescriptionKeys. Вы можете вставить этот раздел в файл appinfo.json в любой момент. Порядок значений никак не влияет на функциональность. Хотя в добавлении описаний для всех возможностей нет никакого вреда, включая даже те возможности, которые не поддерживаются приложением, строки описания, не являющиеся необходимыми, не включаются в процесс создания приложения.

В следующем примере кода bluetoothUsageDescription не будет использоваться, поскольку приложение не содержит функциональности Bluetooth.

"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."
},

Дополнительные свойства

Некоторые свойства добавляются вне категорий:

queryApps.packageNames - это свойство добавляется вне любого раздела. Оно принимает список имен пакетов приложения, который затем будет запрашиваться функцией isAppInstalled в компоненте AppFramework при использовании на устройствах Android.