Editar appinfo

O arquivo de configuração appinfo.json contém informações definindo a operação do seu aplicativo, armazenadas como pares de valores-chaves. Muitas das propriedades definidas no arquivo são configuradas no AppStudio em Configurações, mas há casos em que você deve adicionar itens ao arquivo manualmente.

Algumas categorias listadas abaixo não estão no arquivo de configuraçãoappinfo.json por padrão. Outras categorias já aparecem no arquivo de configuração, com propriedades que são gerenciadas em Configurações. As propriedades listadas neste tópico são adicionais àquelas definidas em Configurações.

O arquivo appinfo.json pode ser encontrado na pasta principal do seu aplicativo. Para acessá-lo, clique no botão Arquivos para seu aplicativo no ArcGIS AppStudio.

Recursos

A categoria de recursos já existirá no arquivo de configuração appinfo.json e pode ser preenchida com opções que foram selecionadas na seção Recursos da ferramenta Configurações. Você também pode adicionar manualmente qualquer uma das seguintes propriedades.

  • backup—Quando definido como falso, nenhuma cópia de segurança ou restauração do aplicativo jamais será executada no Android e o aplicativo será excluído por cópias de segurança completas do sistema. Se não for especificado, o valor padrão será falso.
  • ios.appTransportSecurity.allowArbitraryLoads—Se definido como falso, as restrições de segurança de transporte serão aplicadas às conexões de rede. Se não for especificado, o valor padrão será falso.
  • interAppFileSharing—Quando definido para verdadeiro, seus arquivos no aplicativo podem ser acessados utilizando o aplicativo Arquivos no iOS. Se não for especificado, o valor padrão será falso.
  • mediaLocation— Quando definido como verdadeiro, seu aplicativo pode recuperar metadados Exif não editados de fotos. Se não for especificado, o valor padrão será falso.
  • indoorLocation—Quando definido como verdadeiro, todos os recursos Bluetooth necessários para posicionamento interno estão ativados. Se não for especificado, o valor padrão será falso.

No exemplo a seguir, nenhuma restrição de segurança de transporte é aplicada.

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

Desenvolvimento

A categoria de implantação já existirá no arquivo de configuração appinfo.json e pode ser preenchida com opções selecionadas nas seções Plataformas e Avançado da ferramenta Configurações. Você também pode adicionar manualmente qualquer uma das seguintes propriedades.

  • android.trustUserCertificates—Configurar essa propriedade como verdadeiro faz com que um aplicativo aceite todas as autoridades de certificação. Por padrão, isso é falso e os aplicativos AppStudio não confiam nas autoridades de certificação adicionadas pelo usuário para conexões seguras no Android.
  • android.minimumSdkVersion—Ele define o nível de API mínimo exigido para o aplicativo executar. Se não for especificado, o valor padrão de um aplicativo AppStudio será 23.
  • android.targetSdkVersion—Ele define o nível de API pretendido para o aplicativo. Também afeta a maneira como o usuário deve conceder as permissões do aplicativo. Se o dispositivo estiver sendo executado no Android 6.0 ou posterior e o SDK de destino do seu aplicativo for 23 ou superior, o usuário deverá solicitar cada permissão que ele precisa enquanto o aplicativo estiver sendo executado. Se não for especificado, o valor padrão de um aplicativo AppStudio será 31 para Make Local e 33 para Make na nuvem. Para mais informações, consulte a ajuda de Console do Google Play .
    Anotação:

    Os usuários locais devem definir deployment.android.targetSdkVersion como 33 no arquivo appinfo.json do aplicativo para atender aos requisitos listados em https://developer.android.com/google/play/requirements/target-sdk.

  • android.enableGooglePlayServicesSecurityProvider—Controla se o seu aplicativo solicita o provedor de segurança do Google Play para garantir que o aplicativo esteja sendo executado em um dispositivo com as atualizações mais recentes para protegê-lo de explorações conhecidas. Se não for especificado, o valor padrão de um aplicativo AppStudio será falso.
  • ios.minimumVersion—Ele define a versão mínima do sistema operacional no qual seu software pode executar. Se não for especificado, o valor padrão de um aplicativo AppStudio será 13.0.
  • desktop.allowOverwrite—Se definido para true, o aplicativo pode ser instalado no Windows sem desinstalar uma versão anterior do aplicativo. Se não for especificado, o valor padrão será falso.

No exemplo a seguir, todas as autoridades certificadas serão aceitas no Android e os sistemas operacionais mínimos que o aplicativo pode ser instalado Android e iOS são 6.0 e 13.0 respectivamente.

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

Exibir

