Миграция на Xcode 13 и чип Apple M. Проблемы с Firebase (Could not build Objective-C module 'Firebase', 'FirebaseCore/FirebaseCore.h' file not found) [РЕШЕНО]

cocoapods
xcode

#1

История такая. Пользовался до недавнего времени Macbook на Intel i5, на нем мой проект запускался и работал отлично. Проект использует Google Firebase в качестве backend. Обновил ноутбук до Macbook Air M1 и Xcode до 13го и понеслось. Главная проблема на сегодняшний день это: при попытки компиляции на симулятор или девайс, появляются 2 ошибки

  • ‘FirebaseCore/FirebaseCore.h’ file not found

  • Could not build Objective-C module ‘Firebase’

Мои pods, загруженные через терминал

Перерыл stackoverflow, испробовал кучу вариантов, таких как

  1. Quite xcode Delete “ProjectName.xcworkspace”, “Podfile.lock” and “Pods”. Delete project’s temp files located at ~/Library/Developer/Xcode/DerivedData (Command + Shift + G in finder) Run “pod install” from terminal. Open “ProjectName.xcworkspace”.

Error: Could not build Objective-C module ‘Firebase’ with Swift 5

  1. Adding arm64 to Excluded Architectures for the main project AND for the Pods project

и много еще чего, но результатов нет.

Очень надеюсь, что кто-нибудь сталкивался с подобным и поможет с решением.

PS: моя тема на stack-е https://stackoverflow.com/questions/69945264/transfer-to-apple-m1-xcode-shows-an-error-firebasecore-firebasecore-h-file-no


#2
  1. Вам нужно принудительно запустить Xcode через Розетту:
    программы/Xcode/меню свойств/ основное - поставить галку в поле “открыть с помощью Rosetta” - должно помочь.
  2. полностью переустановить подсы из под м1 - тоже вроде помогает, но тут не уверен.
    Это для проектов созданных на интеле.

Для новых проектов всё будет работать нативно.

Либо переставляйте галку для старых и новых проектов или можно создать дубликат Xcode и запускать каждый со своей настройкой (если место позволяет :wink: ))))


#3

@ODiN Спасибо за ответ. Не помогло. И еще вопрос: я переносил инфо со старого макбук на новый через Ассистент миграции, может ли это как-то влиять на мою проблему?


#4

Скорее всего. У меня при принудительном запуске через Розетту всё заработало. Но первые проблемы обычно и были с кокоа. Попробуйте удалить кокоа целиком (не подсы, а кокоа) и поставить заново. Ну и подсы дэинтегрейт-инстал )) Ну и мигрировать на М1 с Интел неочень хорошо - там много чего отличается. Документы на Айклауд держите, а проги лучше все заново поставить, главное кокоа - это с ним у вас проблема.

может лучше будет сбросит до заводских и поставить всё заново на чистую.


#5

@ODiN Переустановил макбук, даже откатился на Big Sur. Не помогло, если запускаю Xcode через Розетту, то появляется новая ошибка. Замкнутый круг какой-то

03


#6

Странное. Пробовали просто pod update?

Эти варианты помогали?
А эти?
#1 Install ffi

sudo arch -x86_64 gem install ffi

#2 Re-install dependencies

arch -x86_64 pod install

при установке кокоа пробовали использовать терминал через Розетту?


#7

так вы удалите подсы и, запустив через розетту терминал, поставьте снова.

Ну и очевидный, но тупой вариант: создайте новый проект и перетащите туда файлы )


#8

@ODiN спасибо, что накидали вариантов, но я все перепробовал и ничего не помогло! Это какой-то ужас. Я уже все комбинации перепробовал, даже таблицу составил со всеми возможными вариантами). Есть еще такой вариант , но пока не понимаю что он дает и как его правильно применить


#9

@ODiN Подскажите, пожалуйста, как грамотно и без косяков лучше перетаскивать файлы со старого проекта под Интел в новый под М1? Если я все-таки решусь на это))


#10

Ещё раз сначала:

  1. Вы уверены, что у вас проблема в подсах? То что у меня была похожая ошибка с подсами и у вас указывает на файер - это не значит, что ошибка однозначно с подсами ))) Делали pod deintegrate и собирали проект? Какая ошибка?

  2. Перетаскиваете мышкой файлы из одного проекта в другой и всё :slight_smile: (create groups, copy if needed), предварительно сделав копию. 03


