유니버설 Windows 8 앱 빌드

유니버설 Windows 8 앱 빌드

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

여러 Windows 장치에서 실행되는 앱을 빌드할 수 있습니다.

Windows 8.1 장치를 대상으로 하는 경우 솔루션은 하나이지만 별도의 두 앱을 빌드합니다. PC 또는 태블릿용 앱 하나와 Windows Phone용 앱 하나를 빌드합니다. Visual Studio에서는 이러한 두 장치용 앱을 동시에 빌드하고 두 프로젝트 간에 코드, 사용자 컨트롤, 스타일, 문자열 및 기타 자산을 공유할 수 있습니다. 따라서 각 장치 유형용 앱을 빌드하고 유지 관리하는 시간과 비용을 줄일 수 있습니다.

Windows 10 장치를 대상으로 하는 경우 역시 솔루션은 하나이지만 모든 Windows 10 장치에서 실행되는 앱 하나를 빌드하므로 거의 모든 항목을 공유함을 의미합니다. Windows 10 장치를 대상으로 하는 Windows 10 유니버설 앱을 빌드하는 방법을 알아봅니다.

Windows 8.1 장치를 대상으로 하는 Windows 8.1 유니버설 앱을 빌드하려면 Microsoft Visual Studio 2013 또는 Microsoft Visual Studio 2015를 설치합니다. 도구를 다운로드하세요. Visual Studio는 다양한 플랫폼용 앱의 만들기, 코딩, 디버그, 지역화, 패키징 및 배포에 사용할 수 있는 도구 모음입니다. 즉, Microsoft Visual Studio는 앱을 개발하는 데 필요한 모든 작업을 지원합니다.

Visual Studio를 사용해 본 적이 없는 경우에는 코드를 작성하기 전에 내용을 간단히 살펴보세요. Visual Studio는 많은 부분으로 이루어져 있지만, 시작하기 전에 모두 알 필요는 없습니다. 여기에서 IDE에 대한 자세한 정보를 알아보세요.

Windows 스토어 앱이 이미 있는 경우 동일한 솔루션에 Windows Phone 스토어 앱을 쉽게 추가할 수 있습니다. 마찬가지로, Windows Phone 스토어 앱을 먼저 만든 경우에도 Windows 스토어 앱을 쉽게 추가할 수 있습니다. 그런 다음 두 앱 간의 공유 코드를 활용합니다.

개발자 라이선스 얻기

먼저 개발자 라이선스를 받습니다. Windows 스토어 앱을 개발하고 테스트하는 라이선스가 있어야 스토어가 앱을 인증할 수 있습니다.

Visual Studio를 처음 실행하면 개발자 라이선스를 다운로드하라는 메시지가 표시됩니다. 사용 조건을 읽고 동의하면 동의함을 클릭합니다. UAC(사용자 계정 컨트롤) 대화 상자에서 를 클릭하여 계속합니다.

Windows Phone 8을 등록하여 Windows Phone 스토어 앱 테스트

실제 전화에서 Windows Phone 스토어 앱을 테스트하는 것이 중요합니다. 개발을 위해 휴대폰을 등록해야 Windows Phone 8에 앱을 배포할 수 있습니다. 전화를 등록한 후 전화에서 앱을 설치, 실행 및 디버그할 수 있습니다.

개발을 위해 Windows Phone 8 장치를 등록하는 방법에 대해 알아봅니다.

Windows 8.1 유니버설 앱 작성 시작

시작하려면 새 프로젝트 대화 상자에서 Windows 8.1 유니버설 앱에 사용할 프로젝트 템플릿을 선택합니다.

다음 스크린샷은 C#에서 현재 사용할 수 있는 Windows 8.1 유니버설 앱 프로젝트 템플릿을 보여 줍니다. Visual C++에도 유사한 Windows 8.1 유니버설 앱용 템플릿 집합이 있습니다.

Visual Studio의 범용 프로젝트 템플릿

Windows 8.1 유니버설 앱용 템플릿을 선택하고 솔루션을 만드는 경우 다음 세 가지 프로젝트가 솔루션 탐색기에 표시됩니다.

  1. Windows 프로젝트
  2. Windows Phone 프로젝트
  3. 공유 프로젝트

다음 스크린샷은 Visual Studio에서 비어 있는 앱(범용 앱)에 사용할 프로젝트 템플릿을 선택할 때 만드는 솔루션을 보여줍니다.

솔루션 탐색기의 수렴형 프로젝트

  • Windows 스토어 프로젝트에는 Windows를 대상으로 하는 XAML 페이지와 코드가 포함되어 있습니다.

  • Windows Phone 프로젝트에는 Windows Phone을 대상으로 하는 XAML 페이지와 코드가 포함되어 있습니다.

  • 공유 프로젝트는 두 플랫폼에서 모두 실행되는 코드에 대한 컨테이너입니다. 공유 프로젝트의 콘텐츠는 Windows Phone 및 Windows 스토어 프로젝트 및 해당 빌드 출력에 모두 자동으로 포함됩니다.