A categoria de exibição já existirá no arquivo de configuração appinfo.json e pode ser preenchida com opções que foram selecionadas na seção Exibir da ferramenta Configurações. Você também pode adicionar manualmente qualquer uma das seguintes propriedades.

  • enableHighDpi—Isso determina se o aplicativo será aberto no modo alto DPI em dispositivos que suportam esse modo. Se não for especificado, o valor padrão será falso.
  • statusBar—Ele define se a barra de status aparece ao usar seu aplicativo em qualquer dispositivo iOS e Android. Isto não deve ser confundido com a propriedade usesStatusBar definida nas opções Barra de Status nas Configurações > Dispositivos para o seu aplicativo, que controla se a barra de status será exibida em celulares ou tablets. Se não for especificado, o valor padrão será falso.
  • ios.windowMode—Ele define como o aplicativo interage com o recurso Multitarefa do iPad, permitindo que o aplicativo seja utilizado ao lado de outros aplicativos na mesma tela. Por padrão, esta propriedade é habilitada se o modo retrato ou paisagem estiver desabilitado nas opções do Tablet na guia Configurações > Dispositivos do seu aplicativo. Para desabilitar ios.windowMode, permita que seu aplicativo seja executado apenas na tela inteira do iPad, defina-o como fullscreen.

No exemplo a seguir, alto DPI está habilitado, a barra de status está habilitada em todos os dispositivos iOS e o aplicativo só será executado em tela inteira em um iPad.

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

Criar

A categoria make ainda não existe no arquivo de configuração appinfo.json. Você pode adicionar manualmente qualquer uma das seguintes propriedades.

  • ignore—Isto define uma lista de padrões de nome do arquivo a serem excluídos dos recursos do aplicativo quando construído. Isto permite que os arquivos sejam mantidos no item do aplicativo que são úteis durante o desenvolvimento e testes, mas não são necessários ao criar o aplicativo.
  • ios.enableBitcode—Isto determina se o aplicativo suporta Bitcode. A Apple otimiza o binário do aplicativo para dispositivos específicos sem a necessidade de atualizar ou reenviar. Bitcode está somente disponível para aplicativos iOS e está habilitado por padrão em compilações da Apple App Store.

Gerenciamento

A categoria de gerenciamento ainda não existe no arquivo de configuração appinfo.json. Você pode adicionar manualmente qualquer uma das seguintes propriedades.

  • configurationSchema—Isto aceita um nome de arquivo ou caminho para um arquivo .xml que contenha padrões de configuração do aplicativo utilizados ao implantar seu aplicativo com software Enterprise Mobile Management (EMM). Para obter informações sobre como formatar este arquivo .xml, consulte a referência do desenvolvedor do Android para Definir configurações gerenciadas.
  • android.restrictionFile—Isto aceita um nome de arquivo ou caminho para um arquivo .xml utilizado para impor restrições aos dispositivos Android. Isto é necessário para utilizar a configuração do aplicativo ao implantar seu aplicativo com o software EMM. Para informações sobre como formatar este arquivo .xml, consulte a referência de desenvolvedor do Android para RestrictionsManager.
  • windows.applicationName—O nome do aplicativo que precisa de propriedades de configuração de aplicativo, se o aplicativo requer configuração corporativa.
  • windows.keyRoot—A raiz da chave de registro sob a qual procurar essas propriedades de configuração do aplicativo. Se não for especificado, este padrão será HKEY_CURRENT_USER.
  • windows.vendorName—O nome do fornecedor do software responsável pelo aplicativo. Para aplicativos da Esri, o valor será ESRI.

No exemplo a seguir, os arquivos de configuração e os parâmetros usados ​​ao implementar o aplicativo com o software EMM são listados.

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

Recursos

A categoria de implantação já existirá na configuração do arquivo appinfo.json e pode ser preenchida com opções selecionadas nas seções Recursos da ferramenta Configurações. Você também pode adicionar manualmente qualquer uma das seguintes propriedades.

  • appIconBackgroundColor—Isto aceita um valor de cor hexadecimal e define a cor de preenchimento do plano de fundo das plataformas que obrigam um formato de ícone específico. Por exemplo, o iOS exige um retângulo arredondado para ícones de aplicativos e preenche automaticamente áreas transparentes com preto. Se nenhum valor for fornecido, o comportamento padrão da plataforma será aplicado.
  • launchImageTextColor—Isto aceita um valor de cor hexadecimal e define a cor do texto que aparece na tela inicial do seu aplicativo. A cor padrão para este texto é preta, que pode ser difícil de visualizar dependendo da tela inicial do seu aplicativo.
  • platformName.appIcon—Além disso, o platformName deve ser substituído pela plataforma que você usa. Isto aceita um caminho de arquivo para definir um ícone de aplicativo da plataforma específica. Se um ícone não for fornecido para uma plataforma, o ícone geral fornecido pelo aplicativo será utilizado.
  • android.adaptiveIcons—Quando definido como verdadeiro, os dispositivos Android mostrarão o ícone adaptável do aplicativo. As propriedades a seguir também devem ser especificadas em recursos, definindo caminhos de arquivo para elementos do ícone adaptável.
    • android.appIcon—Caminho do arquivo para o inicializador do ícone adaptável. Faz referência aos arquivos de primeiro e segundo plano.
    • android.appIconForeground—Caminho do arquivo para o primeiro plano do ícone adaptável. Pode ser um arquivo .xml ou .png.
    • android.appIconBackground—Caminho do arquivo para o plano de fundo do ícone adaptável. Pode ser um arquivo .xml ou .png.
    • android.appIconBackgroundColor—Valor de cor hexadecimal, uma alternativa opcional para android.appIconBackground. Se ambos forem definidos, android.appIconBackground será utilizado.