#11

Чтобы мы говорили об одном: я копирую интеловский проект, открываю обычный терминал (или через Розетту?), набираю pod deintegrate, открываю MyProject.xcworkspace через обычный Xcode (или через Розетту?), собираю проект ⌘В и смотрю какая ошибка? Такой алгоритм? Если да, то в Терминале результат следующий (много строк)

Сводка

Last login: Tue Nov 16 11:37:46 on ttys000

putilov@192 Microfony % pod deintegrate

Deintegrating MyWaves.xcodeproj

Deleted 1 ‘Check Pods Manifest.lock’ build phases.

Deleted 1 ‘Embed Pods Frameworks’ build phases.

  • Pods_MyWaves.framework

  • Pods-MyWaves.debug.xcconfig

  • Pods-MyWaves.release.xcconfig

Deleted 1 ‘Check Pods Manifest.lock’ build phases.

  • Pods_MyWavesTests.framework

  • Pods-MyWavesTests.debug.xcconfig

  • Pods-MyWavesTests.release.xcconfig

Deleted 1 ‘Check Pods Manifest.lock’ build phases.

  • Pods_MyWavesUITests.framework

  • Pods-MyWavesUITests.debug.xcconfig

  • Pods-MyWavesUITests.release.xcconfig

Removing Pods directory.

xcode-select: error: tool ‘xcodebuild’ requires Xcode, but active developer directory ‘/Library/Developer/CommandLineTools’ is a command line tools instance

――― MARKDOWN TEMPLATE ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

Command


/usr/local/bin/pod deintegrate

Report

  • What did you do?

  • What did you expect to happen?

  • What happened instead?

Stack


CocoaPods : 1.11.2

Ruby : ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.arm64e-darwin20]

RubyGems : 3.0.3

Host : macOS 11.6.1 (20G224)

Xcode : ()

Git : git version 2.30.1 (Apple Git-130)

Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib

Repositories : trunk - CDN - https://cdn.cocoapods.org/

Plugins


cocoapods-deintegrate : 1.0.5

cocoapods-plugins : 1.0.0

cocoapods-search : 1.0.1

cocoapods-trunk : 1.6.0

cocoapods-try : 1.2.0

Podfile


# Uncomment the next line to define a global platform for your project

platform :ios, '10.0'

target 'MyWaves' do

# Comment the next line if you're not using Swift and don't want to use dynamic frameworks

use_frameworks!

# Pods for MyWaves

# pod 'Firebase/Core'

pod 'Firebase/Auth'

pod 'Firebase/Database'

# pod 'Firebase/Crash'

# pod 'Firebase/Storage', '~> 4.0'

pod 'Firebase/Crashlytics'

pod 'Firebase/Storage'

pod 'Firebase/Analytics'

pod 'Fabric'

# pod 'Crashlytics'

target 'MyWavesTests' do

inherit! :search_paths

# Pods for testing

end

target 'MyWavesUITests' do

inherit! :search_paths

# Pods for testing

end

end

Error


Errno::ENOTEMPTY - Directory not empty @ dir_s_rmdir - /Users/putilov/Desktop/Microfony/Microfony/Pods

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1431:in `rmdir'

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1431:in `block in remove_dir1'

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1442:in `platform_support'

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1430:in `remove_dir1'

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1423:in `remove'

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:760:in `block in remove_entry'

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1480:in `postorder_traverse'

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:758:in `remove_entry'

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:610:in `block in rm_r'

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:606:in `each'

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:606:in `rm_r'

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/pathname.rb:589:in `rmtree'

/Library/Ruby/Gems/2.6.0/gems/cocoapods-deintegrate-1.0.5/lib/cocoapods/deintegrator.rb:38:in `remove_sandbox'

/Library/Ruby/Gems/2.6.0/gems/cocoapods-deintegrate-1.0.5/lib/cocoapods/deintegrator.rb:16:in `deintegrate_project'

/Library/Ruby/Gems/2.6.0/gems/cocoapods-deintegrate-1.0.5/lib/cocoapods/command/deintegrate.rb:48:in `run'

/Library/Ruby/Gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'

/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/command.rb:52:in `run'

/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/bin/pod:55:in `<top (required)>'

/usr/local/bin/pod:23:in `load'

