«Слишком много файлов символов» после успешной отправки моих приложений

201

Я скачал Xcode 6 GM и отправил два приложения Swift в магазин приложений сегодня. Оба прошли все проверки перед загрузкой и все остальные материалы, которые они должны были пройти и были успешно отправлены. Но потом я получил два электронных письма от Apple ... по одному для каждой программы, и они оба сказали это:

Уважаемый разработчик,

Мы обнаружили одну или несколько проблем с вашей недавней доставкой для "xxxxxxxx" (имя моего приложения удалено). Ваша доставка прошла успешно, но вы можете решить следующие проблемы при следующей доставке:

Слишком много файлов символов - Эти символы не имеют соответствующего среза ни в одном двоичном файле [1431D977-72BC-308F-AB71-71529F25400B.symbols, 158C72A7-98AC-3F07-B2BE-88427591B413.symbols, 44973EAC-563E-340C-B549-55BA.SMS401 , 678BF06F-0C3D-3A09-BFBF-699C7079FECD.symbols, 90907DDB-0400-38ED-BB5F-0C12333C0624.symbols, 93B79949-5757-374A-97B9-825AE1A61B7D.symbols, ABA05220-4FB0-397F-AFBB-08774A82F4CA.symbols, AD70F02A -4422-32B8-8C40-CF9B45A2CCC6.symbols, B0CC9F7D-C542-3E18-A518-B28B7ECABE80.symbols, BF6A4C3B-6FA5-3C51-8404-19C2F132458D.symbols-C9D6EFE69AF69B-FB-C68D-476-C68-F689 -3845-BAD5-F6E51045D396.symbols, D4967AA3-8FB0-3712-B0DE-7F4144AF8F4B.symbols, D813B314-AD37-31D4-B675-442052994495.symbols, DF42A13F-08D8-3E71-B221-FC357E0B60F5.symbols, F5F636C2-F0E0-3CA7 -8F7D-C49A36CD5C65.symbols]

После исправления проблем вы можете использовать Xcode или Application Loader для загрузки нового бинарного файла в iTunes Connect.

С Уважением,

Команда App Store

Я собираюсь догадаться, что на самом деле не имеет ничего общего со мной или моими приложениями ... и это всего лишь изворот в первый день подачи заявок в Swift? Оба приложения по-прежнему находятся в режиме ожидания подтверждения. Я, конечно, не могу придумать ничего, что я мог бы изменить, чтобы убрать то, что они сказали! Кто-нибудь еще отправит приложение Swift и получит этот ответ? Думаешь, я должен просто проигнорировать это и подождать, чтобы увидеть, что произойдет?

Джим Барбер
источник
Мой сказал, что и Invalid Swift Support. Есть идеи, почему я могу получить это? Я использую последний Xcode.
Дели
та же проблема здесь, и мое приложение не может быть передано на рассмотрение. из-за этой проблемы. кто-нибудь решил?
yudun1989
1
та же проблема здесь. в любом случае отправлено на рассмотрение .. давайте посмотрим, что произойдет :)
dandoen
Оба моих приложения Swift были только что одобрены в App Store ... так что, думаю, я ни о чем не беспокоился! Вот так ... :)
Джим Барбер

Ответы:

128

Это происходит, если вы включаете отладочную информацию ваших библиотек в архив проекта, но не включаете двоичные файлы.

  1. Откройте окно органайзера в Xcode
  2. Щелкните правой кнопкой мыши архив, в котором возникла эта проблема, и выберите «Показать в Finder».
  3. Щелкните правой кнопкой мыши файл архива и выберите «Показать содержимое пакета».
  4. В папке «dSYMs» вы увидите несколько файлов. Если вы запустите dwarfdumpконсольную команду для этих файлов, вы получите список строк UUID:

    dwarfdump -u MyFile.dSYM

Я уверен, что вы найдете несколько соответствующих UUID из электронной почты Apple.

Чтобы избежать этого предупреждения, вы должны включать в свой архив только dSYM файлы вашего приложения, а не библиотеки. Для этого вам нужно изменить конфигурацию сборки библиотек, чтобы не генерировать dSYMфайл. Просто найдите «формат информации отладки» в конфигурации и измените его с DWARF with dSYM Fileна DWARFтолько.

Например, на скриншоте ниже вы найдете каркас Stripe iOS.

Скриншот настроек проекта XCode

Михаил Гребионкин
источник
13
dwarfdump -u *в папке, чтобы увидеть все UUID
Jon
@ Джон оооо, почему я вижу это после того, как я сделал один за другим? :) в любом случае, спасибо!
Серж Рубенс
6
Будет ли удаление файлов dSYM означать, что любые сбои, связанные с третьими сторонами, больше не будут символизироваться на Crashlytics (или любом другом инструменте отчетов о сбоях)?
Эудженио
Однако, если вы используете firebase \ fabric, файлы dsym следует использовать для просмотра журналов сбоев на сайте. Они все еще работают с этим изменением?
Маттиа Ланчери
91

Если вы столкнулись с этой проблемой при использовании CocoaPods, добавьте это в ваш Podfile:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf'
        end
    end
end

Он установит формат отладочной информации в DWARF только для всех ваших целей Pod (не основной цели приложения)