O exemplo de código a seguir mostra um ícone adaptável para Android e ícones exclusivos para cada plataforma.

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

Os ícones adaptáveis ​​são exclusivos para Android e usados ​​para garantir que o ícone do seu aplicativo seja exibido conforme o esperado em uma ampla variedade de configurações de sistema operacional. Os ícones adaptáveis ​​podem ser mostrados como círculos, quadrados ou variações entre eles. No nível mais básico, um ícone adaptável pode ser feito de um .png no primeiro plano e uma cor sólida como plano de fundo. Qualquer ferramenta pode ser usada para criar o .png, mas é importante garantir que sua imagem tenha preenchimento suficiente para não ser cortada pela máscara aplicada pelo sistema operacional. Para a especificação de tamanho e forma de arquivos de ícone adaptáveis, consulte Ícones adaptáveis. Ferramentas online como EasyAppIcon podem ser usadas para criar todos os arquivos necessários para um ícone adaptável, mas podem ser limitadas a apenas criar saídas de arquivo específicas. Para obter a melhor experiência na criação de ícones adaptáveis, é recomendável usar o Android Studio.

No código de exemplo acima, os arquivos .xml são usados ​​para primeiro e segundo planos. O exemplo de código a seguir mostra o conteúdo do arquivo ic_launcher.xml que faz referência aos arquivos de primeiro e segundo plano.

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

O código de amostra a seguir mostra o conteúdo do arquivo ic_launcher_background.xml, que descreve um fundo azul sólido.

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

O código de exemplo a seguir mostra o conteúdo do arquivo ic_launcher_foreground.xml, que descreve Ícone Executar do AppStudio Player como a imagem de primeiro plano.

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

Traduções

Após você ter gerado arquivos de tradução para seu aplicativo, você deve assegurar que eles sejam referenciados no arquivo appinfo.json. Para mais informações sobre como preparar seu aplicativo para tradução e gerar estes arquivos, consulte Globalizar seu aplicativo.

Assim que esses arquivos estiverem presentes no item do seu aplicativo, as propriedades path e fileName devem ser adicionado em uma nova categoria do translations no arquivo appinfo.json para anotar sua localização.

O seguinte exemplo associa os arquivos de um aplicativo de modelo do Map Viewer:

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

Após adicionar o exemplo de código acima ao seu arquivo appinfo.json, o aplicativo construído usa arquivos na pasta de idiomas do MapViewer denominada MapViewer_localecode.qm (por exemplo, MapViewer_en.qm e MapViewer_ja.qm).

Chaves de descrição de uso

Um caso comum para editar o arquivo appinfo.json diretamente é adicionar chaves de descrição de uso. Estas são strings curtas que descrevem o motivo do seu aplicativo solicitar o uso funcionalidades, tais como, câmera, captura de local de segundo plano ou Bluetooth. Este é um requisito para os dispositivos da iOS e macOS não podem ser utilizados atualmente em outras plataformas. Embora isto seja destinado a ser implementado como um item da interface de usuário no futuro, atualmente você deve adicioná-lo manualmente.

Você deve adicionar as descrições de uso individual abaixo do cabeçalho usageDescriptionKeys. Você pode inserir esta seção no arquivo appinfo.json a qualquer momento. A ordem dos valores não faz nenhuma diferença para funcionalidade. Enquanto não houver nenhum dano em incluir descrições para todos os recursos, inclusive estes não suportados pelo aplicativo, descrição desnecessária de strings não serão incluídas no processo de construção do aplicativo.

Na seguinte amostra de código, bluetoothUsageDescription não seria utilizado, pois o aplicativo não tem a funcionalidade de 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."
},

Propriedades adicionais

A seguinte propriedade foi adicionada fora de qualquer categoria:

queryApps.packageNames—Esta propriedade é adicionada fora de qualquer seção. Esta aceita uma lista de nomes de pacotes de aplicativos, que serão consultados pela função isAppInstalled no componente AppFramework quando usado em dispositivos Android.