Podspec с зависимостями от Google-Analytics Cocoapods 0.36

У меня большая проблема с нашим частным podspec, все работало нормально, пока мы не обновили Cocopods до версии 0.35.

Спецификация не очень сложная, но зависит от GoogleAnalytics-iOS-SDK Это наша спецификация модуля:

{
  "name": "RKTagManager",
  "version": "0.0.1",
  "summary": "Google TagManager wrapper.",
  "license": {
    "type" : "Closed Source",
    "text" : "This library is as is, not warrenty of any kind."
  }
  "platforms": {
    "ios": "5.1.1"
  },
  "requires_arc" : true,
  "source": {
    "hg": "<snip",
    "revision" : "RKTagManager-0.0.1"
  },
  "dependencies": {
    "GoogleAnalytics-iOS-SDK": []
  },
  "source_files": [
      "Source/RKTagManager/*.{h,m}"
  ]
}

Когда я пытаюсь проверить это, компиляция не удалась со следующим сообщением:

Ld /var/folders/9r/y21mxssd6rgf6gbrlhqsqv5m0000gp/T/CocoaPods/Lint/build/Pods.build/Release-iphonesimulator/Pods-RKTagManager.build/Objects-normal/i386/RKTagManager normal i386
    cd /var/folders/9r/y21mxssd6rgf6gbrlhqsqv5m0000gp/T/CocoaPods/Lint/Pods
    export IPHONEOS_DEPLOYMENT_TARGET=5.1.1
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Users/<snip>/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/texbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.2.sdk -L/var/folders/9r/y21mxssd6rgf6gbrlhqsqv5m0000gp/T/CocoaPods/Lint/build/Release-iphonesimulator/Pods -F/var/folders/9r/y21mxssd6rgf6gbrlhqsqv5m0000gp/T/CocoaPods/Lint/build/Release-iphonesimulator/Pods -filelist /var/folders/9r/y21mxssd6rgf6gbrlhqsqv5m0000gp/T/CocoaPods/Lint/build/Pods.build/Release-iphonesimulator/Pods-RKTagManager.build/Objects-normal/i386/RKTagManager.LinkFileList -install_name @rpath/RKTagManager.framework/RKTagManager -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -Xlinker -objc_abi_version -Xlinker 2 -ObjC -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=5.1.1 -framework Foundation -framework GoogleAnalytics_iOS_SDK -framework OIFoundation -single_module -compatibility_version 1 -current_version 1 -Xlinker -dependency_info -Xlinker /var/folders/9r/y21mxssd6rgf6gbrlhqsqv5m0000gp/T/CocoaPods/Lint/build/Pods.build/Release-iphonesimulator/Pods-RKTagManager.build/Objects-normal/i386/RKTagManager_dependency_info.dat -o /var/folders/9r/y21mxssd6rgf6gbrlhqsqv5m0000gp/T/CocoaPods/Lint/build/Pods.build/Release-iphonesimulator/Pods-RKTagManager.build/Objects-normal/i386/RKTagManager
ld: warning: embedded dylibs/frameworks only run on iOS 8 or later
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_TAGManager", referenced from:
      objc-class-ref in RKTagManager.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я просто не понимаю, почему он больше не может найти вызовы TAGManager. Я использую Xcode 6.2, а RKTagManager предназначен для iOS.


person rckoenes    schedule 13.03.2015    source источник
comment
Здравствуйте, не могли бы вы предоставить подробную информацию о версии xCode и поддерживаемой архитектуре. Спасибо   -  person Ganesh Somani    schedule 23.03.2015
comment
Я дополнил информацию.   -  person rckoenes    schedule 23.03.2015
comment
Я думаю, проблема в том, что спецификация GoogleAnalytics-iOS-SDK ссылается на URL-адрес Google, но старой библиотеки там больше нет. Там вы можете найти только новый фреймворк, который они используют.   -  person Moxy    schedule 24.03.2015
comment
Я полагаю, что вы добавили фреймворк, поддерживающий только iOS 8 и выше, но целью развертывания вашего приложения является 5.1.1. Следовательно, у вас есть проблема. Также с 6.2 64-битная арка обязательна. Пожалуйста, проверьте и это.   -  person Ganesh Somani    schedule 24.03.2015
comment
Модуль GooleAnalytics не поддерживает iOS 5.1.1 и 64-разрядную версию по умолчанию. Это не проблема.   -  person rckoenes    schedule 24.03.2015


Ответы (1)


Похоже, решение состоит в том, чтобы заставить CocoaPods создавать спецификацию pod в виде библиотеки. Начиная с 0.36, pod'ы строят фреймворк, а не фреймворк.

Используйте --use-libraries для компиляции в спецификацию pod в качестве экземпляра библиотеки фреймворка.

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

pod repo push OIPods RKTagManager.podspec.json --use-libraries
person rckoenes    schedule 01.04.2015
comment
Отличное решение: найдена проблема, из-за которой мой модуль не работает — ОШИБКА | [MKDKit/MKDUIKit,MKDKit/MKDAnalytics] Возврат кода неудачного выхода. - ПРИМЕЧАНИЕ | [MKDKit/MKDUIKit,MKDKit/MKDAnalytics] clang: ошибка: команда компоновщика завершилась неудачно с кодом выхода 1 (используйте -v, чтобы увидеть вызов) - person StackRunner; 09.04.2015