Денис Кутлубаев
источник
@wzbozon Да, я прошу просто перепроверить. Потому что после того, как я это сделал, Crashlyticts перестают работать. Спасибо!
Сезар Родригес
Crashlytics должен продолжать работать для вашего приложения, так как этот скрипт изменяет настройки сборки только для модулей.
Стэн
1
Я согласен. Но вы не увидите отчеты для стручков. Можно также установить DWARF с файлом dSYM только для некоторых модулей, например, для модулей разработки.
Денис Кутлубаев
@ Стэн, ты хочешь сказать, что Crashlytics продолжит работать? Сезар Родригес, кажется, говорит, что это не сработает.
Airowe
8
Это решило это для меня. Не забывайтеpod install
зажигать
18

Если вы используете CocoaPods и ваше приложение настроено на использование только arm64 (т.е. в info.plist вашего проекта есть только arm64)

<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>arm64</string>
</array>

затем вы можете попробовать добавить следующий скрипт в ваш Podfile для решения этой проблемы.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
      config.build_settings['ARCHS'] = 'arm64'
    end
  end
end

И

установить цели всех ваших проектов (не цели в модулях) только на arm64

Настройки проекта XCode

Ссылка на выпуск CocoaPods Github

Джерри Чен
источник
Предположительно, вы должны включить arm64e и сейчас, нет?
прокладка
Я бы включил arm64s для симулятора. Он будет удален автоматически для релизных сборок.
киберген
13

У меня есть эта проблема из-за проекта имеет действительную архитектуру arm64, где цели CocoaPods имеют действительную архитектуру arm64, armv7 и armv7s .

Чтобы проверить, какая цель имеет какую действительную архитектуру, выполните следующие шаги

  1. В Xcode -> Окно -> Органайзер
  2. Выберите архив и откройте в Finder
  3. В файле .xcarchive , Показать содержимое пакета
  4. Откройте терминал и укажите путь к папке dSYMs .

  5. Введите команду, dwarfdump --uuid *и она покажет список UUID с действительными архитектурами.

UUID будет совпадать с предупреждением Apple по электронной почте

Предполагается, что основной проект и какао-бобы имеют одинаковую архитектуру. Делая это, это решит проблему.

Mios
источник
Я думаю, это лучше всего объясняет, что происходит. У меня есть эти предупреждения только о библиотеках с архитектурой armv7, потому что мой проект построен только для arm64. Остается вопрос, стоит ли мне добавить armv7 в проект или удалить его из Pods.
Ариэль Богдзевич
6

Работал для меня, включив битовый код - он был выключен раньше

Включить битовый код - Да

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

Тарун Сира
источник
1

Вышеупомянутое помогло устранить неполадки, но не могло решить. У нас был проект на iOS 12, но pods 10 - привели к куче файлов armv7. Обновление модуля под iOS 12 решено мгновенно.

Дреес
источник
0

Если бы та же проблема была исправлена, то есть "General" => "Информация о развертывании" => "Цель развертывания" для всех моих целей.

ARR
источник
0

В XCode, посмотрите в Настройках сборки для "Обрезать символы отладки во время копирования" (COPY_PHASE_STRIP). При включении символы отладки не включаются в ваш .app и помещаются в файл .dSYM. В противном случае ваш .app содержит эти символы. (По умолчанию символы отладки удаляются из сборок релиза по причинам запутывания. Вы, вероятно, не должны изменять этот параметр для конфигурации релиза.)

Убедитесь, что вы отметили эту опцию в настройках проекта.

https://possiblemobile.com/2015/03/symbolicating-your-ios-crash-reports/

Санад Барджави
источник
0

Проблема для меня была строка в моем build.xcconfigфайле. Я должен был удалить

IPHONEOS_DEPLOYMENT_TARGET = 11.0

который настраивал проект на сборку только для arm64 (а не arm7). Следуя шагам, @miOSя увидел, что проект pods строится для обоих.

Фрэнк
источник
1
stackoverflow.com/a/49063850/3293172 В iOS 11 прекращена поддержка armv7 и armv7s, поэтому требуется только arm64, если у вас есть цель развертывания> = iOS 11.0.
Ариэль Богдзевич
-3

Для меня все было очень просто. У меня была такая же проблема, и я не знал, что делать в течение недели.

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

Скриншот флажка и всплывающего окна:

Скриншот флажка и всплывающего окна

lenden
источник
Я действительно надеюсь, что вы будете более подробны ... Я не знаю, о каком флажке или всплывающем окне вы говорите. Может быть, снимок экрана?
Луи Хонг,
gyazo.com/6d7bb2035979cb75253ba92a40e8d898 Я думаю, что вижу это, это
Луи Хонг,
6
Да, но это приведет к удалению всех символов из пакета, и, следовательно, вы не получите символические отчеты о сбоях? (Они даже предоставляют символические отчеты о сбоях в приложениях App Store теперь с TestFlight?)
Маркус Раутопуро
31
Это не правильное решение проблемы. Это позволяет избежать симптомов, а не решить проблему. См. Ответ Mikhails для описания того, как вы загружаете ненужные символы. Этот ответ предотвращает загрузку любых символов, таким образом нарушая символ сбоя через iTunesConnect
JConway
3
НЕ делайте этого, если вы это сделаете, вы не сможете проанализировать
свое