Compartilhar via


Laboratório 1b: adicionar um aplicativo à sua imagem

Agora vamos pegar um aplicativo (como o aplicativo Padrão do IoT Core ), empacotá-lo e criar uma nova imagem do Windows IoT Core que você pode carregar em seu dispositivo.

Observação

Esse processo é idêntico para aplicativos em segundo plano e em primeiro plano. A única diferença a ser considerada é que apenas um aplicativo em primeiro plano pode ser selecionado como o aplicativo de inicialização, e todos os outros aps instalados serão executados como aplicativos em segundo plano.

Pré-requisitos/requisitos

Observação

Conforme você percorrer este guia de fabricação, o ProjectA começará a se parecer com a imagem SampleA que está em C:\IoT-ADK-AddonKit\Source-arm\Products\SampleA.

Usaremos a imagem do ProjectA que criamos no Laboratório 1a: Criar uma imagem básica.

Você também precisará das seguintes ferramentas para concluir esta seção:

  • Visual Studio
  • Kit de Avaliação e Implantação do Windows (Windows ADK)
  • Pacotes do Windows IoT Core
  • ADK do IoT Core Add-Ons
  • Ambiente do PowerShell do IoT Core
  • Um editor de texto como o Bloco de Notas ou o VS Code

Tipos de aplicativos compatíveis

Aplicativos da UWP (Plataforma Universal do Windows)

O IoT Core é um sistema operacional centrado em UWP e os aplicativos UWP são seu tipo de aplicativo principal.

Plataforma Universal do Windows (UWP) é uma plataforma de aplicativo comum em todas as versões do Windows 10, incluindo Windows 10 IoT Core. A UWP é uma evolução de Windows Runtime (WinRT). Você pode encontrar mais informações e uma visão geral da UWP aqui.

Aplicativos UWP tradicionais

Os aplicativos UWP funcionam apenas no IoT Core, assim como em outras edições do Windows 10. Um aplicativo Xaml simples e em branco no Visual Studio será implantado corretamente em seu dispositivo IoT Core, assim como faria em um telefone ou computador Windows 10. Todas as linguagens UWP padrão e modelos de projeto têm suporte total no IoT Core.

Há algumas adições ao modelo de aplicativo UWP tradicional para dar suporte a cenários de IoT e qualquer aplicativo UWP que se aproveite deles precisará das informações correspondentes adicionadas ao manifesto. Em particular, o namespace "iot" precisa ser adicionado ao manifesto desses aplicativos UWP padrão.

Dentro do atributo do manifesto, você precisa definir os xmlns iot e adicioná-lo à lista IgnorableNamespaces. O xml final deve ter esta aparência:

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:iot="http://schemas.microsoft.com/appx/manifest/iot/windows10"
  IgnorableNamespaces="uap mp iot">

Aplicativos em Segundo Plano

Além dos aplicativos de interface do usuário tradicionais, o IoT Core adicionou um novo tipo de aplicativo UWP chamado "Aplicativos em Segundo Plano". Esses aplicativos não têm um componente de interface do usuário, mas têm uma classe que implementa a interface "IBackgroundTask". Em seguida, eles registram essa classe como um "StartupTask" para execução na inicialização do sistema. Como eles ainda são aplicativos UWP, eles têm acesso ao mesmo conjunto de APIs e têm suporte do mesmo idioma. A única diferença é que não há nenhum ponto de entrada da interface do usuário.

Cada tipo de IBackgroundTask obtém sua própria política de recursos. Isso geralmente é restritivo para melhorar a duração da bateria e os recursos do computador em dispositivos em que esses aplicativos em segundo plano são componentes secundários de aplicativos de interface do usuário em primeiro plano. Em dispositivos IoT, os Aplicativos em Segundo Plano geralmente são a função principal do dispositivo e, portanto, essas StartupTasks obtêm uma política de recurso que espelha aplicativos de interface do usuário em primeiro plano em outros dispositivos.

Você pode encontrar informações detalhadas sobre aplicativos em segundo plano no MSDN.

Aplicativos não UWP (Win32)

O IoT Core dá suporte a determinados tipos de aplicativos Win32 tradicionais, como Aplicativos de Console Win32 e Serviços NT. Esses aplicativos são criados e executados da mesma maneira que no Windows 10 Desktop. Além disso, há um modelo de projeto do Console do C++ do IoT Core para facilitar a criação desses aplicativos usando o Visual Studio.

