핫 다시 시작을 사용하여 iOS 앱 배포
일반적으로 앱을 빌드할 때 코드는 컴파일되고 다른 프로젝트 리소스와 결합되어 시뮬레이터 또는 디바이스에 배포되는 앱 번들을 빌드합니다. 이 모델을 사용하면 앱을 변경할 때 새 앱 번들을 빌드하고 배포해야 합니다. 증분 빌드는 컴파일 시간을 줄이는 데 도움이 될 수 있지만 배포는 일반적으로 변경 크기에 관계없이 동일한 시간을 사용합니다.
.NET 다중 플랫폼 앱 UI(.NET MAUI) 핫 다시 시작을 사용하면 Mac 빌드 호스트 없이도 Visual Studio 2022의 64비트 로컬 iOS 디바이스에 .NET MAUI 앱을 신속하게 배포할 수 있습니다. 로컬로 연결된 iOS 디바이스에 이미 있는 기존 앱 번들에 변경 내용을 푸시하여 전체 앱 번들을 다시 빌드할 필요가 없습니다. 코드 파일, 리소스 및 프로젝트 참조에 대한 변경 내용을 지원하므로 개발 중에 앱의 변경 내용을 빠르게 테스트할 수 있습니다.
Important
핫 다시 시작은 Mac 빌드 호스트에서 제공하는 전체 빌드 환경을 대체하는 것이 아닙니다. 예를 들어 디버그 빌드 구성을 사용하는 앱만 배포할 수 있으며 정적 라이브러리 및 프레임워크, XCFrameworks 또는 바인딩 리소스 패키지를 지원하지 않습니다. 자세한 내용은 제한 사항을 참조하세요.
로컬로 연결된 iOS 디바이스에 .NET MAUI 앱을 배포하기 위해 핫 다시 시작을 사용하려면 충족해야 하는 여러 요구 사항이 있습니다.
- Visual Studio 2022 버전 17.3 이상 버전을 사용해야 합니다.
- 개발 컴퓨터에 iTunes(Microsoft Store 또는 64비트 버전)가 설치되어 있어야 합니다.
- Apple 개발자 계정과 유료 Apple Developer Program 등록이 있어야 합니다.
설정
핫 다시 시작을 설정하려면 다음 단계를 수행합니다.
Visual Studio 도구 모음에서 디버그 대상 드롭다운을 사용하여 iOS 로컬 디바이스를 선택한 다음, 로컬 디바이스 항목을 선택합니다.
Visual Studio 도구 모음에서 로컬 디바이스를 선택합니다.
핫 다시 시작 설치 마법사가 표시되어 핫 다시 시작 배포를 위한 로컬 iOS 디바이스 설정을 안내합니다.
설치 핫 다시 시작 설치 마법사에서 다음을 선택합니다.
iTunes가 설치되어 있지 않으면 설치 마법사에서 설치하라는 메시지가 표시됩니다. 핫 다시 시작 설치 마법사에서 iTunes 다운로드를 선택합니다.
참고 항목
iTunes는 Microsoft Store에서 설치하거나 Apple에서 다운로드하여 설치할 수 있습니다.
iTunes가 다운로드할 때까지 기다린 다음 설치합니다. Microsoft Store에서 설치하는 경우 설치가 완료되면 추가 프롬프트에 따라 로컬로 연결된 디바이스를 검색할 수 있도록 합니다.
핫 다시 시작 설치 마법사에서 다음을 선택하여 로컬 iOS 디바이스를 연결하라는 메시지를 표시하는 마법사의 다음 단계로 이동합니다.
USB 케이블을 통해 iOS 디바이스를 개발 머신에 연결합니다. 개발 머신을 신뢰하라는 메시지가 디바이스에 나타날 수 있습니다. 디바이스에서 [신뢰]를 클릭하고 추가 디바이스 프롬프트를 따릅니다.
설치 핫 다시 시작 설치 마법사에서 로컬 iOS 디바이스가 검색되면 다음을 선택합니다.
참고 항목
설치 마법사가 로컬 iOS 디바이스를 검색하지 못하는 경우 연결을 끊은 다음 개발 컴퓨터에서 로컬 iOS 디바이스를 다시 연결합니다. 또한 iTunes에서 로컬 iOS 디바이스를 인식하는지 확인합니다.
핫 다시 시작 설정 마법사에서 개별 계정 하이퍼링크로 로그인을 클릭하여 개별 Apple 개발자 프로그램 계정을 사용하도록 핫 다시 시작을 구성합니다.
개별 계정 대화 상자가 나타납니다.
참고 항목
또는 엔터프라이즈 Apple 개발자 계정을 사용하도록 핫 다시 시작을 구성하려면 엔터프라이즈 계정 하이퍼링크로 로그인을 클릭하고 표시되는 대화 상자에 자격 증명을 입력합니다. 그런 다음, 12단계로 진행합니다.
App Store Connect API 키를 만듭니다. 이렇게 하려면 Apple 개발자 계정과 유료 Apple Developer Program 등록이 필요합니다. App Store Connect API 키를 만드는 방법에 대한 자세한 내용은 developer.apple.com App Store Connect API용 API 키 만들기를 참조하세요.
개별 계정 대화 상자에서 App Store Connect API 키 데이터를 입력합니다.
이름, 발급자 ID 및 키 ID 데이터는 사용자 및 액세스를 선택한 다음 키 탭을 선택하여 App Store Connect에서 찾을 수 있습니다. 프라이빗 키는 다음 위치에서 다운로드할 수도 있습니다.
개별 계정 대화 상자에서 추가 단추를 클릭합니다. 개별 계정 대화 상자가 닫힙니다.
설치 핫 다시 시작 설치 마법사에서 마침 단추를 클릭합니다.
Apple 개발자 프로그램 계정이 Visual Studio에 추가되고 설치 핫 다시 시작 설치 마법사가 닫힙니다.
솔루션 탐색기 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
프로젝트 속성에서 iOS를 확장하고 번들 서명을 선택합니다. 스키마 드롭다운을 사용하여 자동 프로비저닝을 선택한 다음 자동 프로비저닝 구성 하이퍼링크를 클릭합니다.
자동 프로비저닝 구성 대화 상자가 나타납니다.
자동 프로비저닝 구성 대화 상자에서 Connect API 키에 대한 팀을 선택합니다.
Visual Studio에서 자동 프로비저닝 프로세스를 완료합니다. 그런 다음 확인 단추를 클릭하여 자동 프로비저닝 구성 대화 상자를 해제합니다.
참고 항목
배포를 위해 추가 iOS 디바이스를 쉽게 구성할 수 있도록 자동 프로비저닝을 사용하는 것이 좋습니다. 그러나 컴퓨터에 올바른 프로비저닝 프로필이 있는 경우 수동 프로비저닝을 사용할 수 있습니다.
핫 다시 시작을 사용하여 배포 및 디버그
초기 설정을 수행한 후 로컬에 연결된 iOS 디바이스가 디버그 대상 드롭다운 메뉴에 표시됩니다. 앱을 배포하고 디버그하려면 다음을 수행합니다.
로컬에 연결된 iOS 디바이스의 잠금이 해제되어 있는지 확인합니다.
Visual Studio 도구 모음의 디버그 대상 드롭다운에서 로컬로 연결된 iOS 디바이스를 선택하고 실행 단추를 클릭하여 앱을 빌드하고 로컬 iOS 디바이스에 배포합니다.
앱을 배포한 후 Visual Studio에 디버거 연결 대화 상자가 표시됩니다.
디바이스에서 앱을 시작하고 Visual Studio에서 실행 중인 앱에 디버거를 연결하고 디버거 연결 대화 상자가 해제됩니다.
앱을 디버깅하는 동안 C# 코드를 편집하고 Visual Studio 도구 모음에서 다시 시작 단추를 눌러 새 변경 내용이 적용된 디버그 세션을 다시 시작할 수 있습니다.
코드가 실행되지 않도록 방지
HOTRESTART
전처리기 기호를 사용하여 핫 다시 시작을 사용하여 디버깅할 때 코드가 실행되지 않도록 할 수 있습니다.
#if !HOTRESTART
// Code here won't be executed when debugging with hot restart
#endif
핫 다시 시작 사용
핫 다시 시작은 Visual Studio 2022에서 기본적으로 사용하도록 설정됩니다. 이전에 사용하지 않도록 설정된 경우 Visual Studio 메뉴 모음에서 도구 > 옵션을 선택하여 사용하도록 설정할 수 있습니다. 그런 다음 옵션 대화 상자에서 Xamarin을 확장하고 iOS 설정을 선택합니다. 그런 다음 핫 다시 시작 사용이 선택되어 있는지 확인합니다 .
제한 사항
핫 다시 시작을 사용하는 경우 다음과 같은 제한 사항이 있습니다.
- 디버그 빌드 구성을 사용하는 앱을 배포하는 데만 사용할 수 있습니다. 프로덕션 목적으로 앱을 빌드, 서명 및 배포하려면 여전히 Mac 빌드 호스트가 필요합니다.
- Storyboard 및 XIB 파일은 지원되지 않으며 런타임에 로드하려고 하면 앱이 충돌할 수 있습니다.
- 정적 iOS 라이브러리 및 정적 라이브러리를 포함하는 프레임워크는 지원되지 않으며 앱에서 이러한 라이브러리를 로드하려고 하면 런타임 오류 또는 충돌이 발생할 수 있습니다.
- 정적 라이브러리가 있는 정적 iOS 라이브러리 또는 프레임워크를 포함하지 않는 한 XCFrameworks 및 바인딩 리소스 패키지가 지원됩니다.
- 자산 카탈로그는 지원되지 않습니다. 핫 다시 시작을 사용하는 경우 앱에 .NET 아이콘과 시작 화면이 표시됩니다.
문제 해결
iOS는 앱 시작 시간과 응답성을 모니터링하고 응답하지 않는 앱을 종료하는 Watchdog를 사용합니다. 예를 들어 Watchdog는 주 스레드를 차단하는 앱을 상당한 시간 동안 종료합니다. 이전 iOS 디바이스에서 Watchdog는 디버거가 연결되기 전에 핫 다시 시작을 사용하여 배포된 앱을 종료할 수 있습니다. 해결 방법은 앱의 시작 경로에서 수행되는 처리량을 줄이고 최신 iOS 디바이스를 사용하는 것입니다.
추가 문제를 보고하려면 도움말 보내기 피드백 보고서 문제에서 > 피드백 > 도구를 사용하세요.
.NET MAUI