Могу ли я использовать несколько версий Xcode / Swift с одним Cocoapod? - PullRequest
0 голосов
/ 26 сентября 2018

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

Я использую XCode 9.0 для разработки в Swift 4.0, упаковал это в CocoaPod, и все это работало нормально.

Затем я обновился до XCode 10, но обнаружил, что когда я включаю свой CocoaPod, ему не нравится тот факт, что Pod был скомпилирован в более старой версии XCode.

Из моегоПонимая, это означает, что если я хочу использовать мой Pod в проекте XCode 10, мне придется собрать Pod в той же версии Xcode.Означает ли это также, что если я хочу, чтобы мой Pod поддерживал как можно больше версий, мне нужно было бы делать отдельные сборки с конкретными версиями Xcode, а затем выпускать их для отдельных репо (или версий) CocoaPod?

AmМне не хватает чего-то простого, что позволяет мне поддерживать как можно больше версий Swift / Xcode?

Cheers Dave

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Цели Swift 3, 4 и 4.2 могут сосуществовать и связываться друг с другом.

Вы сами решаете, когда и если вы хотите мигрировать для каждой цели, когда это имеет смысл для вашего проекта.,Хотя переход на Swift 4.2 определенно рекомендуется, это не процесс «все или ничего», так как цели Swift 3, 4 и 4.2 могут сосуществовать и связываться друг с другом.

Различные кокоаподы и разные версии проекта могуттакже сосуществуют.

Вы хотите иметь другую версию cocoapod по сравнению с версией вашего проекта, тогда вы должны внести следующие изменения в конец файла pod:

post_install do |installer|
    print "Setting the default SWIFT_VERSION to 4.2\n"
    installer.pods_project.build_configurations.each do |config|
        config.build_settings['SWIFT_VERSION'] = '4.2'
    end

    installer.pods_project.targets.each do |target|
        if ['SomeTarget-iOS', 'SomeTarget-watchOS'].include? "#{target}"
            print "Setting #{target}'s SWIFT_VERSION to 3.0\n"
            target.build_configurations.each do |config|
                config.build_settings['SWIFT_VERSION'] = '3.0'
            end
        else
            print "Setting #{target}'s SWIFT_VERSION to Undefined (Xcode will automatically resolve)\n"
            target.build_configurations.each do |config|
                config.build_settings.delete('SWIFT_VERSION')
            end
        end
    end
end

Иногда даже после запускаpod update ваш xcode принудительно обновляет версию проекта вашего cocoapod, затем в этом случае выберите cocoapod pod project и измените версию swift в настройках сборки.

0 голосов
/ 04 октября 2018

Моя проблема заключалась в том, что я отправлял скомпилированный двоичный файл в Cocoapod, а не в исходный код.К сожалению, скомпилированные двоичные файлы из Swift не являются ни прямой, ни обратно совместимой.

Модуль теперь является только развернутым исходным кодом, что, к сожалению, означает, что люди могут видеть шокирующий код, над которым я должен стоять, над которым я не писал!# legacyproblems

...