2013-09-12 3 views
7

Я создал свою собственную инфраструктуру iOS, следуя этому руководству, https://code.google.com/p/ios-static-framework/, в котором используется шаблон статической библиотеки и агрегирует цель с помощью специального сценария запуска для создания фреймворка.Невозможно Архивировать, когда библиотека включена в мою собственную инфраструктуру iOS.

Сначала он отлично работает. После включения другая библиотека в проекте рамки создает ошибку при архивировании или сборке для устройства. Я думаю, что проблема связана с некоторыми неправильными настройками для этой библиотеки. Но я просто не знаю, что попробовать. Я попытался установить некоторые разумные другие флаги Linker с https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ld.1.html, но не повезло. Может кто-нибудь помочь, пожалуйста, (

Каких шагов воспроизвести проблему

  1. Следуйте учебник, но изменить агрегатную архитектуру сценария из armv6 armv7 в armv7 armv7s Вот часть совокупного целевого сценария?. Я изменил. Все остальное то же самое.

    if [[ "$SF_SDK_PLATFORM" = "iphoneos" ]] 
    then 
    SF_OTHER_PLATFORM=iphonesimulator 
    SF_ARCHS=i386 
    else 
    SF_OTHER_PLATFORM=iphoneos 
    SF_ARCHS="armv7 armv7s" 
    fi 
    
  2. Добавить внешнюю библиотеку к проекту, здесь я использую libBlocksKit.a ,

  3. Построение рамки, успех.
  4. другой детский проект. Включите мою встроенную фреймворк.
  5. Добавить -ObjC в приложение Target> Построить Настройки> Другие флаги компоновщика
  6. Архив и получите сообщение об ошибке. Устройство для устройства (iPhone5) также дает ошибку. Но создание симулятора, похоже, сработает.

Какая ошибка?

Эта ошибка, в основном «ld: warning: directory not found for option ... ld: lto: не удалось слиться ... символ многократно задан!».

ld: warning: directory not found for option '-L/Users/hlung/Dropbox/- Notes/stackoverflow/RealFrameworkApp/RealFrameworkApp/External/BlocksKit' 
ld: lto: could not merge in /Users/hlung/Library/Developer/Xcode/DerivedData/RealFrameworkTest-evagqzwzyyolhjenkkjbvzibxppf/Build/Products/Debug-iphonesimulator/RealFrameworkTest.framework/RealFrameworkTest(NSObject+BlockObservation.o) because 'Linking globals named 'OBJC_CLASS_$_BKObserver': symbol multiply defined!', using libLTO version 'LLVM version 3.2svn, from Apple Clang 4.2 (build 425.0.28)' for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Если я архивирую мой дочерний проект только с одной архитектурой (например, armv7), он работает. Он показывает эту ошибку с архитектурой armv7 armv7s ($ (ARCHS_STANDARD_32_BIT)).

Какую версию продукта вы используете? В какой операционной системе?

OS X 10.8.5, XCode 4.6.3

== Update 1 ==

  • Размещена вопрос в code.google.com учебного пособия по pageUpdate: 2 недели нет ответа.
  • Я нашел набор полезных предложений from this answer.Обновление: Не работает
  • Я создал проект, так что вы можете запустить и посмотреть на себя here
+0

есть ли каталог/Пользователи/hlung/Dropbox/- Заметки/stackoverflow/RealFrameworkApp/RealFrameworkApp/External/BlocksKit существуют, это библиотека? какие разрешения? вы пользователь hlung, иначе у вас, вероятно, будет проблема с правами доступа. вы строите все арки в своей библиотеке, которые вы используете в своей конечной цели? вы отключили «сборку текущей арки только» для выпуска? –

+0

Я проверил все это. – Hlung

ответ

1

Linking против статической библиотеки из в рамках может создать некоторые интересные задачи ... Это звучит например, вы можете связываться с BlocksKit как с вашей каркасом, так и с вашими проектами приложений.

Вы должны указать только одно из этих мест. Попробуйте удалить libBlocksKit.a из фазы сборки библиотек ссылок вашей структуры, но оставьте ее в другом проекте.

+0

Извините, похоже, я не могу этого сделать, потому что libBlocksKit.a видна только в Framework, но не в другом проекте. Так что это уже связано только в одном месте, в моем проекте Framework. – Hlung

0

Вы можете сделать так:

  1. Нажмите на ваш проект (цели)
  2. Нажмите на параметры сборки
  3. В разделе Библиотека пути поиска, удалите дорожкам

Я надеюсь, что это могу помочь тебе.

Смежные вопросы