빌드. 솔루션을 빌드하면 Microsoft Visual Studio에서 Windows Phone 스토어 앱과 Windows 스토어 앱을 빌드합니다. 공유 프로젝트에서는 빌드 출력이 없습니다.

시작 프로젝트.F5 키를 누르는 등의 방법으로 솔루션을 실행하면 시작 프로젝트로 선택한 프로젝트가 실행됩니다. 시작 프로젝트를 설정하려면 솔루션 탐색기의 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 시작 프로젝트로 설정을 선택합니다. 선택한 프로젝트가 솔루션 탐색기에 굵게 표시됩니다. 이전 스크린샷에서는 App1.Windows(Windows 8.1)가 시작 프로젝트입니다.

디버그 대상.

  • Windows 프로젝트가 시작 프로젝트이면 디버그 대상 드롭다운에 Windows 시뮬레이터 또는 로컬 컴퓨터의 옵션이 표시됩니다.
  • Phone 프로젝트가 시작 프로젝트이면 드롭다운에 장치뿐 아니라 다양한 휴대폰 에뮬레이터의 옵션도 표시됩니다.
  • C++ Phone 프로젝트에서는 장치 옵션을 표시하고 실제 장치에 앱을 배포하려면 수동으로 빌드 구성을 ARM 플랫폼으로 설정해야 합니다. Win32 구성은 전화 에뮬레이터에만 사용됩니다. 프로젝트 | 속성 | 구성 관리자 | 플랫폼으로 이동하여 플랫폼을 설정합니다.

비어 있는 앱 대신 허브 앱(범용 앱) 템플릿으로 시작하는 것이 좋습니다. 허브는 이전 Windows Phone 버전의 파노라마에 해당합니다. 허브 앱 템플릿은 세 페이지로 구성된 앱을 만듭니다. 범용 앱 범주에서 허브 앱 템플릿을 찾을 수 있습니다. 허브 앱 프로젝트 템플릿에 대한 자세한 내용은 Visual Studio 템플릿을 참조하세요.

다음 스크린샷은 새 프로젝트 대화 상자에서 선택한 허브 앱 프로젝트 템플릿을 보여 줍니다.

Visual Studio의 허브 앱 템플릿

공유 프로젝트에서 플랫폼 간 코드 작성

공유 프로젝트에서는 일반적으로 두 플랫폼에서 모두 실행되는 코드를 작성합니다.

플랫폼 관련 코드 섹션을 분리하려면 #ifdef 지시문을 사용합니다. 편의를 위해 상수 WINDOWS_APPWINDOWS_PHONE_APP이(가) 미리 정의되어 있습니다. C++에서는 이 지시문을 사용하여 Phone 관련 코드(#if WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP...#endif)를 격리합니다.

파일을 플랫폼 관련 프로젝트 중 하나에서 공유 프로젝트로(또는 그 반대) 끌어다 놓는 방식으로 코드 범위를 변경할 수도 있습니다.

플랫폼별 코드 식별 및 분리

공유 프로젝트에서 코드를 작성하는 경우 Visual Studio 코드 편집기는 플랫폼 중 하나를 대상으로 하는 컨텍스트를 사용합니다. C#으로 코드를 작성할 때 표시되는 IntelliSense는 코드 편집기 컨텍스트, 즉 Windows 또는 Windows Phone과 관련이 있습니다.

다음 스크린샷은 탐색 모음의 컨텍스트 전환기를 보여 줍니다.

코드 편집기의 컨텍스트 전환기 드롭다운 목록

공유 코드에 두 플랫폼에서 모두 지원되지 않는 API를 사용하면 프로젝트를 빌드할 때 오류 메시지가 이 API를 식별합니다. 플랫폼 간 API를 사용하고 있는지 확인하기 위해 프로젝트를 빌드할 필요가 없습니다. 코드 편집기에서 다음 중 하나를 확인합니다.

  • 경고 아이콘 및 Intellisense 텍스트를 살펴봅니다.

    다음 스크린샷은 Windows Phone 스토어 앱에서만 지원되는 형식에 대한 경고 아이콘 및 Intellisense의 예를 보여 줍니다.

    경고 아이콘 및 Intellisense

  • 컨텍스트 전환기에서 편집기 컨텍스트를 다른 플랫폼으로 전환합니다. 그러면 선택한 플랫폼에서 지원되지 않는 API 아래에 구불구불한 선이 표시됩니다. C++에서 보라색 구불구불한 선은 컨텍스트를 전환하거나 프로젝트를 빌드하지 않을 경우 API가 다른 플랫폼에서 지원되지 않는지 여부를 나타냅니다.

플랫폼 관련 API를 식별한 후에는 #ifdef 지시문을 사용하여 공유 코드에서 이러한 API를 분리합니다.

Windows 또는 Windows Phone에 대한 지원 추가

Windows 스토어 앱을 이미 게시한 경우 쉽게 일부 코드를 다시 사용하여 Windows Phone용 앱 버전을 게시할 수 있습니다. 마찬가지로, Windows Phone 앱을 먼저 만든 경우 솔루션을 수정하여 Windows 태블릿 및 데스크톱용으로도 빌드할 수 있습니다. 두 장치 유형 중 하나에 대한 지원을 추가하려면 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 Windows Phone 8.1 추가 또는 Windows 8.1 추가를 선택합니다.

