Lab 1b: 이미지에 앱 추가

이제 앱 (예: iot core 기본 앱)을 사용 하 여 패키지 하 고 장치에 로드할 수 있는 새로운 Windows IoT core 이미지를 만듭니다.

참고

이 프로세스는 백그라운드 및 포그라운드 앱 모두에서 동일 합니다. 유일 하 게 알고 있는 유일한 차이점은 하나의 포그라운드 앱만 시작 앱으로 선택할 수 있고, 설치 된 다른 모든 ap는 백그라운드 앱으로 실행 된다는 것입니다.

필수 구성 요소/요구 사항

참고

이 제조 가이드를 진행 하면서 ProjectA는 C:\IoT-ADK-AddonKit\Source-arm\Products\SampleA.에 있는 SampleA 이미지와 비슷하게 시작 됩니다.

Lab 1a: 기본 이미지 만들기에서 만든 ProjectA 이미지를 사용 합니다.

또한이 섹션을 완료 하려면 다음 도구가 필요 합니다.

  • Visual Studio
  • Windows ADK(평가 및 배포 키트)
  • IoT Core 패키지 Windows
  • IoT Core ADK Add-Ons
  • IoT Core Powershell 환경
  • 메모장 또는 VS Code와 같은 텍스트 편집기

지원되는 애플리케이션 유형

UWP(유니버설 Windows 플랫폼) 앱

IoT Core는 UWP 중심 OS 이며 UWP 앱은 기본 앱 유형입니다.

UWP (유니버설 Windows 플랫폼)는 Windows 10 IoT Core를 포함 하 여 모든 버전의 Windows 10에서 일반적인 앱 플랫폼입니다. UWP는 WinRT (Windows 런타임)의 진화입니다. 여기에서 UWP에 대 한 자세한 내용 및 개요를 확인할 수 있습니다.

기존 UWP 앱

UWP 앱은 다른 Windows 10 버전과 마찬가지로 IoT 코어 에서만 작동 합니다. Visual Studio의 간단한 빈 Xaml 앱은 휴대폰 이나 Windows 10 PC에서와 마찬가지로 IoT Core 장치에 제대로 배포 됩니다. 모든 표준 UWP 언어 및 프로젝트 템플릿은 IoT Core에서 완벽 하 게 지원 됩니다.

IoT 시나리오를 지원 하기 위해 기존 UWP 앱 모델에 몇 가지 추가 사항이 있으며이를 활용 하는 모든 UWP 앱에는 매니페스트에 추가 된 해당 정보가 필요 합니다. 특히 "iot" 네임 스페이스를 이러한 표준 UWP 앱의 매니페스트에 추가 해야 합니다.

매니페스트의 특성 내에서 iot xmlns를 정의 하 고 IgnorableNamespaces 목록에 추가 해야 합니다. 최종 xml은 다음과 같습니다.

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

배경 앱

기존 UI 앱 외에도 IoT Core에는 "백그라운드 응용 프로그램" 이라는 새로운 UWP 앱 유형이 추가 되었습니다. 이러한 응용 프로그램에는 UI 구성 요소가 없지만 대신 "IBackgroundTask" 인터페이스를 구현 하는 클래스가 있습니다. 그런 다음 해당 클래스를 시스템 부팅 시 실행할 "StartupTask"로 등록 합니다. 이러한 앱은 여전히 UWP 앱 이므로 동일한 Api 집합에 액세스할 수 있으며 동일한 언어로 지원 됩니다. 유일한 차이점은 UI 진입점이 없다는 점입니다.

각 유형의 IBackgroundTask는 자체 리소스 정책을 가져옵니다. 일반적으로 이러한 백그라운드 앱이 포그라운드 UI 앱의 보조 구성 요소인 장치에서 배터리 수명 및 컴퓨터 리소스를 개선 하는 것이 제한적입니다. IoT 장치에서 백그라운드 앱은 종종 장치의 기본 기능 이므로 이러한 StartupTasks는 다른 장치에서 포그라운드 UI 앱을 미러링 하는 리소스 정책을 받게 됩니다.

MSDN의 백그라운드 앱에 대 한 자세한 정보를 찾을 수 있습니다.

비 UWP (Win32) 앱

