Использование iOS SDK Facebook в сборке CI - Framework не найден - PullRequest
2 голосов
/ 17 апреля 2019

В моем приложении React Native используется пакет react-native-fbsdk, и я пытаюсь заставить сборку iOS работать на CI-сервере (Azure DevOps).Основная проблема заключается в том, что Facebook SDK должен быть установлен в ~/Documents/FacebookSDK, который не работает на сервере сборки CI.

Я столкнулся с довольно многими проблемами.В настоящий момент я получаю сообщение об ошибке:

▸ Linking TzoApp
⚠️  ld: directory not found for option '-L/Users/vsts/Library/Developer/Xcode/DerivedData/TzoApp-bghowrtdysrbywbsslmkxejgzgoc/Build/Products/Release-iphoneos/React'
⚠️  ld: directory not found for option '-F/Users/vsts/agent/2.149.2/work/1/s/tzoapp-mobile/ios/Pods/FirebaseCore/Frameworks'
⚠️  ld: directory not found for option '-F/Users/vsts/agent/2.149.2/work/1/s/tzoapp-mobile/ios/Pods/FirebaseMessaging/Frameworks'
⚠️  ld: directory not found for option '-F/Users/vsts/Documents/FacebookSDK'

❌  ld: framework not found FBSDKCoreKit

❌  clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я устанавливаю Facebook SDK через Cocoapods, и в моем подфайле есть следующее:

pod 'FBSDKCoreKit', '~> 4.40.0'
pod 'FBSDKLoginKit', '~> 4.40.0'
pod 'FBSDKShareKit', '~> 4.40.0'

Мои пути поискаследующим образом:

FRAMEWORK_SEARCH_PATHS = (
    "$(inherited)",
    "\"${PODS_ROOT}/FirebaseAnalytics/Frameworks\"",
    "\"${PODS_ROOT}/FirebaseCore/Frameworks\"",
    "\"${PODS_ROOT}/FirebaseInstanceID/Frameworks\"",
    "\"${PODS_ROOT}/FirebaseMessaging/Frameworks\"",
    "\"$(HOME)/Documents/FacebookSDK\"",
);

и мои пути поиска по заголовкам:

HEADER_SEARCH_PATHS = (
    "$(inherited)",
    "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**",
    "$(SRCROOT)/../node_modules/react-native-fbsdk/ios/RCTFBSDK/**",
    "$(SRCROOT)/Pods/Headers/**",
    "${PODS_ROOT}/Headers/Public/Facebook-iOS-SDK",
    "${PODS_ROOT}/Headers/Public/Facebook-iOS-SDK/FacebookSDK",
    "${PODS_ROOT}/Headers/Public/FBSDKCoreKit",
    "${PODS_ROOT}/Headers/Public/FBSDKCoreKit/FBSDKCoreKit",
);

Может ли кто-нибудь помочь заставить сборку работать?

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Я всегда находил кокоаподов немного хитом и мисс. Если вы читаете документацию Cocoapods, они рекомендуют не включать ваш каталог Pods в ваш .gitignore. В настоящее время мы включаем наши модули в систему контроля версий. Отчасти это связано с тем, что некоторые из них размещаются внутри внутренней сети, недоступной для DevOps Azure. Кроме того, разработчики могут сразу же клонировать и создавать.

0 голосов
/ 17 апреля 2019

Не уверен, поможет ли это, но, по крайней мере, попробуем.Попробуйте скопировать каждый из файлов Framework из папки Facebook SDK (FBSDKCoreKit, FBSDKLoginKit, FBSDKShareKit) в папку RCTFBSDK framework в разделе библиотек Xcode, как показано на рисунке ниже

enter image description here

Примечание. Не забудьте проверить (при необходимости копировать файлы), когда вы перетаскиваете файлы в папку фреймворка.Кроме того, очистите ваш проект и повторите его снова.

Надеюсь, это решит вашу проблему.

...