Как обновить зависимости Swift в Xcode

После создания нового пакета swift с зависимостями я вызываю swift package generate-xcodeproj. Если у моих зависимостей есть новая версия, я вызываю swift package update. Новая версия моей зависимости загружается и собирается, но теперь Xcode неверно ссылается на старую версию зависимости. Я могу позвонить swift package generate-xcodeproj снова, но это удалит все настроенные мной настраиваемые цели.

Как мне обновить мои быстрые зависимости и мой проект Xcode, не удаляя мои настраиваемые цели?


person joels    schedule 28.09.2016    source источник
comment
У меня такой же вопрос. При создании новой копии .xcodeproj также удаляется вся структура папок, которая использовалась для организации исходных файлов.   -  person Craig Otis    schedule 17.02.2017
comment
Я создал инструмент, который поможет с этим. github.com/saltzmanjoelh/XcodeHelperCli После сборки и копирования в / usr / local / bin или в другое место вы можете вызвать xchelper update-packages -s. Это обновит ваши пакеты и создаст символические ссылки для вашего проекта Xcode. Таким образом, когда ваши пакеты получают новые версии, вам не нужно обновлять ссылки вручную.   -  person joels    schedule 18.02.2017


Ответы (4)


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

Для меня решение было просто перейти к File - ›Swift Packages -› Update to Latest Package Versions.

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

person esilver    schedule 14.07.2020
comment
Удивительно, но для меня Facebook 7.1.1 не обновляется до 8.0. Что еще мне нужно сделать? - person Zorayr; 25.02.2021

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

При запуске нового проекта:

  1. создать проект Xcode для вашего приложения MyApp.xcodeproj
  2. сохранить как рабочую область MyApp.xcworkspace
  3. создать пакет для ваших зависимостей
mkdir MyDeps && cd MyDeps
swift package init --type library
  1. добавить зависимости к Package.swift
  2. создать проект Xcode для пакета зависимостей
swift package generate-xcodeproj
  1. добавить созданный проект MyDeps.xcodeproj в свою рабочую область MyApp.xcworkspace
  2. добавить цель MyDeps.framework в Linked Frameworks вашего приложения MyApp.xcodeproj

При такой настройке вы можете свободно обновлять зависимости в Package.swift и при необходимости повторно создавать зависимый проект.

person paiv    schedule 18.02.2017

Многие проблемы с пакетами, которые не обновляются, связаны с тем, что правила быстрой версии пакета ограничивают автоматические обновления пакетов только текущей основной версией, то есть v3.3.1 пакета обновляется до v3.4.0, но не обновляется автоматически до v4.0.1 . Поэтому использование параметров обновления в Xcode не обязательно приводит к получению последней основной версии пакета.

Чтобы решить эту проблему, откройте проект на панели проектов, выберите проект (не цели), затем выберите вкладку «Пакеты Swift». Дважды щелкните пакет, который вы хотите обновить, и измените минимальную версию на следующую основную версию.

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

person BitByteDog    schedule 19.05.2021

У меня возникла проблема с CryptoSwift при использовании Xcode 12.5. Моя версия была 1.3.1, и проблема была исправлена ​​в 1.4.0. Я пытался :

  1. обновление по файлу - ›Пакеты Swift -› Обновление до последних версий пакета.
  2. xcodebuild -resolvePackageDependencies

Но оба не вышли.

Я вручную изменил цель - ›Пакеты Swift -› Правила версии и Xcode автоматически установили более новую версию, и моя ошибка исчезла.

person Lovina Hajirawala    schedule 03.05.2021