IoT Core는 Win32 콘솔 앱 및 NT 서비스와 같은 특정 기존 Win32 앱 유형을 지원 합니다. 이러한 앱은 Windows 10 데스크톱과 동일한 방식으로 빌드되고 실행 됩니다. 또한 Visual Studio를 사용 하 여 이러한 앱을 쉽게 빌드할 수 있도록 하는 IoT Core c + + 콘솔 프로젝트 템플릿이 있습니다.

이러한 비 UWP 응용 프로그램에는 두 가지 주요 제한 사항이 있습니다.

  1. 레거시 Win32 UI 지원 안 함: IoT Core는 클래식 (HWND) Windows을 만드는 Api를 포함 하지 않습니다. CreateWindow () 및 CreateWindowEx ()와 같은 레거시 메서드나 hwnd (Windows 핸들)를 처리 하는 다른 메서드는 사용할 수 없습니다. 이후에 MFC, Windows Forms 및 WPF를 포함 하 여 이러한 api에 의존 하는 프레임 워크는 IoT Core에서 지원 되지 않습니다.
  2. C + + 앱에만 해당: 현재 c + +만 IoT Core에서 Win32 앱을 개발 하는 데 사용할 수 있습니다.

App Service

App services는 다른 UWP 앱에 서비스를 제공 하는 UWP 앱입니다. 장치에서 웹 서비스와 유사 합니다. 앱 서비스는 호스트 앱에서 배경 작업으로 실행되며 다른 앱에 서비스를 제공할 수 있습니다. 예를 들어, 앱 서비스는 다른 앱에서 사용할 수 있는 바코드 스캐너 서비스를 제공할 수 있습니다. 앱 서비스를 사용 하면 앱이 동일한 장치에서 호출할 수 있는 UI 없는 서비스를 만들 수 있으며, Windows 10 버전 1607부터 원격 장치에 사용할 수 있습니다. Windows 10 버전 1607부터 호스트 앱과 동일한 프로세스에서 실행 되는 앱 서비스를 만들 수 있습니다.

Background app service를 만들고 uwp 앱에서 서비스를 사용 하는 것과 관련 된 추가 정보 (백그라운드 작업/서비스)는 여기에서 찾을 수 있습니다.

서비스, 확장 및 패키지로 앱 확장

앱을 확장 하 고 componentizing 하는 Windows 10에는 여러 기술이 있습니다. 이 표는 요구 사항에 따라 사용 해야 하는 기술을 결정 하는 데 도움이 됩니다. 그리고 시나리오와 기술에 대 한 간략 한 설명이 나옵니다.

시나리오 리소스 패키지 자산 패키지 선택적 패키지 플랫 번들 앱 확장 App Service 스트리밍 설치
타사 코드 플러그 인 ✔️
In-proc 코드 플러그 인 ✔️
UX 자산 (문자열/이미지) ✔️ ✔️ ✔️ ✔️ ✔️
주문형 콘텐츠
(예: 추가 수준)
✔️ ✔️ ✔️
별도 라이선스 및 취득 ✔️ ✔️ ✔️
앱에서 가져오기 ✔️ ✔️
설치 시간 최적화 ✔️ ✔️ ✔️ ✔️
디스크 공간 줄이기 ✔️ ✔️
패키징 최적화 ✔️ ✔️ ✔️
게시 시간 단축 ✔️ ✔️ ✔️ ✔️

Appx 패키지 만들기

첫 번째 단계는 IoT 장치에서 실행 되는 UWP (유니버설 Windows 플랫폼) 응용 프로그램을 만드는 것입니다. UWP 응용 프로그램을 이미 만들고 테스트 한 경우이 섹션을 건너뛸 수 있습니다.

  1. UWP 앱을 만듭니다. 이는 IoT Core 용으로 설계 된 앱으로, Appx 패키지로 저장 됩니다. 이 예에서는 IoT Core 기본 앱을 사용 합니다.

  2. Visual Studio에서 응용 프로그램을 Appx 패키지로 저장 합니다. 이 작업을 수행 하려면 Project 스토어 > 응용 프로그램 패키지 만들기를 클릭 하 여 >>>> .

  3. 출력 위치 를 C:\DefaultApp (또는 공백이 포함 되지 않은 다른 경로)로 선택 합니다.

  4. 앱 번들 생성: 없음을 선택 합니다.

  5. 만들기를 클릭합니다.

