Подтвердить что ты не робот

IOS: Crashlytics Crashing on Init

В моем приложении AppDelegate я звоню

[Fabric with:@[CrashlyticsKit]];

и все работает отлично. Теперь я вытащил свой код на другую машину, и одна и та же строка дает мне следующую ошибку:

*** Terminating app due to uncaught exception 'FabricException', reason: '[Fabric] Value of Info.plist key "Fabric" must be a NSDictionary.'

Я не знаю никаких добавлений в моем проекте plist. Любые идеи, что эта ошибка может иметь в виду и как ее исправить?

4b9b3361

Ответ 1

Ткань автоматически вставляет текст текста в ваш прикладной слой, когда вы его устанавливаете. Они существенны, и Fabric выдает исключение при инициализации, если их нет.

К сожалению, на самом деле это не говорит вам об этом, поэтому мы столкнулись с этим сбоем в проекте, где plist был автоматически сгенерирован инструментом - который перезаписал то, что добавил Fabric.

Для справки, это то, что часть Fabric части plist выглядит в текущей версии (не знаю, где номер версии, но последняя версия с 15 июня 2015 года).

<key>Fabric</key>
<dict>
        <key>APIKey</key>
        <string>your-api-key</string>
        <key>Kits</key>
        <array>
                <dict>
                        <key>KitInfo</key>
                        <dict/>
                        <key>KitName</key>
                        <string>Crashlytics</string>
                </dict>
        </array>
</dict>

Ответ 2

Еще один способ решения этого приложения с использованием Fabric.

  • Запустите приложение Fabric и войдите в систему с вашим идентификатором пользователя.
  • Нажмите "Добавить новое приложение"
  • Выберите файл .xcodeproj и следуйте инструкциям на экране.

Не добавляйте ключ Fabric вручную в ваш файл .info plist.

Ответ 3

Решение потребовало от нас обновления Crashlytics. Другие цели, которые мы установили, имели последнюю версию, и все они работают нормально, но последнее обновление (3.0.9 на момент публикации), похоже, устраняет проблему.

Ответ 4

Это случилось со мной, и именно так я решил это (спасибо, что ведет к каждому.)

Контекст. Если в вашем проекте Xcode имеется несколько разных целевых объектов, создание нового приложения в приложении Mac Fabric, по-видимому, недостаточно.

Решение. Если вы выберете один и тот же проект (например, для его версии Pro), приложение Fabric не будет правильно касаться Pro'splist. Так что просто скопируйте словарь словаря Fabric вашей не-pro версии .plist и вставьте его в свою версию Pro's. API-ключ находится на уровне организации, поэтому это правильный способ сделать это.

Ответ 5

просто измените тип ключа Fabric от String to Dictionary. перейдите в свой проект-info.plist > Ткань > наборы > item0 > Имя_имя и измените тип на словарь. проблема решена для меня

Ответ 6

Может быть, это будет выглядеть странно, но одна и та же проблема возникла со мной, и именно так я решил проблему. У меня есть проект с несколькими целевыми и схемами, у меня также есть две дополнительные цели для модульных тестов и тестов пользовательского интерфейса. Решение заключалось в том, чтобы снять отметку с этих целей тестов на вкладках "Анализ", "Выполнить", "Профиль" и "Архив" в разделе "Управление схемами" > "Редактирование" > "Сборка". См. Изображение ниже:

введите описание изображения здесь

Ответ 7

Для меня причина:

Пока вы создаете новую цель - автоматически создаются новые файлы Info.plist. Таким образом, вам нужно поместить свойство Fabric во все файлы Info.plist.

<key>Fabric</key>
<dict>
    <key>APIKey</key>
    <string>43336ce109856e3cf4452829a8e6b6783886fefb</string>
    <key>Kits</key>
    <array>
        <dict>
            <key>KitInfo</key>
            <dict/>
            <key>KitName</key>
            <string>Crashlytics</string>
        </dict>
    </array>
</dict>

Сначала я пропустил это и поместил этот код только в первый - начальный файл Info.plist.