Lab 1b: Aggiungere un'app all'immagine
A questo momento verrà caricata un'app (ad esempio l'app IoT Core Predefinita ), creare un pacchetto e creare una nuova immagine di Windows IoT Core che è possibile caricare nel dispositivo.
Nota
Questo processo è identico sia per le app in background che per le app in primo piano. L'unica differenza da tenere presente è che solo un'app in primo piano può essere selezionata come app di avvio e tutte le altre app installate verranno eseguite come app in background.
Prerequisiti/requisiti
Nota
Man mano che si esegue questa guida alla produzione, ProjectA inizierà ad assomigliare all'immagine SampleA presente in C:\IoT-ADK-AddonKit\Source-arm\Products\SampleA.
Verrà usata l'immagine ProjectA creata dal lab 1a: Creare un'immagine di base.
Per completare questa sezione sono necessari anche gli strumenti seguenti:
- Visual Studio
- Windows Assessment and Deployment Kit (Windows ADK)
- Pacchetti Windows IoT Core
- Add-Ons IoT Core ADK
- Ambiente PowerShell di IoT Core
- Un editor di testo come Blocco note o VS Code
Tipi di applicazione supportati
App UWP (Universal Windows Platform)
IoT Core è un sistema operativo incentrato sulla piattaforma UWP e le app UWP sono il tipo di app principale.
piattaforma UWP (Universal Windows Platform) (UWP) è una piattaforma di app comune in tutte le versioni di Windows 10, tra cui Windows 10 IoT Core. La piattaforma UWP è un'evoluzione di Windows Runtime (WinRT). Altre informazioni e una panoramica della piattaforma UWP sono disponibili qui.
App UWP tradizionali
Le app UWP funzionano solo su IoT Core, proprio come fanno in altre edizioni Windows 10. Un'app Xaml semplice e vuota in Visual Studio verrà distribuita correttamente nel dispositivo IoT Core esattamente come in un telefono o in un PC Windows 10. Tutti i linguaggi e i modelli di progetto UWP standard sono completamente supportati in IoT Core.
Esistono alcune aggiunte al modello di app UWP tradizionale per supportare gli scenari IoT e qualsiasi app UWP che sfrutta tali app richiederà le informazioni corrispondenti aggiunte al manifesto. In particolare, lo spazio dei nomi "iot" deve essere aggiunto al manifesto di queste app UWP standard.
All'interno dell'attributo del manifesto è necessario definire iot xmlns e aggiungerlo all'elenco IgnorableNamespaces. Il codice XML finale avrà un aspetto simile al seguente:
<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">
App in background
Oltre alle app dell'interfaccia utente tradizionali, IoT Core ha aggiunto un nuovo tipo di app UWP denominato "Applicazioni in background". Queste applicazioni non hanno un componente dell'interfaccia utente, ma hanno invece una classe che implementa l'interfaccia "IBackgroundTask". Registrano quindi la classe come "StartupTask" per l'esecuzione all'avvio del sistema. Poiché sono ancora app UWP, hanno accesso allo stesso set di API e sono supportate dalla stessa lingua. L'unica differenza è che non esiste alcun punto di ingresso dell'interfaccia utente.
Ogni tipo di IBackgroundTask ottiene i propri criteri di risorsa. Questo è in genere restrittivo per migliorare la durata della batteria e le risorse del computer nei dispositivi in cui queste app in background sono componenti secondari delle app dell'interfaccia utente in primo piano. Nei dispositivi IoT, le app in background sono spesso la funzione principale del dispositivo e quindi questi StartupTask ottengono criteri di risorsa che rispecchiano le app dell'interfaccia utente in primo piano in altri dispositivi.
È possibile trovare informazioni approfondite sulle app in background su MSDN.
App non UWP (Win32)
IoT Core supporta alcuni tipi di app Win32 tradizionali, ad esempio App console Win32 e SERVIZI NT. Queste app vengono compilate ed eseguite allo stesso modo di Windows 10 Desktop. È inoltre disponibile un modello di progetto console C++ di IoT Core per semplificare la compilazione di tali app con Visual Studio.
Esistono due limitazioni principali per queste applicazioni non UWP:
- Nessun supporto legacy dell'interfaccia utente Win32: IoT Core non contiene API per la creazione di Windows classiche (HWND). I metodi legacy, ad esempio CreateWindow() e CreateWindowEx() o qualsiasi altro metodo che gestisce gli handle di Windows (HWND) non sono disponibili. Successivamente, i framework che dipendono da tali API, tra cui MFC, Windows Forms e WPF, non sono supportati in IoT Core.
- Solo app C++: attualmente è supportato solo C++ per lo sviluppo di app Win32 in IoT Core.
Servizio app
I servizi app sono app UWP che forniscono servizi ad altre app UWP. Sono analoghi ai servizi Web, in un dispositivo. Un servizio app è eseguito come attività in background nell'app host e può fornire il proprio servizio ad altre app. Ad esempio, un servizio app potrebbe fornire un servizio scanner di codice a barre utilizzabile da altre app. I servizi app consentono di creare servizi senza interfaccia utente che le app possono chiamare sullo stesso dispositivo e a partire da Windows 10 versione 1607 nei dispositivi remoti. A partire da Windows 10, versione 1607, puoi creare servizi app che vengono eseguiti nello stesso processo dell'app host.
Altre informazioni sulla creazione di un servizio app in background e sull'utilizzo del servizio da un'app uwp (nonché attività/servizi in background) sono disponibili qui.
Espandere l'app con servizi, estensioni e pacchetti
Esistono molte tecnologie in Windows 10 per estendere e componentizzare l'app. Questa tabella consente di determinare la tecnologia da usare in base ai requisiti. Viene seguita da una breve descrizione degli scenari e delle tecnologie.
Scenario | Pacchetto di risorse | Pacchetto asset | Pacchetto facoltativo | Bundle flat | Estensione dell'app | Servizio app | Installazione streaming |
---|---|---|---|---|---|---|---|
Plug-in di codice di terze parti | ✔ | ||||||
Plug-in di codice in-proc | ✔ | ||||||
Asset dell'esperienza utente (stringhe/immagini) | ✔ | ✔ | ✔ | ✔ | ✔ | ||
Contenuto su richiesta (ad esempio livelli aggiuntivi) |
✔ | ✔ | ✔ | ||||
Licenze e acquisizioni separate | ✔ | ✔ | ✔ | ||||
Acquisizione in-app | ✔ | ✔ | |||||
Ottimizzare il tempo di installazione | ✔ | ✔ | ✔ | ✔ | |||
Ridurre il footprint del disco | ✔ | ✔ | |||||
Ottimizzare la creazione di pacchetti | ✔ | ✔ | ✔ | ||||
Ridurre il tempo di pubblicazione | ✔ | ✔ | ✔ | ✔ |
Creare un pacchetto appx
Il primo passaggio consiste nel creare un'applicazione piattaforma UWP (Universal Windows Platform) (UWP) che verrà eseguita nel dispositivo IoT. È possibile ignorare questa sezione se l'applicazione UWP è già stata creata e testata
Creare un'app UWP. Questa può essere qualsiasi app progettata per IoT Core, salvata come pacchetto Appx. Per il nostro esempio, si usa l'app IoT Core Default .
In Visual Studio salvare l'applicazione come pacchetto Appx. A questo scopo, fare clic su Project > Store > Creare pacchettiappper creare pacchetti> per il sideload >successivo
Selezionare Percorso di output come C:\DefaultApp (o qualsiasi altro percorso che non include spazi).
Selezionare Genera bundle di app: Mai
Fare clic su Crea.
Visual Studio crea i file Appx nel percorso specifico per le architetture selezionate (Arm, x86, x64). Nell'esempio, questo file è: C:\DefaultApp\IoTCoreDefaultApp_1.2.0.0_ARM_Debug_Test
- Facoltativo: testare l'app. Nota, è possibile che l'app sia già stata testata come parte della compilazione del progetto.
Creare un pacchetto appx
Il passaggio successivo consiste nel creare il pacchetto del file Appx, che consente di personalizzarlo e compilarlo usando Windows ADK (quando si compila l'immagine FFU).
Aprire
IoTCorePShell.cmd
. Dovrebbe essere richiesto di eseguire come amministratore.Creare il pacchetto per appx usando New-IoTAppxPackage. Sostituire il percorso del file e il nome del pacchetto con il pacchetto Appx. Nell'esempio, il comando è il seguente:
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
Nota
Il parametro fga indica che il file Appx è un'applicazione in primo piano. Se si specifica il pacchetto come applicazione in background (con il parametro bga) e non sono presenti altre applicazioni in primo piano nell'immagine, il sistema verrà bloccato durante l'avvio (visualizza un spinner indefinito).
In questo modo viene creata una nuova cartella in
C:\MyWorkspace\Source-<arch>\Packages\Appx.MyUWPApp
, copia i file appx e le relative dipendenze e genera un file customizations.xml e un file xml del pacchetto usato per compilare il pacchetto.Tenere presente che se appx ha dipendenze, è necessario che la sottodirectory Dipendenze sia presente nella stessa posizione dell'appx quando si esegue questo comando. Non è possibile includere questo errore durante la compilazione dell'immagine FFU.
Questo aggiunge anche un APPX_MYUWPAPP FeatureID al
C:\MyWorkspace\Source-<arch>\Packages\OEMFM.xml
file.Dall'ambiente shell IoT Core è ora possibile compilare il pacchetto in un file .CAB che usa New-IoTCabPackage.
New-IoTCabPackage Appx.MyUWPApp (or) buildpkg Appx.MyUWPApp
Verrà compilato il pacchetto in un file di .CAB in
C:\MyWorkspace\Build\<arch>\pkgs\<oemname>.Appx.MyUWPApp.cab
.
Aggiornare i file di configurazione del progetto
È ora possibile aggiornare i file di configurazione del progetto per includere l'app nell'immagine FFU biuld.
Aggiungere il FeatureID per il pacchetto dell'app usando Add-IoTProductFeature:
Add-IoTProductFeature ProductA Test APPX_MYUWPAPP -OEM (or) addfid ProductA Test APPX_MYUWPAPP -OEM
In questo modo viene aggiunto un FeatureID denominato APPX_HELLOWOLRDAPP al file XML TEST OEMInput XML del prodotto specificato (
C:\IoT\Workspaces\ContosoWS\Source-arm\<product name>\TestOEMInput.xml
file).Rimuovere le app di test di esempio IOT_BERTHA usando Remove-IoTProductFeature
Remove-IoTProductFeature ProductA Test IOT_BERTHA (or) removefid ProductA Test IOT_BERTHA
Compilare e testare l'immagine
Dall'ambiente di PowerShell IoT Core, ottenere l'ambiente pronto per creare prodotti creando tutti i pacchetti nelle cartelle di lavoro (usando New-IoTCabPackage):
New-IoTCabPackage All
(or) buildpkg all
Compilare di nuovo l'immagine FFU, come specificato in Lab 1a: Creare un'immagine di base. Puoi usare questo comando:
New-IoTFFUImage ProductX Test
(or)buildimage ProductX Test
Dopo aver compilato il file FFU (dovrebbe ora includere l'app), è possibile eseguirne il flash al dispositivo hardware come specificato in Lab 1a.
Per informazioni su come installare un file appx in un dispositivo IoT, visualizzare la documentazione installare l'app per altre informazioni.
Argomenti correlati
Aggiornare le app nei dispositivi IoT Core
Passaggi successivi
Lab 1c: Aggiungere un file e un'impostazione del Registro di sistema a un'immagine