Мы с коллегой берем на себя приложение для iOS, размещенное на GitLab. Это приложение используетcocopods, а каталог Pods включен в репозиторий. Насколько я понимаю, мы должны иметь возможность вытащить репо и запустить его в Xcode без проблем.
Мой коллега может загрузить приложение из системы управления версиями и запустить его на своем компьютере. У меня возникают ошибки, такие как «Не удается найти тип« AnimationView »в области видимости». У него MacBook M1, у меня MacBook Air на базе Intel. Я открываю файл рабочей области, созданный CocoaPods, а не xcodepro.
Вот список вещей, которые я пробовал:
pod reintegrate
, затем pod update
, открыв Xcode и очистив папку сборки, а затем снова запустив.i386
и x86_64
, а не по умолчанию.Кажется, ни один из них не работает, я в растерянности на данный момент. Поскольку он работает на компьютере моего коллеги, я предполагаю, что должно быть что-то не так с тем, как мое приложение обнаруживает библиотеки или как оно компилируется.
Вот мой подфайл:
# Uncomment the next line to define a global platform for your project
platform :ios, '13.0'
target 'projectname' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for projectname
pod 'Purchases'
pod 'Firebase/Analytics'
pod 'Firebase/Core'
pod 'Firebase/Storage'
pod 'Firebase/Database'
pod 'Firebase/Firestore'
pod 'Firebase/Auth'
pod 'SwiftyJSON'
pod 'CleanyModal'
pod 'MagicTimer'
pod 'lottie-ios'
pod 'FBSDKCoreKit'
end
@Larme Нет ошибок при запуске pod install --verbose
Я подозреваю, что проблема не связана с стручками.
Причина этого в том, что если вы запускаете новый проект iOS Xcode с именем emptyproj, а затем закрываете проект iOS в Xcode, вы можете затем перейти в этот каталог проекта и поместить Podfile в этот каталог с указанным выше содержимым, но с именем projectname заменен на emptyproj, тогда вы можете сделать
pod install
А затем, как только он будет создан emptyproj.xcworksapce, откройте его в Xcode.
Вы заметите, что нет символа AnimationView. Есть только LottieAnimationView.
Таким образом, отсутствующий символ должен быть в реальном приложении на GitLab, а не в зависимостях модуля.
Что я предлагаю, так это посмотреть на все этапы сборки в сборке проекта, чтобы увидеть, запускаются ли какие-либо сценарии, зависящие от архитектуры.
Другая стратегия отладки заключается в том, чтобы ваш коллега подключился к вашей машине и самостоятельно выполнил настройку на вашей машине, что может привести к успеху (неупомянутый шаг) или неудаче (более убедительное доказательство того, что это вопрос, связанный с машиной или архитектурой).
Ага, именно это и произошло. Я изменил AnimationView на LottieAnimationView, и он скомпилировался. Мой коллега, должно быть, использовал более старую версию lottie-ios!
Похоже, у вас другая версия lootie, попросите вашего коллегу проверить версию, которую он использует в данный момент.
Для этого вы можете использовать команду:
pod outdated
Когда вы запускаете устаревший модуль, CocoaPods будет перечислять все модули, которые имеют более новые версии, чем те, которые перечислены в Podfile.lock.
Затем
Используйте модуль с конкретной версией, например:
pod 'lottie-ios', '3.5.0'
Вместо:
pod 'lottie-ios'
Если вы не добавили версию при запуске «установки модуля», вы получите самую новую доступную версию.
А AnimationView является частью библиотеки лотереи. После добавления номера версии запустите «pod install».
В таком случае вы можете запросить Podfile.lock вашего коллеги и проверить уже установленную конкретную версию соответствующего модуля, и если есть какие-либо несоответствия с установленной версией с вашей, обновите файл вашего модуля, добавив это версию, а затем установить модуль. а также, если вам, ребята, не нужно работать с последней версией модулей, всегда лучше использовать модуль с версиями.
pod install --verbose
не показывает ошибок?