Windows Phone 8.1 프로젝트 추가

Visual Studio에서 솔루션에 새 Windows Phone 또는 Windows 스토어 프로젝트를 추가합니다. Visual Studio에서 공유 프로젝트도 추가합니다.

다음 스크린샷은 Windows Phone 프로젝트를 기존 Windows 스토어 프로젝트에 추가한 후의 솔루션을 보여 줍니다.

솔루션에 추가된 Phone 프로젝트솔루션에 추가된 Phone 프로젝트

공유 프로젝트로 파일 이동

앱 간에 공유하려는 코드를 공유 프로젝트로 이동할 수 있습니다. 예를 들어 Visual Studio 템플릿을 사용하여 앱을 만든 경우 Common, DataModelStrings 폴더를 공유 프로젝트로 이동하는 것이 좋습니다. 이 항목 뒷부분에 설명된 바와 같이 App.xaml을 공유 프로젝트로 이동할 수도 있습니다.

참고  C++에서는 파일을 한 프로젝트에서 다른 프로젝트로 이동해도 파일 시스템에서 실제로 이동되지는 않습니다.
 

다음 스크린샷은 공유 프로젝트로 제안된 파일 및 폴더를 이동한 후의 솔루션을 보여 줍니다.

공유 프로젝트로 이동된 파일

공유 프로젝트로 이동하는 코드에 대해 일부 컴파일러 오류가 나타날 수 있습니다. 대부분의 경우 새 앱 프로젝트가 초기 프로젝트와 동일한 참조 집합을 갖도록 구성하여 오류를 해결할 수 있습니다. 예를 들어 Windows 스토어 앱에 타사 라이브러리에 대한 어셈블리 참조가 포함되어 있고 연결된 코드를 공유 폴더로 이동하는 경우 Windows Phone 프로젝트에서도 타사 라이브러리를 참조해야 합니다.

다음 스크린샷은 두 프로젝트에 추가된 동일한 어셈블리 참조를 보여 줍니다.

두 프로젝트에 모두 추가된 어셈블리 참조

공유 코드에서 Windows 관련 API를 사용하는 경우 #ifdef 지시문과 WINDOWS_APP 상수를 함께 사용하여 코드의 해당 섹션을 분리합니다. WINDOWS_PHONE_APP 상수를 사용하여 Windows Phone 8.1 관련 코드 섹션을 분리합니다. 다음 섹션에서는 이러한 상수를 적용하는 방법을 보여 주고 C++에 사용되는 상수에 대해 설명합니다.

App.xaml 공유

Windows 범용 앱에 대한 새 솔루션을 만드는 경우 Visual Studio에서는 App.xaml을 공유 프로젝트에 배치합니다. 기존 프로젝트를 Windows 범용 앱으로 변환하는 경우 App.xaml을 공유 프로젝트로 수동으로 이동할 수 있습니다. 파일을 이동한 후에는 페이지의 빌드 작업 속성을 ApplicationDefinition으로 설정해야 합니다.

  1. 솔루션 탐색기의 공유 프로젝트에서 App.xaml 파일을 선택합니다.
  2. 보기 > 속성 창을 선택합니다.
  3. 속성 창의 빌드 작업 드롭다운 목록에서 ApplicationDefinition을 선택합니다.

또한 앱의 첫 페이지를 여는 방법도 결정해야 합니다. 예를 들어 Windows 범용 앱의 App.xaml 페이지는 다음 코드를 사용하여 HubPage라는 페이지를 엽니다. 이 코드는 두 프로젝트에 HubPage라는 페이지가 포함된 경우에만 작동합니다.



if (!rootFrame.Navigate(typeof(HubPage)))
{
    throw new Exception(“Failed to create initial page”);
}

각 앱에 대해 다른 시작 페이지를 사용하려면 아래 표시된 것처럼 #ifdef 지시문을 추가해야 합니다.


#if WINDOWS_APP
                if (!rootFrame.Navigate(typeof(HubPage)))
#endif
#if WINDOWS_PHONE_APP
                if (!rootFrame.Navigate(typeof(WindowsPhoneStartPage)))
#endif
                {
                    throw new Exception("Failed to create initial page");
                }


마지막으로, App.xaml 파일에 정의된 스타일이 두 유형의 앱에서 모두 사용할 수 있는 리소스를 사용하는지 확인합니다. 그렇지 않으면 해당 스타일 정의를 Windows 스토어 또는 Windows Phone 프로젝트로 이동합니다.

다음 단계

첫 번째 앱을 작성하려면 첫 번째 앱을 참조하세요.

Visual Studio 템플릿을 사용하여 앱을 개발하는 방법은 다음 항목을 참조하세요.

관련 항목

제품 지원 및 접근성
JavaScript를 사용한 스토어 앱의 접근성
스토어 앱의 접근성(VB/C#/C++ 및 XAML)
기존 Windows 8 유니버설 앱 포팅

 

 

표시:
© 2017 Microsoft