/usr/local/bin/pod:23:in `<main>'

――― TEMPLATE END ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

[!] Oh no, an error occurred.

Search for existing GitHub issues similar to yours:

https://github.com/CocoaPods/CocoaPods/search?q=Directory+not+empty+%40+dir_s_rmdir+-+%2FUsers%2Fputilov%2FDesktop%2FMicrofony%2FMicrofony%2FPods&type=Issues

If none exists, create a ticket, with the template displayed above, on:

https://github.com/CocoaPods/CocoaPods/issues/new

Be sure to first read the contributing guide for details on how to properly submit a ticket:

https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md

Don’t forget to anonymize any private data!

Looking for related issues on cocoapods/cocoapods…

Found no similar issues. To create a new issue, please visit:

https://github.com/cocoapods/cocoapods/issues/new

putilov@192 Microfony %


#12

Deintegrate без разницы как делать.
Workspace - это файл для работы с подсами. После их удаления, воркспейс тоже удаляйте. Запускать надо прожект-файл, как без подсов.


#13

Так, сделал и получил ошибку

No such module ‘Firebase’

Но это не факт, что других нет, процесс сборки останавливается на первой критической ошибке, если я правильно понимаю, да?

тем не менее, значит все-таки проблема в подсах Firebase и Cocoapods?


#14

Блин )))
Смотрите: вы убрали все зависимости. Если у вас где-то использовались классы из зависимостей, то естественно их надо закомментировать, чтобы остался чисто ваш код без всяких инъекций ) Сейчас именно на это ругается: у вас импортируется зависимость (Firebase), контрой нет. При компиляции вам же компилятор показывает, где у вас ошибка. Приведите в порядок всё и должно работать. Если всё нормально, то тогда терминал через Розетту и ставьте подсы. Если норм, то раскомменьируйте старый код и смотрите. Дальше видно будет.


#15

@ODiN Удалил поды, зачистил код, все собирается. Установил поды и стал по одной строчке возвращать код и нашел в одном из файлов следующую ошибку, причем она даже не критическая

Если закомментировать с 208 по 215 строки, то проект собирается, но и функционал выполняется не весь, к сожалению, пока. Использую сториборд, на реальном девайсе с iOS 14 отрисовывается криво, цвета не те, но вот на симуяторе все отлично и на стареньких девайсах с iOS 10 и 12 тоже работает нормально. Не могу понять кому верить)). Спасибо вам за участие в решение проблемы!


#16

Ну то есть вся тема свелась к рекомендации, которую вам в самом начале дали: переустановить зависимости :slight_smile:
Ошибка понятная, тк кастить типы нужно опционально (как вам компилятор предлагает), потому что процесс может провалиться.


#17

@ODiN Нет, тут хитрее. Проблема была именно в этой строчке. Я взял голый интеловский проект и закоменнтировал эту строку и все заработало, переустановка подов тут ни причем, тем более я эту процедуру раз 100 делал из обычного терминала из терминала под розеттой, разными командами


#18

Could not build Objective-C module ‘Firebase’

  • такая ошибка не может быть вызвана неправильным кастом от слова совсем :grin:

То что вы показываете - это всего лишь предупреждения о неправильном касте, а не ошибка билда.

«

тем более я эту процедуру раз 100 делал из обычного терминала из терминала под розеттой, разными командами

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


#19

@ODiN Смотрите, тут наслоилось две же проблемы. Изначально выскакивала ошибка
Could not build Objective-C module ‘Firebase’, ее ришил вашими подсказками и вылезла ошибка Abort trap: 6 Command CompileSwift failed with a nonzero exit code (как указывал выше), эта ошибка лечиться именно работой со строками

let valuesEmail = [self.loginUser: emailTextField] as [String : String]

Может, конечно, в какой-то момент помогло и pod deintegrate, но я и до этого проводил эту процедуру (брал отсюда). Так или иначе с этими проблемами разобрался. Еще раз спасибо вам за участие! Сейчас осталось понять почему проект выглядит по-разному: на старых iPhone и симуляторе все отлично, на iPhone SE 2020 c iOS 14 выглядит криво, экраны Storyboard выглядят иначе, чем в этом же проекте но в Xcode 11 на старом MacBook Intel. Попробую отправить архив в Apple и установить уже через TestFlight

PS: откатился до Xcode 12.0, может это тоже сыграло какую-то роль