GCDWebServer на tvOS

Кому-нибудь удалось использовать GCDWebServer на твоше? Я пробовал компилировать в Xcode 7.1 и получаю:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_GCDWebServer", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_GCDWebServerDataResponse", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_GCDWebServerRequest", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Используются ли внутри GCDWebServer фреймворки, которых нет в tvOS? Это поправимо? Я рад изучить это, но если кто-то уже знает, это избавит меня от необходимости повторять работу...


person Jonathan    schedule 31.10.2015    source источник


Ответы (2)


Yep.Finally я получил решение этой проблемы.

Кстати, я использую Cocoapods для установки GCDWebServer в своем проекте, и я создаю свое телевизионное приложение вместе с моим телефонным приложением, но это разные цели.

В моем случае я использую Objective-C для написания своего приложения для телефона и использую Swift для написания телевизионного приложения. Поэтому я должен добавить заголовок соединения в моя телевизионная цель.

ЦЕЛИ> ВАШ-ТВ-ЦЕЛЬ> Настройки сборки> Компилятор Swift> Заголовок моста Objective-C> Добавить это

$(SRCROOT)/YOUR-TV-PROJECT/YOUR-PROJECT-MODULE-Bridging-Header.h

Затем я создаю этот файл заголовка в своем проекте и добавляю

#import <GCDWebServer/GCDWebServer.h>
#import <GCDWebServer/GCDWebServerDataResponse.h>

Как сделать мост между Swift и Objective-C, можно по этой ссылке:

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

Тогда я встречаю проблему с этим

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_GCDWebServer", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_GCDWebServerDataResponse", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_GCDWebServerRequest", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я подумал, что это может быть какая-то проблема с моим зданием. Возможно, некоторые библиотеки отсутствуют. Поэтому я иду в ЦЕЛИ> ВАШ-ТВ-ЦЕЛЬ> Строить фразу> Связать двоичный файл с библиотеками и добавляю эти фреймворки и т. д.:

libxml2.2.tbd
libz.1.2.5.tbd
CFNetwork.framework
MobileCoreServices.framework
UIKit.framework

Это этапы сборки моего TV-TARGET. Мы также должны проверить Pods > GCDWebServer > Build Settings и т. д. Поскольку он находится в модулях, нам нужно отредактировать Podfile и перестроить его. мой проект. Это подфайл. Вы должны разделить цели в подфайле.

source 'https://github.com/CocoaPods/Specs.git'

def common_pods
    pod 'Fabric' , '~> 1.6.4'
end

def tv_pods
    pod 'GCDWebServer' , '~ 3.3.2'
end

target :phoneApp do
    link_with 'YOUR-PHONE-TARGET'
    platform :ios, '8.0'
    common_pods
end

target :tvApp do
    link_with 'YOUR-TV-TARGET'
    platform :tvos, '9.0'
    tv_pods
end

После редактирования Podfile и запуска:

pod install 

Вы можете вызвать GCDWebServer в своей TV-TARGET, и GCDWebServer хорошо работает в вашей tvOS. :-)

Надеюсь, это поможет вам.

person CashLee李秉骏    schedule 28.04.2016

GCDWebServer основан на tvOS, а последняя предварительная версия содержит пример проекта tvOS.

Если вы используете CocoaPods или Carthage и настроили его так, чтобы он указывал на master вместо 3.x, он должен работать.

person Pol    schedule 17.11.2015
comment
Да. Я настроил его на master. Но он все равно дает мне ту же ошибку. - person CashLee李秉骏; 28.04.2016
comment
Я уже добавил Link Binary With Libraries, как и ваш демонстрационный проект. Я создаю файл Bridging-Header для соединения Swift и GCDWebServer. Подождите более конкретного документа для tvOS. Кстати, GCDWebServer — действительно хороший проект с открытым исходным кодом. - person CashLee李秉骏; 28.04.2016
comment
Я добавил GCDWebServer от Cocoapods. Я предполагаю, что проблема вызвана Pods › GCDWebServer › TARGETS. Я видел, что настройки совместимы со сборкой iOS, но не с tvOS. Возможно, мне следует попытаться настроить вручную. - person CashLee李秉骏; 28.04.2016