다음을 통해 공유


MAUI 및 Xamarin SDK 문제 해결

중요합니다

Visual Studio App Center는 2026년 6월 30일까지 계속 지원되는 분석 및 진단 기능을 제외하고 2025년 3월 31일에 사용 중지되었습니다. 자세히 알아보기.

상세 로그 수집

로그 수준을 VERBOSE조정하는 방법에 대한 지침을 보려면 다른 API 섹션을 참조하세요.
DebugWindows>Output 창에서 자세한 로그를 찾을 수 있습니다.

설치 중 문제

  1. Xamarin.Forms 앱의 경우 모든 라이브러리를 참조하는 모든 프로젝트에 패키지가 설치되어 있는지 확인합니다. 그렇지 않으면 오류가 표시됩니다.
  2. Xamarin.iOS MTOUCH: Error MT3001: Could not AOT the assembly 'obj/**/Build/Microsoft.AppCenter.**.iOS.Bindings.dll' (MT3001) 용으로 빌드할 때 이 오류가 표시되면 Xamarin.iOS 구성 요소를 버전 10.4.0.128 이상으로 업데이트해야 합니다.
  3. Xamarin.iOS를 MTOUCH: Error MT5210: Native linking failed, undefined symbol: _OBJC_METACLASS_$_MS{SomeSdkClassName}. Please verify that all the necessary frameworks have been referenced and native libraries are properly linked in. (MT5210) 빌드할 때 이 오류가 표시되거나 유사한 오류(MT5211 App Center를 언급하는 유사한 메시지가 포함된 코드)가 표시되면 특정 서비스의 API를 사용하기 전에 호출 AppCenter.Start 해야 합니다. 호출 Start 중이지만 이 문제가 있는 경우 Xamarin.iOS 구성 요소를 버전 10.4.0.128 이상으로 업데이트해야 합니다.
  4. 콘솔에서 "App Center SDK가 성공적으로 구성됨"이라는 메시지가 포함된 Assert 로그를 찾습니다. 이렇게 하면 SDK가 성공적으로 구성되었는지 확인합니다.

분석 데이터가 포털에 표시되지 않음

  1. SDK 모듈을 올바르게 통합했는지 확인합니다.

  2. 올바른 앱 비밀이 메서드 호출과 함께 Start() 포함되어 있는지 확인합니다. 포털에서 앱을 열고 시작 페이지로 이동하여 정확한 Start() 코드를 복사할 수 있습니다.

  3. 백 엔드로 전송되는 로그를 보려면 애플리케이션에서 로그 수준을 자세한 정보 표시로 변경하면 SDK가 콘솔에 로그를 출력합니다. SDK를 시작하기 전에 아래 API를 호출합니다.

    AppCenter.LogLevel = LogLevel.Verbose;
    

    정보 로그 수준에서 "App Center SDK가 성공적으로 구성됨"이라는 로그를 확인한 다음 HTTPS 요청 로그가 표시되는지 확인합니다.

  4. 디바이스가 온라인 상태인지 확인합니다.

  5. 경우에 따라 로그가 포털에 표시되는 데 몇 분 정도 걸릴 수 있습니다. 그런 경우 잠시 기다립니다.

  6. App Center 백 엔드가 데이터를 받았는지 확인하려면 Analytics 서비스의 로그 흐름 섹션으로 이동합니다. 이벤트가 전송되면 나타나요.

