«pod install» создает атрибут «SWIFT_VERSION = 5.0» внутри Pods.project (а Xcode 10.2.x никогда не устанавливался на эту машину). Ошибка? - PullRequest
1 голос
/ 05 июня 2019

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

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

Но мы выделили проблему, которую мы не знаем, является ли она функцией, ошибкой, известным фактом ... Мы опишем ее здесь как можно подробнее,чтобы увидеть, может ли кто-то пролить на него свет

(Это будет перекрестное сомнение в stackoverflow / CocoaPods github).

РЕДАКТИРОВАТЬ: поток Gitub Cocoapods здесь: https://github.com/CocoaPods/CocoaPods/issues/8876

Контекст:

Наше архитектурное решение должно охватывать ряд версий iOS / Swift / Xcode для его развертывания.Последние сертифицированные версии, с которыми мы имеем дело: Swift 4.0 + Xcode 10.1 + Cocoapods 1.4.0 (да, мы знаем, что Cocoapods 1.7.1 вышел, но наш процесс проверки заставляет нас по-прежнему работать с 1.4.0).

В любом случае, что все это значит?Это означает, что когда мы разрабатываем наш код, нам нужно обновить зависимости наших внутренних библиотек, ситуация, которая обычно разрешается с помощью старой доброй установки pod.

Эта установка pod проверяет все наши репозитории «братских проектов».и он загружает все новые внутренние модули, в которых он нуждается, и (здесь важная часть) воссоздает проект «Pods» (это означает, что он воссоздает файл Pods.project).

Этот Pods.project являетсябольшой «зонтик», где все импортированные каркасы будут жить в нашем большом решении.Если мы просмотрим этот Pods.project из XCode, мы можем найти ключевое слово «SWIFT_VERSION».Когда мы делаем это, ожидаемый (и требуемый) результат для нашего проекта «неопределен».

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

Cocoapods - это часть нашего инструментария, которую необходимо периодически проверятьпоэтому на некоторых машинах мы также начали устанавливать дополнительные версии cocoapods (1.6.0, 1.6.1, 1.7.0 и 1.7.1) помимо нашей сертифицированной версии 1.4.0

Что это значит?Установка различных версий Cocoapods также приводит к дополнительным установкам гемов в фоновом режиме, в основном «fourflusher», «xcodeproj» и т. Д. *

Как правило, если у вас есть cocoapods 1.4.0 (и 1.6.0, 1.6.1, 1.7.0 и 1.7.1) вы получаете такие вещи, как: установлено более одной версии fourflusher (2.0.1, 2.2.0), установлено более одной версии cocoapods (логически) и установлено более одной версии xcodeproj(обычно 1.5.6, 1.8.X и 1.9.0).

Что все это означает в итоге?

Наличие последних версий всех этих дополнительных драгоценных камней, связанных с кокосовыми стручками, приводит кследующая (нежелательная для нас) ситуация:

Действие «pod install» (предварительно удалив папку «Pods» и файл «Podfile.lock») воссоздает файл Pods.project, но с атрибутом SWIFT_VERSION, установленным в«5.0 (не поддерживается)».Почему?

Особенно, когда мы никогда не устанавливали Xcode 10.2.X на этих машинах, мы запускаем «pod install»

Почему xcodeproj решает добавить этот атрибут (со значением 5.0) внутриPods.project, когда в прошлом (например, Xcodeproj версии 1.5.6) он оставлял это как «неопределенное»?

ПРИМЕЧАНИЕ. Если вместо cocoapods 1.7.X мы обновляемся до cocoapods 1.6.x,затем гем xcodeproj поднимется до версии 1.8.X

Поведение этой другой версии xcodeproj (1.8.X), по-видимому, похоже на 1.9.X, но вместо добавления (мы считаем ненужным) атрибута SWIFT_VERSION сзначение 5.0, он также создает его, но со значением 4.2.

Это не проблема, если у вас просто установлен Xcode 10.1, так как эта версияXcode понимает, как работать со Swift 4.2, или, по крайней мере, он предлагает вам обновить настройки вашего проекта.

Наш актуальный вопрос: все ли это известная ситуация? почему cocoapods / Xcodeproj 1.8.X / 1.9.0 решили поднять SWIFT_VERSION до 4.2 / 5.0

(особенно в случае 5.0, где Xcode 10.2. (X) никогда не был установлен на этих машинах)

На всякий случай, если кто-то может подумать, что у какого-либо родного проекта уже установлен внутренний параметр SWIFT_VERSION версии 5.0 (и это может быть причиной распространения этого значения в файл Pods.project), мы должны сказать, что для подпроекта / фреймворка SWIFT_VERSION не установлено значение 5,0

Почему мы это знаем? Потому что мы запускаем эту команду в корне нашей большой папки решений

grep “SWIFT_VERSION = 5\.0” * -r 

и он никогда не найдет экземпляр 5.0.

Кроме того, внутри каждого модуля частного фреймворка мы вручную установили на 4,0 атрибут s.swift_version.

Любые подсказки о том, почему «установка pod» вызывает (нежелательный) SWIFT_VERSION 5.0 внутри файла Pods.project, даже если на нем никогда не было установлено Xcode 10.2.x? Это ошибка? особенность? известная ситуация? ожидаемая ситуация?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...