Добавление файла .a в проект через CocoaPods

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

У нас есть несколько приложений, использующих одни и те же модели данных. Вместо дублирования кода мы создали отдельный проект, который добавляется к каждому подпроекту в виде файла pod. В этом проекте у нас также есть много сторонних библиотек (Facebook SDK, GoogleAnalytics и т. Д.), Поскольку они используются во многих наших приложениях. Мы используем 2 библиотеки: Flurry 5.4.0 и Appsflyer. К сожалению, эти ребята представляют собой файлы .a, в отличие от других pod-файлов, которые возвращают файлы .h.

введите описание изображения здесь

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

Undefined symbols for architecture i386:
"_OBJC_CLASS_$_AppsFlyerTracker", referenced from:
  objc-class-ref in libPods.a(SHAnalyticsUtility.o)
"_OBJC_CLASS_$_Flurry", referenced from:
  objc-class-ref in libPods.a(SHAnalyticsUtility.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я пробовал все разные методы обновления Podfile (https://github.com/CocoaPods/CocoaPods/issues/2018) и PodSpec (https://github.com/CocoaPods/Specs/issues/1483), но пока ничего не помогло. Любые предложения приветствуются :) PODSPEC

Pod::Spec.new do |s|


  s.name     = 'company-framework-ios'
  s.version  = '1.13.16'
  s.platform = :ios
  s.license  = 'MIT'
  s.summary  = 'Framework for all the iOS apps'

  s.source_files = 'CompanyFramework/CompanyFramework/*.{h,m}','CompanyFramework/CompanyFramework/**/*.{h,m}'

  s.frameworks = 'QuartzCore', 'CoreLocation'
  s.dependency 'Masonry'
  s.dependency 'Mixpanel'
  s.dependency 'GoogleAnalytics-iOS-SDK'
  s.dependency 'AFNetworking', '2.4.1'
  s.dependency 'NSDate+Calendar'
  s.dependency 'RXPromise'
  s.dependency 'SAMCategories'
  s.dependency 'FlurrySDK'
  s.dependency 'AppsFlyer-SDK'
  s.dependency 'Facebook-iOS-SDK', '3.18.2'

  s.ios.deployment_target = "7.1"

  s.requires_arc = true
  s.ios.vendored_library = 'Pods/FlurrySDK/Flurry/libFlurry_5.4.0.a'
  s.ios.vendored_library = 'Pods/AppsFlyer-SDK/libAppsFlyerLib.a'

end

person richari1987    schedule 26.01.2015    source источник
comment
Не могли бы вы проверить, создана ли библиотека для необходимых архитектур? xcrun -sdk iphoneos lipo -info $(FILENAME)   -  person Rene Kann    schedule 27.01.2015
comment
Архитектуры в толстом файле: libPods-Shyp.a: i386 x86_64   -  person richari1987    schedule 27.01.2015
comment
Архитектуры в толстом файле: libFlurry_5.4.0.a: armv7s i386 x86_64 armv6 armv7 arm64   -  person richari1987    schedule 27.01.2015
comment
Архитектуры в толстом файле: libAppsFlyerLib.a: armv7 armv7s i386 x86_64 arm64   -  person richari1987    schedule 27.01.2015
comment
@ René, похоже, создан для правильной архитектуры   -  person richari1987    schedule 27.01.2015


Ответы (1)


Итак, ответ на этот вопрос заключается в том, что когда вы добавляете файл .a в свой настраиваемый модуль, вам также необходимо добавить файл .a в свой проект после установки настраиваемого модуля.

person richari1987    schedule 27.01.2015
comment
Фреймворки и файлы .a будут включены в 0.36 (следующий выпуск) CocoaPods. - person richari1987; 29.01.2015
comment
Есть ли способ сделать это в Podspec? - person gran_profaci; 18.12.2015