포털에 크래시가 표시되지 않음

  1. SDK 모듈을 올바르게 통합했는지 확인합니다.

  2. 올바른 앱 비밀이 메서드 호출과 함께 Start() 포함되어 있는지 확인합니다. 포털에서 앱을 열고 시작 페이지로 이동하여 정확한 Start() 코드를 복사할 수 있습니다.

  3. 충돌 후 앱을 다시 시작합니다. App Center 충돌은 다시 시작한 후에만 크래시 로그를 전달합니다. 또한 디버거를 연결한 경우 Xamarin.iOS 및 Xamarin.Mac에서 SDK는 충돌 로그를 저장하지 않습니다. iOS 앱이 충돌할 때 디버거가 연결되지 않았는지 확인하세요. Xamarin.Android에서는 디버거가 연결된 상태에서 충돌할 수 있지만, 처리되지 않은 예외를 만난 후 실행을 계속해야 합니다.

  4. 백 엔드로 전송되는 로그를 보려면 애플리케이션에서 로그 수준을 자세한 정보 표시로 변경하면 SDK가 콘솔에 로그를 출력합니다. SDK를 시작하기 전에 아래 API를 호출합니다.

    AppCenter.LogLevel = LogLevel.Verbose;
    

    정보 로그 수준에서 "App Center SDK가 성공적으로 구성됨"이라는 로그를 확인한 다음 HTTPS 요청 로그가 표시되는지 확인합니다.

  5. Xamarin Insights 또는 HockeyApp과 같은 크래시 보고 기능을 제공하는 다른 라이브러리는 사용하지 마세요. 하나의 충돌 보고용 SDK만 통합할 수 있습니다.

  6. 디바이스가 온라인 상태인지 확인합니다.

  7. 경우에 따라 로그가 포털에 표시되는 데 몇 분 정도 걸릴 수 있습니다. 그런 경우 잠시 기다립니다.

  8. SDK가 다음 앱 시작 시 크래시가 감지되었는지 확인하려면 API를 호출하여 앱이 마지막 세션에서 충돌했는지 확인하고 경고를 표시할 수 있습니다. 또는 크래시 콜백을 확장하여 서버에 성공적으로 전송되었는지 확인할 수 있습니다.

  9. App Center 백 엔드에서 크래시가 수신되었는지 확인하려면 Analytics 서비스의 로그 흐름 섹션으로 이동합니다. 크래시가 전송되면 해당 크래시가 표시됩니다.

배포 및 앱 내 업데이트가 자동화된 UI 테스트를 차단하고 있습니다.

자동화된 UI 테스트를 실행하는 경우 앱 내 업데이트를 사용하도록 설정하면 App Center 백 엔드에 대해 인증을 시도하므로 자동화된 UI 테스트가 차단됩니다. UI 테스트에 App Center 배포를 사용하도록 설정하지 않는 것이 좋습니다.

Google Play가 DistributePlay를 추가한 후 애플리케이션을 거부합니다.

Google Play는 앱 내 업데이트 구현을 Distribute 포함하므로 모듈을 사용하는 앱을 거부합니다. 이러한 상황을 방지하기 위해 App Center SDK에는 DistributePlay 주 모듈에 대한 스텁이 포함된 모듈이 있습니다. 주 어셈블리를 API를 모방하는 스텁 어셈블리로 교체하여 Distribute API를 모방합니다. 클라이언트 애플리케이션에는 추가 변경이 필요하지 않습니다. DistributePlay 앱 내 업데이트 관련 코드가 없습니다. Distribute 모듈을 DistributePlay 모듈로 교체한 후에도 앱이 여전히 거부된다면, 아래 단계를 따라 Distribute 모듈이 올바르게 교체되었는지 확인하세요.

  • Google Play 콘솔의 모든 게시 그룹의 모든 릴리스에서 DistributeDistributePlay으로 대체했는지 확인하십시오.
  • 사용할 경우 Xamarin.Forms을(를) 공유 및 DistributePlay 프로젝트 모두에 모듈 Xamarin.Android을 추가해야 합니다.
  • 출력 파일에 어셈블리가 포함되어 있지 않은지 확인합니다 Microsoft.AppCenter.Distribute.Android.Bindings.dll . APK 분석기를 사용하여 확인할 수 있습니다.

iOS에서 데이터베이스를 열 수 없음을 나타내는 콘솔의 메시지

App Center는 백 엔드로 전송되기 전에 SQLite를 사용하여 로그를 유지합니다. OS에서 제공하는 라이브러리를 사용하는 대신 고유한 SQLite 라이브러리를 사용하여 애플리케이션을 묶는 경우 콘솔 [AppCenter] ERROR: -[MSACDBStorage executeSelectionQuery:]/147 Failed to open database 에서 이와 같은 오류가 표시될 수 있으며 백 엔드에 분석 또는 충돌 정보가 표시되지 않을 수 있습니다. SDK를 버전 0.16.0 이상으로 업데이트합니다.

App Center 비밀 값 보호

app_secret 의 식별자이며 트래픽이 적용되는 앱을 알아야 하며 기존 데이터를 검색하거나 편집하는 데 사용할 수 없습니다. app_secret 노출되는 경우 가장 큰 위험은 잘못된 데이터를 앱에 보내는 것이지만 데이터의 보안에는 영향을 주지 않습니다.

중요한 데이터를 검색하려면 클라이언트 쪽에서 생성되는 앱/사용자 토큰을 제공해야 합니다. 클라이언트 쪽의 데이터를 완전히 안전하게 만들 수 있는 방법은 없습니다.

환경 변수를 사용하여 앱 비밀을 코드에 삽입하여 앱의 보안을 향상시킬 수 있습니다. 이렇게 하면 코드에 비밀이 표시되지 않습니다.