Добавить статическую библиотеку в podspec

Мой podspec требует статической библиотеки (OpenSSL). Для удобства, я отправляю библиотеку с контейнером.

Статическая библиотека содержит:

  • Бинарные файлы: MyPod/openssl/bin/libcrypto.a и MyPod/openssl/bin/libsll.a
  • Заголовки: MyPod/openssl/include/openssl/*.h
  • Его собственная лицензия (в дополнение к моей лицензии проекта): MyPod/openssl/include/LICENSE

Каков правильный способ выразить это в моем подспепе? Я видел различный пример, который использует комбинации следующих свойств, и я сейчас пытаюсь использовать разные комбинации:

 source_files public_header_files private_header_files preserve_paths libraries xcconfig vendored_libraries 

Или еще лучше, могу ли я определить эту статическую библиотеку в подтипе?

Мне удалось добавить статическую библиотеку в качестве subspec . Я предпочитаю этот подход, потому что он использует сборку, поставляемую с моим модулем по умолчанию, а также позволяет пользователям предоставлять свою собственную сборку, если они этого желают.

Как уже упоминалось, статическая библиотека – OpenSSL, но для любой статической библиотеки применяется следующее. Я использую следующую структуру каталогов:

 libraries/openssl-1.0.1e/include/openssl/*.h libraries/openssl-1.0.1e/LICENSE libraries/openssl-1.0.1e/lib/*.a 

В результате подпрограмма будет выглядеть следующим образом:

 s.subspec 'OpenSSL' do |openssl| openssl.preserve_paths = 'libraries/openssl-1.0.1e/include/openssl/*.h', 'libraries/openssl-1.0.1e/include/LICENSE' openssl.vendored_libraries = 'libraries/openssl-1.0.1e/lib/libcrypto.a', 'libraries/openssl-1.0.1e/lib/libssl.a' openssl.libraries = 'ssl', 'crypto' openssl.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/libraries/openssl-1.0.1e/include/**" } end 

Построчно:

 openssl.preserve_paths = 'libraries/openssl-1.0.1e/include/openssl/*.h', 'libraries/openssl-1.0.1e/include/LICENSE' 

Сохраните заголовки и файл лицензии. Мы будем использовать заголовки ниже.

 openssl.vendored_libraries = 'libraries/openssl-1.0.1e/lib/libcrypto.a', 'libraries/openssl-1.0.1e/lib/libssl.a' 

Скажите CocoaPods, что мы отправляем вышеуказанные статические библиотеки в контейнере. Это сохранит файлы, а также LIBRARY_SEARCH_PATHS соответственно.

 openssl.libraries = 'ssl', 'crypto' 

Включает библиотеки в «Другие флаги компоновщика».

 openssl.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/libraries/openssl-1.0.1e/include/**" } 

Сообщает проект, где найти заголовки. Мы не можем использовать public_header_files потому что это subspec .

Вы можете попробовать сделать это так, как это делается здесь https://github.com/krzak/OpenSSL , или просто использовать этот проект Pod с вами, если вы найдете его convienence

 pod 'OpenSSL', :podspec => 'https://raw.github.com/krzak/OpenSSL/master/OpenSSL.podspec' 
  • Невозможно загрузить изображение в xcassets на комплекте
  • CoreData: warning: Невозможно загрузить класс с именем «WEEReadings» для данных «Чтения». Класс не найден, вместо этого используется NSManagedObject по умолчанию
  • Как обновить нашу статическую библиотечную архитектуру для поддержки arm64 Build?
  • Статическая библиотека условной ссылки iOS
  • fopen $ UNIX2003 выходит из строя во внешней библиотеке
  • Предоставление инфраструктуры xcode с другими зависимостями
  • Заголовок библиотеки не найден, если CONFIGURATION_BUILD_DIR установлен с помощью xcodebuild
  • Не удалось загрузить тестовый комплект, поскольку непредвиденная ошибка
  • Предотвращение перехода в статический код библиотеки
  • Подсчет зависимости от OpenSSL
  • Как правильно связать сторонние библиотеки в iOS
  • Давайте будем гением компьютера.