Устранение неполадок с MAUI и пакетом SDK Xamarin

Важно!

Прекращение поддержки Центра приложений Visual Studio запланировано на 31 марта 2025 г. Хотя вы можете продолжать использовать Центр приложений Visual Studio, пока он не будет полностью выведен из эксплуатации, существует несколько рекомендуемых вариантов, на которые вы можете рассмотреть возможность миграции.

Узнайте больше о сроках поддержки и альтернативных вариантах.

Сбор подробных журналов

Инструкции по настройке уровня VERBOSEжурнала см. в разделе Другие API .
Подробные журналы можно найти в окне Отладка>выходных данныхWindows>.

Проблемы во время установки

  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 код с похожим сообщением, упоминающим Центр приложений), убедитесь, что вы вызвали перед AppCenter.Start использованием API определенной службы. Если вы вызываете, Start но возникла эта проблема, необходимо обновить компонент Xamarin.iOS до версии 10.4.0.128 или более поздней.
  4. В консоли найдите журнал assert с сообщением "Пакет SDK центра приложений настроен успешно". Это проверяет, успешно ли настроен пакет SDK.

Данные аналитики не отображаются на портале

  1. Убедитесь, что модули SDK интегрированы правильно.

  2. Убедитесь, что вместе с вызовом метода включен правильный Start() секрет приложения. Вы можете скопировать точный Start() код, открыв приложение на портале и перейдя на страницу начало работы.

  3. Если вы хотите просмотреть журналы, отправляемые на серверную часть, измените уровень журнала на Подробный в приложении, и пакет SDK будет выводить журналы в консоли. Вызовите приведенный ниже API перед запуском пакета SDK.

    AppCenter.LogLevel = LogLevel.Verbose;
    

    Проверьте в журналах сообщение "Пакет SDK центра приложений настроен успешно" (на уровне журнала сведений), а затем проверка, если отображаются журналы запросов HTTPS.

  4. Убедитесь, что устройство подключено к сети.

  5. Иногда для отображения журналов на портале может потребоваться несколько минут. Подождите некоторое время, если это так.

  6. Чтобы проверка, получил ли серверная часть Центра приложений ваши данные, перейдите к разделу Поток журнала в службе Аналитики. События должны отображаться после отправки.

Сбои не отображаются на портале

  1. Убедитесь, что модули SDK интегрированы правильно.

  2. Убедитесь, что вместе с вызовом метода включен правильный Start() секрет приложения. Вы можете скопировать точный Start() код, открыв приложение на портале и перейдя на страницу начало работы.

  3. Перезапустите приложение после сбоя. При сбоях Центра приложений журнал сбоев будет пересылаться только после перезапуска. Кроме того, в Xamarin.iOS и Xamarin.Mac пакет SDK не сохраняет журнал сбоев при подключении отладчика. Убедитесь, что отладчик не подключен при сбое приложения iOS. В Xamarin.Android можно аварийно завершить работу при присоединении отладчика, но необходимо продолжить выполнение после взлома необработанного исключения.

  4. Если вы хотите просмотреть журналы, отправляемые на серверную часть, измените уровень журнала на Подробный в приложении, и пакет SDK будет выводить журналы в консоли. Вызовите приведенный ниже API перед запуском пакета SDK.

    AppCenter.LogLevel = LogLevel.Verbose;
    

    Проверьте в журналах сообщение "Пакет SDK центра приложений настроен успешно" (на уровне журнала сведений), а затем проверка, если отображаются журналы запросов HTTPS.

  5. Не используйте другую библиотеку, которая предоставляет функции отчетов о сбоях, такие как Xamarin Insights или HockeyApp. Вы можете интегрировать только один пакет SDK для отчетов о сбоях.

  6. Убедитесь, что устройство подключено к сети.

  7. Иногда для отображения журналов на портале может потребоваться несколько минут. Подождите некоторое время, если это так.

  8. Если вы хотите проверка, если пакет SDK обнаружил сбой при следующем запуске приложения, можно вызвать API, чтобы проверка, произошел ли сбой приложения в последнем сеансе и отображается ли оповещение. Вы также можете расширить обратный вызов, чтобы узнать, был ли он успешно отправлен на сервер.

  9. Чтобы проверка, когда серверная часть Центра приложений получила сбой, перейдите к разделу Поток журнала в службе Аналитики. Ваши сбои должны появиться там после отправки.

Распространение и обновления из приложения блокируют автоматические тесты пользовательского интерфейса

Если вы запускаете автоматические тесты пользовательского интерфейса, включенные обновления в приложении заблокируют автоматические тесты пользовательского интерфейса, так как они будут пытаться пройти проверку подлинности в серверной части Центра приложений. Рекомендуется не включать распространение в Центре приложений для тестов пользовательского интерфейса.

Google Play отклоняет приложение после добавления Приложения DistributePlay

Google Play отклоняет приложения, использующие Distribute модуль, так как он содержит реализацию обновления из приложения. Чтобы избежать этой ситуации, в пакете SDK центра приложений есть DistributePlay модуль, который содержит заглушки для модуля main. Он заменяет main сборки на stubbed assemble, которая имитирует Distribute API. В клиентском приложении никаких дополнительных изменений не требуется. В DistributePlay ней нет кода, связанного с обновлением в приложении. Если после замены Distribute модуля приложением DistributePlay по-прежнему отклоняется, выполните следующие действия, чтобы проверить правильность Distribute замены модуля:

  • Убедитесь, что вы заменили DistributeDistributePlay на во всех выпусках для всех групп публикации в консоли Google Play.
  • Если вы используете, Xamarin.Forms убедитесь, что вы добавили модуль в общий DistributePlay доступ и Xamarin.Android в проекты.
  • Убедитесь, что выходной файл не содержит сборки Microsoft.AppCenter.Distribute.Android.Bindings.dll . Для проверка его можно использовать анализатор APK.

Сообщения в консоли, указывающие, что не удалось открыть базу данных в iOS

Центр приложений использует SQLite для сохранения журналов перед их отправкой в серверную часть. Если вы обобщаете приложение с собственной библиотекой SQLite, а не используете библиотеку, предоставляемую ОС, в консоли [AppCenter] ERROR: -[MSACDBStorage executeSelectionQuery:]/147 Failed to open database могут появиться ошибки, подобные этой, и в серверной части не будут отображаться аналитические сведения или сведения о сбоях. Обновите пакет SDK до версии 0.16.0 или более поздней.

Защита значения секрета Центра приложений

app_secret это идентификатор вашего приложения. Необходимо знать, к какому приложению применяется трафик, и его нельзя использовать для извлечения или изменения существующих данных. Если вы app_secret подвергаетесь риску, самый большой риск заключается в отправке плохих данных в приложение, но это не повлияет на безопасность данных.

Чтобы получить конфиденциальные данные, необходимо предоставить маркер приложения или пользователя, который создается на стороне клиента. Невозможно сделать данные на стороне клиента полностью безопасными.

Вы можете повысить безопасность приложения, используя переменную среды для внедрения секрета приложения в код. Таким образом, секрет не будет виден в коде.