Há duas limitações de main nesses aplicativos não UWP:

  1. Sem suporte à interface do usuário herdada do Win32: o IoT Core não contém APIs para criar o Windows clássico (HWND). Métodos herdados como CreateWindow() e CreateWindowEx() ou quaisquer outros métodos que lidam com HWNDs (identificadores do Windows) não estão disponíveis. Posteriormente, não há suporte para estruturas que dependem dessas APIs, incluindo MFC, Windows Forms e WPF, no IoT Core.
  2. Somente aplicativos C++: atualmente, somente o C++ tem suporte para desenvolver aplicativos Win32 no IoT Core.

Serviço de Aplicativo

Os serviços de aplicativo são aplicativos UWP que fornecem serviços a outros aplicativos UWP. Eles são análogos aos serviços da Web em um dispositivo. Um serviço de aplicativo é executado como uma tarefa em segundo plano no aplicativo host e pode fornecer seu serviço a outros aplicativos. Por exemplo, um serviço de aplicativo pode fornecer um serviço de scanner de código de barras que outros aplicativos podem usar. Os serviços de aplicativo permitem que você crie serviços sem interface do usuário que os aplicativos podem chamar no mesmo dispositivo e, a partir do Windows 10, versão 1607, nos dispositivos remotos. A partir do Windows 10, versão 1607, você pode criar serviços de aplicativo que são executados no mesmo processo do aplicativo host.

Informações adicionais sobre como criar um serviço de aplicativo em segundo plano, bem como consumir o serviço de aplicativos uwp (bem como tarefas/serviços em segundo plano) podem ser encontradas aqui.

Estender seu aplicativo com serviços, extensões e pacotes

Há muitas tecnologias no Windows 10 para estender e componentes do seu aplicativo. Esta tabela deve ajudá-lo a determinar qual tecnologia você deve usar dependendo dos requisitos. Ela é seguida por uma breve descrição dos cenários e tecnologias.

Cenário Pacote de recursos Pacote de ativos Pacote opcional Pacote simples Extensão de aplicativo serviço de aplicativo Instalação de streaming
Plug-ins de código de terceiros ✔️
Plug-ins de código em processamento ✔️
Ativos de experiência do usuário (cadeias de caracteres/imagens) ✔️ ✔️ ✔️ ✔️ ✔️
Conteúdo sob demanda
(por exemplo, Níveis adicionais)
✔️ ✔️ ✔️
Licenciamento e aquisição separados ✔️ ✔️ ✔️
Aquisição no aplicativo ✔️ ✔️
Otimizar o tempo de instalação ✔️ ✔️ ✔️ ✔️
Reduzir o volume de disco ✔️ ✔️
Otimizar o empacotamento ✔️ ✔️ ✔️
Reduzir o tempo de publicação ✔️ ✔️ ✔️ ✔️

Criar um pacote appx

A primeira etapa é criar um aplicativo UWP (Plataforma Universal do Windows) que será executado no dispositivo IoT. Você poderá ignorar esta seção se já tiver criado e testado seu aplicativo UWP

  1. Crie um aplicativo UWP. Esse pode ser qualquer aplicativo projetado para o IoT Core, salvo como um Pacote Appx. Para nosso exemplo, estamos usando o aplicativo Padrão do IoT Core .

  2. No Visual Studio, salve seu aplicativo como um pacote Appx. Isso é feito clicando em Criar Pacotes de Aplicativos da Project > Store >que eu quero criar pacotes para sideload próximo>>

  3. Selecione Local de saída como C:\DefaultApp (ou qualquer outro caminho que não inclua espaços).)

  4. Selecione Gerar pacote de aplicativos: Nunca

  5. Clique em Criar.

Captura de tela da janela pacotes de aplicativos

O Visual Studio cria os arquivos Appx em seu local especificado para as arquiteturas selecionadas (Arm, x86, x64). Em nosso exemplo, este arquivo é: C:\DefaultApp\IoTCoreDefaultApp_1.2.0.0_ARM_Debug_Test

  1. Opcional: teste o aplicativo. Observe que talvez você já tenha testado o aplicativo como parte da criação do projeto.

Empacotar o Appx

