MAUI 및 Xamarin 시작
중요
Visual Studio App Center는 2025년 3월 31일에 사용 중지될 예정입니다. Visual Studio App Center가 완전히 사용 중지될 때까지 계속 사용할 수 있지만 마이그레이션을 고려할 수 있는 몇 가지 권장 대안이 있습니다.
App Center SDK는 모든 서비스를 사용할 수 있도록 모듈식 아키텍처를 사용합니다.
App Center 분석 및 App Center 크래시를 사용하도록 앱에서 App Center .NET SDK 설정부터 시작해 보겠습니다. 앱에 App Center 배포를 추가하려면 App Center 배포에 대한 설명서를 살펴보세요.
1. 사전 요구 사항
시작하기 전에 다음 필수 조건을 충족시키는지 확인합니다.
- 프로젝트가 Visual Studio 또는 Mac용 Visual Studio 설정됩니다.
- iOS 11.0 이상 또는 Android 5.0(API 수준 21) 이상을 실행하는 디바이스를 대상으로 합니다.
- 크래시 보고 기능을 제공하는 다른 SDK는 사용하지 않습니다.
지원되는 플랫폼:
- MAUI iOS
- MAUI Android
- MAUI Windows
- .NET 6.0 macOS
- Xamarin.Android
- Xamarin.iOS
- Xamarin.Mac
- Xamarin.Forms(iOS, macOS Android, UWP 및 Windows Desktop 애플리케이션)
1.1 MAUI
참고
현재 App Center 포털에는 MAUI 플랫폼이 없습니다. iOS 및 Android용 Xamarin 및 Windows용 UWP 를 사용하세요.
1.2 Xamarin.Android 정보
Android를 OS로, Xamarin을 플랫폼으로 사용하여 App Center 포털에서 앱을 만듭니다.
1.3 Xamarin.iOS 정보
iOS를 OS로, Xamarin을 플랫폼으로 사용하여 App Center 포털에서 앱을 만듭니다.
1.4 Xamarin.Mac 정보
macOS를 OS로, Xamarin을 플랫폼으로 사용하여 App Center 포털에서 앱을 만듭니다.
경고
앱이 App Store 업로드되지 않도록 하는 알려진 문제가 있습니다. github의 진행률을 따릅니다.
1.5 Xamarin.Forms 정보(iOS, macOS, Android, UWP 및 Windows Desktop)
App Center에서 5개의 앱을 만듭니다. 각 OS에 대해 하나씩.
Android, iOS 및 macOS 애플리케이션용 플랫폼으로 Xamarin 을 선택해야 합니다(UWP 및 데스크톱 애플리케이션에는 Xamarin 옵션이 없음).
Windows Desktop 및 macOS 애플리케이션의 경우 Xamarin.Forms 플랫폼과의 호환성을 위해 프로젝트를 구성해야 합니다.
2. App Center 포털에서 앱을 만들어 앱 비밀을 가져옵니다.
App Center 포털에서 앱을 이미 만든 경우 이 단계를 건너뛸 수 있습니다.
- appcenter.ms.
- 등록하거나 로그인하고 포털의 오른쪽 위 모서리에 있는 파란색 단추를 누르면 새로 추가 라는 내용이 표시되고 드롭다운 메뉴에서 새 앱 추가 를 선택합니다.
- 앱의 이름 및 선택적 설명을 입력합니다.
- 위에서 설명한 대로 프로젝트에 따라 적절한 OS 및 플랫폼을 선택합니다.
- 오른쪽 아래에 새 앱 추가라는 단추를 누릅니다.
앱을 만든 후에는 App Center 포털의 설정 페이지에서 앱 비밀을 가져올 수 있습니다. 설정 페이지의 오른쪽 위 모서리에서 세로 세로 점을 클릭하고 을 선택하여 Copy app secret
앱 비밀을 가져옵니다.
3. 솔루션에 App Center SDK 추가
App Center SDK는 Visual Studio 또는 패키지 관리자 콘솔을 사용하여 통합할 수 있습니다.
참고
App Center SDK는 강력한 이름의 기호를 사용하는 애플리케이션과의 호환성을 위해 강력한 이름의 어셈블리 를 사용합니다.
Mac용 Visual Studio
- Visual Studio를 엽니다.
- 파일>열기를 클릭하고 솔루션을 선택합니다.
- 솔루션 탐색기에서 패키지 섹션을 마우스 오른쪽 단추로 클릭하고 NuGet 패키지 추가...를 선택합니다.
- App Center를 검색하고 App Center 분석 및 App Center크래시를 선택합니다.
- 패키지 추가를 클릭합니다.
Visual Studio for Windows
- Visual Studio를 엽니다.
- 파일>열기를 클릭하고 솔루션을 선택합니다.
- 솔루션 탐색기에서 참조를 마우스 오른쪽 단추로 클릭하고 NuGet 패키지 관리를 선택합니다.
- App Center를 검색하고 Microsoft.AppCenter.Analytics 및 Microsoft.AppCenter.Crashes 패키지를 설치합니다.
패키지 관리자 콘솔
- Visual Studio에서 콘솔을 엽니다. 이렇게 하려면 도구>NuGet 패키지 관리자 패키지 관리자>콘솔을 선택합니다.
- Mac용 Visual Studio 작업하는 경우 NuGet 패키지 관리 확장을 설치했는지 확인합니다. 이를 위해 Visual Studio>확장을 선택하고 , NuGet 을 검색하고, 필요한 경우 설치합니다.
- 콘솔에 다음 명령을 입력합니다.
Install-Package Microsoft.AppCenter.Analytics
Install-Package Microsoft.AppCenter.Crashes
이제 애플리케이션에 SDK를 통합했으므로 이제 SDK를 시작하고 App Center 서비스를 사용할 차례입니다.
참고
이식 가능한 프로젝트(예: Xamarin.Forms)에서 App Center SDK를 사용하는 경우 각 프로젝트에 이식 가능한 패키지, Android 및 iOS 패키지를 설치해야 합니다. 이렇게 하려면 각 하위 프로젝트를 열고 Mac용 Visual Studio 또는 Windows용 Visual Studio 섹션에 설명된 해당 단계를 따라야 합니다.
4. SDK 시작
App Center를 사용하려면 사용하려는 모듈을 옵트인해야 합니다. 기본적으로 모듈은 시작되지 않으며 SDK를 시작할 때 각 모듈을 명시적으로 호출해야 합니다.
4.1 using 문 추가
다음 파일에 적절한 네임스페이스를 추가합니다.
- MAUI 및 Xamarin.Forms -
App.xaml.cs
- Xamarin.iOS 및 Xamarin.Mac -
AppDelegate.cs
- Xamarin.Android -
MainActivity.cs
using Microsoft.AppCenter;
using Microsoft.AppCenter.Analytics;
using Microsoft.AppCenter.Crashes;
4.2 메서드 추가 Start()
4.2.1 MAUI 및 Xamarin.Forms
App Center 포털에서 각 플랫폼에 대해 서로 다른 애플리케이션을 만들어야 합니다. 각 앱에 대해 다른 앱 비밀이 있습니다. 프로젝트의 App.xaml.cs 파일을 열고 생성자(또는 Xamarin.Forms의 메서드)에 OnStart()
다음 줄을 추가합니다.
AppCenter.Start("ios={Your App Secret};macos={Your App Secret};android={Your App Secret};uwp={Your App Secret};windowsdesktop={Your App Secret}", typeof(Analytics), typeof(Crashes));
App Center 서비스를 별도로 시작해야 하는 경우 다음을 수행해야 합니다.
- 앱 비밀을 구성하거나 시작합니다.
- 코드를 여러 번 호출할 수 있는 경우 App Center가 이미 구성된 경우 검사.
- 앱 비밀 없이 필요한 서비스를 시작합니다.
AppCenter.Configure("ios={Your App Secret};macos={Your App Secret};android={Your App Secret};uwp={Your App Secret};windowsdesktop={Your App Secret}");
if (AppCenter.Configured)
{
AppCenter.Start(typeof(Analytics));
AppCenter.Start(typeof(Crashes));
}
4.2.2 Xamarin.Android
참고
Android용 HockeyApp SDK를 사용하는 경우 App Center SDK 이후 HockeyApp SDK를 초기화해야 합니다.
프로젝트의 MainActivity.cs 파일을 열고 메서드 내에 호출을 OnCreate()
추가 Start()
합니다.
AppCenter.Start("{Your App Secret}", typeof(Analytics), typeof(Crashes));
참고
애플리케이션에 백그라운드 서비스 또는 브로드캐스트 수신기, 내보낸 활동 또는 콘텐츠 공급자와 같은 여러 진입점이 있는 경우 대신 콜백에서 Application.OnCreate
시작하는 AppCenter
것이 좋습니다.
4.2.3 Xamarin.iOS 및 Xamarin.Mac
참고
앱에 둘 이상의 활성 크래시 보고 SDK가 있을 수 없습니다. 다른 SDK의 크래시 보고 기능을 사용하지 않도록 설정하여 App Center가 충돌을 catch할 수 있는지 확인합니다.
프로젝트의 AppDelegate.cs
파일을 열고 메서드 내에 호출을 추가 Start()
합니다 FinishedLaunching()
.
AppCenter.Start("{Your App Secret}", typeof(Analytics), typeof(Crashes));
참고
크래시를 사용하는 경우 UI/기본 스레드에서 이 메서드를 호출하고 메서드가 Start
반환될 때까지 백그라운드 작업을 시작하지 않아야 합니다.
그 이유는 크래시가 초기화되는 동안 다른 스레드에서 catch된 null 참조 예외가 네이티브 크래시를 트리거하고 catch 절을 무시할 수 있기 때문입니다.
메서드가 AppCenter.Start
반환되면 null 참조 예외를 다시 시도/catch해도 안전합니다.
이 타이밍 문제의 원인에 대한 자세한 내용은 신호 및 타사 충돌 기자 문서에서 확인할 수 있습니다.
경고
소스 코드에 앱 비밀을 포함하지 않는 것이 좋습니다.
중요
중괄호는 실제 앱 비밀을 배치할 위치를 보여 줍니다. 호출에 Start
중괄호를 배치하지 마세요.
참고
iOS 애플리케이션의 경우 앱에 둘 이상의 활성 크래시 보고 SDK가 있을 수 없습니다. 다른 SDK의 크래시 보고 기능을 사용하지 않도록 설정하여 App Center가 충돌을 catch할 수 있는지 확인합니다.
4.3 자리 표시자를 앱 비밀로 바꿉니다.
텍스트를 애플리케이션의 실제 값으로 바꿔 {Your App Secret}
야 합니다. 앱 비밀은 App Center 포털의 시작 페이지 또는 설정 페이지에서 찾을 수 있습니다.
시작 페이지에는 앱 비밀이 포함된 위의 코드 샘플이 포함되어 있으며 전체 샘플을 복사하여 붙여넣을 수 있습니다.
위의 예제에서는 메서드를 사용하고 Start()
App Center Analytics 및 App Center 크래시를 모두 포함하는 방법을 보여 줍니다.
두 서비스 중 하나를 사용하지 않으려면 위의 메서드 호출에서 해당 매개 변수를 제거합니다.
시작 메서드에서 각 모듈을 매개 변수로 명시적으로 지정하지 않는 한 해당 App Center 서비스를 사용할 수 없습니다. 또한 API는 Start()
앱의 수명 주기에서 한 번만 사용할 수 있습니다. 다른 모든 호출은 콘솔에 경고를 기록하며 첫 번째 호출에 포함된 모듈만 사용할 수 있습니다.
예를 들어 App Center Analytics에 온보딩하려면 다음과 같이 호출을 Start()
수정해야 합니다.
4.3.1 MAUI 및 Xamarin.Forms
AppCenter.Start("ios={Your App Secret};macos={Your App Secret};android={Your App Secret};uwp={Your App Secret};windowsdesktop={Your App Secret}", typeof(Analytics));
4.3.2 Xamarin Native
AppCenter.Start("{Your App Secret}", typeof(Analytics));
SDK가 자동으로 수집하는 포털에서 분석 및 크래시 데이터를 시각화하도록 설정되어 있습니다.
App Center Analytics 및 App Center 크래시에 대한 설명서를 참조하여 두 서비스의 고급 기능을 사용자 지정하고 사용하는 방법을 알아봅니다.
앱 내 업데이트를 시작하는 방법을 알아보려면 App Center 배포 설명서를 참조하세요.
참고
Xamarin Forms의 이식 가능한 API를 사용하면 모든 모듈의 API가 표시되지만 UWP 및 Windows 데스크톱 플랫폼에서 지원되는 모든 API는 UWP 및 Windows 데스크톱 애플리케이션에서 실행할 때 아무 작업도 수행하지 않습니다. 특히 UWP 및 Windows Desktop은 배포 모듈을 지원하지 않습니다. 반환 형식이 있는 메서드는 UWP 및 Windows Desktop 애플리케이션에서 (개체의 경우), 0
(숫자의 경우) 또는 false
(부울의 경우)를 반환 null
합니다.
5. 백업 규칙(Android에만 해당)
참고
Android 6.0(API 수준 23) 이상을 대상으로 하는 앱은 자동 백업을 자동으로 사용하도록 설정됩니다.
참고
백업 규칙이 있는 사용자 지정 파일이 이미 있는 경우 세 번째 단계로 전환합니다.
자동 백업을 사용하여 디바이스에 대한 잘못된 정보를 가져오지 않도록 하는 경우 다음 단계를 수행합니다.
5.1. Android 11(API 수준 30) 이하의 경우
- Resources/xml 폴더에 appcenter_backup_rule.xml 파일을 만듭니다.
- 프로젝트의 AndroidManifest.xml 파일을 엽니다. 요소에
android:fullBackupContent
특성을 추가합니다<application>
. appcenter_backup_rule.xml 리소스 파일을 가리킵니다.
android:fullBackupContent="@xml/appcenter_backup_rule"
- appcenter_backup_rule.xml 파일에 다음 백업 규칙을 추가합니다.
<full-backup-content xmlns:tools="http://schemas.android.com/tools">
<exclude domain="sharedpref" path="AppCenter.xml"/>
<exclude domain="database" path="com.microsoft.appcenter.persistence"/>
<exclude domain="database" path="com.microsoft.appcenter.persistence-journal"/>
<exclude domain="file" path="error" tools:ignore="FullBackupContent"/>
<exclude domain="file" path="appcenter" tools:ignore="FullBackupContent"/>
</full-backup-content>
5.2. Android 12(API 수준 31) 이상.
- Resources/xml 폴더에 appcenter_backup_rule.xml 파일을 만듭니다.
- 프로젝트의 AndroidManifest.xml 파일을 엽니다. 요소에
android:dataExtractionRules
특성을 추가합니다<application>
. appcenter_backup_rule.xml 리소스 파일을 가리킵니다.
android:dataExtractionRules="@xml/appcenter_backup_rule"
- appcenter_backup_rule.xml 파일에 다음 백업 규칙을 추가합니다.
<data-extraction-rules xmlns:tools="http://schemas.android.com/tools">
<cloud-backup>
<exclude domain="sharedpref" path="AppCenter.xml"/>
<exclude domain="database" path="com.microsoft.appcenter.persistence"/>
<exclude domain="database" path="com.microsoft.appcenter.persistence-journal"/>
<exclude domain="file" path="error" tools:ignore="FullBackupContent"/>
<exclude domain="file" path="appcenter" tools:ignore="FullBackupContent"/>
</cloud-backup>
<device-transfer>
<exclude domain="sharedpref" path="AppCenter.xml"/>
<exclude domain="database" path="com.microsoft.appcenter.persistence"/>
<exclude domain="database" path="com.microsoft.appcenter.persistence-journal"/>
<exclude domain="file" path="error" tools:ignore="FullBackupContent"/>
<exclude domain="file" path="appcenter" tools:ignore="FullBackupContent"/>
</device-transfer>
</data-extraction-rules>