Screenshot of app packages window

Visual Studio 선택한 아키텍처에 대해 지정 된 위치에 Appx 파일을 만듭니다 (ARM, x86, x64). 이 예제에서이 파일은 C:\DefaultApp\ IoTCoreDefaultApp_1.2.0.0 _ARM_Debug_Test입니다.

  1. 선택 사항: 응용 프로그램을 테스트합니다. 프로젝트를 빌드하는 과정에서 앱을 이미 테스트 했을 수 있습니다.

Appx 패키지

다음 단계는 Appx 파일을 패키징하 며,이 파일을 사용자 지정 하 고 Windows ADK (ffu 이미지를 빌드할 때)를 사용 하 여 빌드할 수 있습니다.

  1. IoTCorePShell.cmd 엽니다. 관리자 권한으로 실행 하 라는 메시지가 표시 됩니다.

  2. IoTAppxPackage를 사용 하 여 Appx에 대 한 패키지를 만듭니다. 파일 경로 위치 및 패키지 이름을 Appx 패키지로 바꿉니다. 이 예제에서 명령은 다음과 같습니다.

    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
    

    참고

    Fga 매개 변수는 Appx 파일이 포그라운드 응용 프로그램 임을 나타냅니다. Bga 매개 변수를 사용 하 여 패키지를 백그라운드 응용 프로그램으로 지정 하 고 이미지에 다른 전경 응용 프로그램이 없는 경우에는 부팅할 때 시스템이 정지 됩니다 (회전자를 무기한 표시 함).

    이렇게 하면에서 새 폴더를 만들고 C:\MyWorkspace\Source-<arch>\Packages\Appx.MyUWPApp , appx 파일 및 해당 종속성을 복사 하 고, 패키지를 작성 하는 데 사용 되는 패키지 xml 파일 뿐만 아니라 customizations.xml 파일을 생성 합니다.

    Appx에 종속성이 있는 경우이 명령을 실행할 때 Appx와 동일한 위치에 종속성 하위 디렉터리가 있어야 합니다. 이를 포함 하지 않으면 FFU 이미지를 빌드할 때 오류가 발생 합니다.

    또한 파일에 FeatureID APPX_MYUWPAPP 를 추가 합니다.

  3. 이제 IoT 코어 셸 환경에서 새 IoTCabPackage를 사용 하 여 .CAB fileusing 패키지를 빌드할 수 있습니다.

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

    그러면에서 패키지를 .CAB 파일로 작성 C:\MyWorkspace\Build\<arch>\pkgs\<oemname>.Appx.MyUWPApp.cab 합니다.

프로젝트의 구성 파일 업데이트

이제 프로젝트 구성 파일을 업데이트 하 여 FFU 이미지 biuld에 앱을 포함할 수 있습니다.

  1. 추가-I이상 제품 기능을 사용 하 여 앱 패키지에 대 한 featureid를 추가 합니다.

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

    그러면 지정 된 제품의 테스트 OEMInput XML 파일 (파일)에 APPX_HELLOWOLRDAPP 이라는 featureid가 추가 됩니다.

  2. Remove- I\\ststo 기능을 사용 하 여 샘플 테스트 앱 IOT_BERTHA 제거

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

이미지를 빌드하고 테스트 합니다.

IoT Core PowerShell 환경에서 작업 폴더에 모든 패키지를 빌드하여 (새로운-IoTCabPackage를 사용 하 여) 제품을 만들 준비가 된 환경을 제공 합니다.

New-IoTCabPackage All
(or) buildpkg all

Lab 1a: 기본 이미지 만들기에 지정 된 대로 ffu 이미지를 다시 빌드합니다. 다음 명령을 사용할 수 있습니다.

New-IoTFFUImage ProductX Test
(or)buildimage ProductX Test 

FFU 파일이 빌드된 후 (이제 앱을 포함 해야 함) Lab 1a에 지정 된 대로 하드웨어 장치로 플래시 할 수 있습니다.

IoT 장치에 appx 파일을 설치 하는 방법에 대 한 자세한 내용은 앱 설치 설명서를 참조 하세요.

IoT Core 장치에서 앱 업데이트

다음 단계

랩 1c: 이미지에 파일 및 레지스트리 설정 추가