A próxima etapa é empacotar o arquivo Appx, que permitirá personalizá-lo e compilá-lo usando o Windows ADK (quando você compilar a imagem FFU).

  1. Abra o IoTCorePShell.cmd. Ele deve solicitar que você execute como administrador.

  2. Crie o pacote para seu Appx usando New-IoTAppxPackage. Substitua o local do caminho do arquivo e o nome do pacote pelo pacote Appx. Em nosso exemplo, o comando é o seguinte:

    Add-IoTAppxPackage "C:\DefaultApp\IoTCoreDefaultApp_1.2.0.0_ARM_Debug_Test\IoTCoreDefaultApp_1.2.0.0_ARM_Debug_Test.appx" fga Appx.MyUWPApp
    
    (or) newappxpkg "C:\DefaultApp\IoTCoreDefaultApp_1.2.0.0_ARM_Debug_Test\IoTCoreDefaultApp_1.2.0.0_ARM_Debug_Test.appx" fga Appx.MyUWPApp
    

    Observação

    O parâmetro fga indica que o arquivo Appx é um aplicativo em primeiro plano. Se você especificar seu pacote como um aplicativo em segundo plano (com o parâmetro bga) e não tiver outros aplicativos em primeiro plano na imagem, o sistema ficará preso ao inicializar (exibe um spinner indefinidamente).

    Isso cria uma nova pasta em C:\MyWorkspace\Source-<arch>\Packages\Appx.MyUWPApp, copia os arquivos appx e suas dependências e gera um arquivo customizations.xml, bem como um arquivo xml de pacote usado para compilar o pacote.

    Lembre-se de que, se o Appx tiver dependências, você precisará que o subdiretório Dependências esteja presente no mesmo local que o Appx ao executar esse comando. A falha ao incluir isso resultará em erros ao criar sua imagem FFU.

    Isso também adiciona uma APPX_MYUWPAPP FeatureID ao C:\MyWorkspace\Source-<arch>\Packages\OEMFM.xml arquivo.

  3. No Ambiente do Shell do IoT Core, agora você pode criar o pacote em um arquivo .CAB usando New-IoTCabPackage.

    New-IoTCabPackage Appx.MyUWPApp
    (or) buildpkg Appx.MyUWPApp
    

    Isso criará o pacote em um arquivo .CAB em C:\MyWorkspace\Build\<arch>\pkgs\<oemname>.Appx.MyUWPApp.cab.

Atualizar os arquivos de configuração do projeto

Agora você pode atualizar os arquivos de configuração do projeto para incluir seu aplicativo no biuld de imagem FFU.

  1. Adicione o FeatureID para nosso pacote de aplicativos usando Add-IoTProductFeature:

    Add-IoTProductFeature ProductA Test APPX_MYUWPAPP -OEM
    (or) addfid ProductA Test APPX_MYUWPAPP -OEM
    

    Isso adiciona um FeatureID chamado APPX_HELLOWOLRDAPP ao arquivo XML test OEMInput do produto especificado (C:\IoT\Workspaces\ContosoWS\Source-arm\<product name>\TestOEMInput.xml arquivo).

  2. Remover os aplicativos de teste de exemplo IOT_BERTHA usando Remove-IoTProductFeature

    Remove-IoTProductFeature ProductA Test IOT_BERTHA
    (or) removefid ProductA Test IOT_BERTHA
    

Compilar e testar a imagem

No Ambiente do PowerShell do IoT Core, prepare seu ambiente para criar produtos criando todos os pacotes nas pastas de trabalho (usando New-IoTCabPackage):

New-IoTCabPackage All
(or) buildpkg all

Crie a imagem FFU novamente, conforme especificado no Laboratório 1a: Criar uma imagem básica. Você pode usar este comando:

New-IoTFFUImage ProductX Test
(or)buildimage ProductX Test 

Depois que o arquivo FFU tiver sido compilado (agora ele deve incluir seu aplicativo), você poderá exibi-lo em seu dispositivo de hardware, conforme especificado no Laboratório 1a.

Para saber como instalar um arquivo appx em um dispositivo IoT, exiba a documentação Instalar seu aplicativo para obter mais informações.

Atualizar aplicativos em seus dispositivos IoT Core

Próximas etapas

Laboratório 1c: adicionar um arquivo e uma configuração de registro a uma imagem