Ответ 1
Из вашего сообщения об ошибке следует проверить несколько вещей.
dyld: Library not loaded: @rpath/PodA.framework/PodA Referenced from: .../Build/Products/Development-iphonesimulator/FrameworkA.framework/FrameworkA Reason: image not found
Первое, что кажется странным, это то, что путь к загружаемой платформе (FrameworkA.framework) не встроен в приложение. Проверьте вкладку "Общие" MainAppTarget и убедитесь, что платформа отображается в разделах "Встроенные двоичные файлы" и "Связанные фреймворки и библиотеки".
Во-вторых, @rpath
является сокращением runpath
поиска runpath
, который сообщает dyld
где искать нужные библиотеки.
Вот пример проекта на Github с основным приложением, использующим один Cocoapod, и динамической платформой, от которой зависит основное приложение и использующей другой Cocoapod: https://github.com/dtweston/FrameworkPodTest
Создайте настройки, которые вы должны проверить по всем задействованным целям (включая целевые рамки, созданные проектом Pods):
- Пути поиска пути выполнения (
LD_RUNPATH_SEARCH_PATHS
)- В примере проекта они определяются cocoapod, но для каждого из них установлено значение
$(inherited) @executable_path/Frameworks @loader_path/Frameworks
- В примере проекта они определяются cocoapod, но для каждого из них установлено значение
- Имя установки динамической библиотеки (
LD_DYLIB_INSTALL_NAME
)- В примере проекта это значение не отличается от значения по умолчанию
$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)
- В примере проекта это значение не отличается от значения по умолчанию
- База имен динамической установки библиотеки (
DYLIB_INSTALL_NAME_BASE
)- В примере проекта установите
@rpath
(снова определяется Cocoapod)
- В примере проекта установите
Вот скриншот встроенного пакета приложений, показывающий, как он выложен:
Вы можете использовать otool
для получения информации о том, как приложение собирается с помощью xcodebuild.
Вот основное двоичное приложение:
otool -L FrameworkPodTest
FrameworkPodTest:
@rpath/KeychainSwift.framework/KeychainSwift (compatibility version 1.0.0, current version 1.0.0)
@rpath/Lottie.framework/Lottie (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 61000.0.0)
@rpath/Framework.framework/Framework (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 1560.10.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.200.5)
/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (compatibility version 64.0.0, current version 1245.9.2)
...
И каркас бинарный:
otool -L Frameworks/Framework.framework/Framework
Frameworks/Framework.framework/Framework:
@rpath/Framework.framework/Framework (compatibility version 1.0.0, current version 1.0.0)
@rpath/KeychainSwift.framework/KeychainSwift (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 1560.10.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.200.5)
@rpath/libswiftCore.dylib (compatibility version 1.0.0, current version 1000.11.42)
@rpath/libswiftCoreFoundation.dylib (compatibility version 1.0.0, current version 1000.11.42)
...