Проблемы с настройкой Firebase Crashlytics в проектах Xamarin iOS и Android - PullRequest
0 голосов
/ 13 апреля 2020

Прежде всего, я знаю, что этот вопрос был задан и дан ответ здесь . К сожалению, это не работает для меня, применимо только к iOS, в Интернете мало инструкций и пакеты Nuget обновляются довольно часто. Кажется, нет даже никакой «официальной» документации для этого. Тем не менее, я нашел эту статью и несколько раз следил за ней 100%, даже удаляя и воссоздавая проекты Firebase в надежде, что что-то пошло не так без удачи. Статья была написана до последних версий пакетов Nuget, поэтому, возможно, что-то изменилось. Вот что я сделал:

iOS:

  1. Создал мой проект firebase, указав идентификатор пакета, соответствующий идентификатору пакета в файле Info.plist.
  2. Скачал GoogleService-Info.plist, добавил его в мой проект Xamarin iOS и установил действие сборки BundleResource
  3. Добавил Xamarin.Firebase. iOS .Crashlytics через Nuget (v. 3.14.0.3)
  4. добавил следующие строки кода в метод FinishedLaunching класса AppDelegate
Fabric.Fabric.SharedSdk.Debug = true;
Firebase.Crashlytics.Crashlytics.Configure();
Firebase.Crashlytics.Crashlytics.SharedInstance.Crash();

Когда я запускаю приложение (режимы отладки и выпуска), cra sh происходит, но в Firebase не отправляются никакие события, и в окне «Вывод приложения» нет связанных сообщений, указывающих на то, что могло пойти не так.

Некоторые источники говорят, что мне нужно добавить Xamarin.Firebase. iOS. Базовый пакет nuget, который я попробовал (v. 6.6.6) вместе с App.Configure () тем же способом, что и выше. К сожалению, когда я делаю это, я не могу построить проект. Я получаю огромное количество ошибок сборки "Не удалось связать нативное соединение, неопределенный символ ...".

Чего мне не хватает?

Android:

  1. Создал мой проект firebase, указав идентификатор пакета, соответствующий имени пакета в файле AndroidManifest. xml.
  2. Скачанные google-сервисы. json, добавил его в мой проект Xamarin Android и установил сборку действие для GoogleServices Json
  3. Добавлен Xamarin. Android .Crashlytics через Nuget (v. 2.9.4.4)
  4. Добавлен файл строк. xml в папку Resources / values ​​с действие по сборке AndroidResource и добавил этот код:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="com.crashlytics.android.build_id">236</string>
</resources>
Добавлены следующие строки кода в метод OnCreate класса MainActivity
Fabric.Fabric.With(this, new Crashlytics.Crashlytics());
Crashlytics.Crashlytics.HandleManagedExceptions();
Crashlytics.Crashlytics.Instance.Crash();

Когда я запускаю приложение (как в режиме выпуска, так и в режиме отладки), происходит cra sh, но никакие события не отправляются в Firebase. В режиме отладки в окне «Вывод приложения» существуют следующие записи:

[Fabric] Не удалось получить настройки из https://settings.crashlytics.com/spi/v2/platforms/android/apps/ [bundle-id] / settings

[Ответы] Не удалось получить настройки

[CrashlyticsCore] Полученные нулевые настройки, пропуск отправки отчета!

И после того, как cra * sh зарегистрировано на консоли:

[ CrashlyticsCore] Невозможно отправить отчеты. Настройки недоступны.

Что мне не хватает?

Спасибо!

****** ОБНОВЛЕНИЕ ******

После В предложении @Leon MSFT ниже я установил ВСЕ зависимости для проекта Android индивидуально, посмотрев список зависимостей nuget для каждого из них. Теперь я могу успешно инициализировать Crashlytics, он успешно обнаруживает ошибку и пытается сообщить о ней, но я получаю:

[CrashlyticsCore] java.util.concurrent.TimeoutException
[CrashlyticsCore]   at java.util.concurrent.FutureTask.get(FutureTask.java:206)
[CrashlyticsCore]   at com.crashlytics.android.core.CrashlyticsBackgroundWorker.submitAndWait(CrashlyticsBackgroundWorker.java:41)
[CrashlyticsCore]   at com.crashlytics.android.core.CrashlyticsController.handleUncaughtException(CrashlyticsController.java:320)
[CrashlyticsCore]   at com.crashlytics.android.core.CrashlyticsController$6.onUncaughtException(CrashlyticsController.java:300)
[CrashlyticsCore]   at com.crashlytics.android.core.CrashlyticsUncaughtExceptionHandler.uncaughtException(CrashlyticsUncaughtExceptionHandler.java:42)

Для iOS я попытался установить все пакеты Xamarin.Firebase. iOS nuget-пакеты и зависимости , но все еще не может собрать - различные родные сбойные, неопределенные ошибки сборки символов.

...