Swift Version NativeScript - PullRequest
       13

Swift Version NativeScript

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

Используя NativeScript, как я могу запустить проект под iOS? Я получаю эти сообщения при запуске tns run iOS --bundle

Webpack compilation complete. Watching for file changes.
Webpack build done!
Copying template files...
Platform ios successfully added. v4.2.0
Executing before-shouldPrepare hook from /Users/Zian/Documents/Projects/NativeScript/Hybrid/hooks/before-shouldPrepare/nativescript-dev-webpack.js
Preparing project...
Executing before-prepareJSApp hook from /Users/Zian/Documents/Projects/NativeScript/Hybrid/hooks/before-prepareJSApp/nativescript-dev-webpack.js
Installing pods...
Analyzing dependencies
Downloading dependencies
Installing Socket.IO-Client-Swift (11.1.3)
Installing StarscreamSocketIO (8.0.7)
Installing Toaster (2.0.4)
[!] Unable to determine Swift version for the following pods:

- `Socket.IO-Client-Swift` does not specify a Swift version and none of the targets (`Hybrid`) integrating it have the `SWIFT_VERSION` attribute set. Please contact the author or set the `SWIFT_VERSION` attribute in at least one of the targets that integrate this pod.
- `StarscreamSocketIO` does not specify a Swift version and none of the targets (`Hybrid`) integrating it have the `SWIFT_VERSION` attribute set. Please contact the author or set the `SWIFT_VERSION` attribute in at least one of the targets that integrate this pod.
- `Toaster` does not specify a Swift version and none of the targets (`Hybrid`) integrating it have the `SWIFT_VERSION` attribute set. Please contact the author or set the `SWIFT_VERSION` attribute in at least one of the targets that integrate this pod.
Unable to apply changes on device: 21FFE2BB-EB0D-48E3-A7AD-28CA08DD21E5. Error is: Command pod failed with exit code 1 Error output: 

[!] Automatically assigning platform `ios` with version `8.0` on target `Hybrid` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.


Кто-нибудь может мне помочь?

Ответы [ 5 ]

0 голосов
/ 24 апреля 2019

Проблема в Cocoapods 1.6.x, которые ведут себя по-разному, когда дело доходит до SWIFT_VERSION. Раньше можно было установить SWIFT_VERSION в хуке post_install в Podfile, но теперь команда pod install завершается неудачно, даже не доходя до post_install. Лучшее решение - использовать Cocoapod, для которого уже установлен SWIFT_VERSION, т. Е. В случае возникновения ошибки попробуйте связаться с автором Pod. Между тем, в качестве обходного пути, вы можете добавить скрипт pre_install в ваш файл <path to App_Resources/iOS/Podfile со следующим содержимым:

pre_install do |installer|
    installer.analysis_result.specifications.each do |s|
        if s.name == 'Socket.IO-Client-Swift' || s.name == 'Starscream' || s.name == 'StarscreamSocketIO' || s.name == 'Toaster'
            s.swift_version = '4.2'
        end
    end
end

Для каждого из модулей вы можете установить разные версии Swift в зависимости от их требований.

0 голосов
/ 05 апреля 2019

Вот реальное исправление! Вы не можете придерживаться Cocoapods 1.5.3 навсегда ...

Понижение до 1.5.3 не является правильным обходным путем и не будет устойчивым в будущем. Фактически, эта ошибка происходит из-за нового поведения, представленного в версии Cocoapods 1.6.0, которое вынуждает разработчиков устанавливать версию Swift для своих проектов. На самом деле цель состоит в том, чтобы разработчики библиотек указали версию Swift в своих podspec, чтобы пользователям библиотеки не приходилось делать это вручную (например, благодаря post_install сценариям). Вы можете увидеть мое обсуждение этого вопроса с сопровождающим Cocoapods здесь . Я согласен с тем, что это поведение немного вводит в заблуждение, поскольку мы пытаемся установить версию Swift в сценарии post_install, но ошибка возвращается до…

Фактически, как мне сказал сопровождающий, правильным решением этой проблемы является установка версии Swift на уровне проекта (и, следовательно, не на уровне Pod). Чтобы сделать это, просто добавьте новый User Defined Setting в Build Settings с ключом SWIFT_VERSION и значением 4.0 (например, любое значение должно работать здесь, если вы также установите версию на уровне Pod с помощью скрипта post_install ).

Короче говоря, исправление заключается в добавлении этого ключа / значения: enter image description here

Обратите внимание, что, поскольку вы используете NativeScript, вы можете установить версию Swift, выполнив команду export SWIFT_VERSION=4 в папке проекта перед сборкой.

0 голосов
/ 08 февраля 2019

Только что были те же самые ошибки и обнаружение понижения у Cocoapods 1.6.0 до 1.5.3 исправило это для меня.

    sudo gem uninstall cocoapods
    sudo gem install cocoapods -v 1.5.3
0 голосов
/ 08 февраля 2019

Я исправил ответ @K Брауна.

Были ошибки при запуске tns run ios --bundle для Socket.IO-Client-Swift, StarscreamSocketIO и Toaster, когда установлены обе версии Cocoapod v1.6.0 и v1.5.3:

- `<package name>` does not specify a Swift version and none of the targets 
(`<project name>`) integrating it have the `SWIFT_VERSION` attribute set. 
Please contact the author or set the `SWIFT_VERSION` attribute in at least one 
of the targets that integrate this pod. 

Ниже приведены используемые команды:

sudo gem uninstall cocoapods

sudo gem install cocoapods -v 1.5.3

rm -Rf platforms

tns install

tns run ios --bundle

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

Проблема здесь, кажется, в Toaster (2.0.4), который, кажется, был разработан для Swift 3.

Я сделал это для решения проблемы:

  1. перейдите в основную папку для проекта nativescript

  2. В вашей оболочке bash выполните:

    % export SWIFT_VERSION=3

  3. Затем выполните обычные действия:

    % tns build ios --bundle

  4. Затем откройте проект в Xcode:

    % cd platform / ios

    % Open * .workspace

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

...