Как включить FacebookSDK в пользовательский фреймворк - PullRequest
0 голосов
/ 06 апреля 2020

Мой пользовательский фреймворк использует несколько внешних фреймворков, один из которых FacebookSDK (интегрирован в проект с cocoapods).

Поскольку мне не удалось интегрировать его в мой фреймворк, я сделал это в приложение следующим образом (сценарий 0).

Два вопроса тогда:

  • Q1) Как интегрировать FAcebookSDK прямо в мою структуру?
  • Q2) В сценарии 0 как решить проблему «Класс реализован в обоих…»

Заранее спасибо.

--- СЦЕНАРИЙ 0 : ОК

Сценарий 0 работает, но FacebookSDK включен в приложение (где я хочу, чтобы он был в моей структуре):

platform :ios, '12.0'

target 'MyFramework' do
    project 'MyFrameworks/MyFramework.xcodeproj'
end


target 'MyApp' do
    workspace 'MyWorkspace.xcworkspace'
    project 'MyApp/MyApp.xcodeproj'

    use_frameworks!
    pod 'FacebookSDK'
end

Примечание: в этом сценарии у меня есть несколько включений библиотеки со следующими предупреждениями:

objc[3052]: Class FBSDKBasicUtility is implemented in both MyFramework.framework/Aladdin (0x1021f7f00) and MyApp.app/Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit (0x101328e60). One of the two will be used. Which one is undefined.

--- SCENARIO 1 : KO

Сценарий 1 терпит неудачу: он компилирует и связывает, но попадает в ошибку времени выполнения:

dyld: Library not loaded: @rpath/Bolts.framework/Bolts
  Referenced from: MyApp.app/Frameworks/MyFramework.framework/MyFramework
  Reason: image not found

(В этом сценарии я просто перенес включение в каркас).

platform :ios, '12.0'

target 'MyFramework' do
    project 'MyFrameworks/MyFramework.xcodeproj'

    use_frameworks!        # change here
    pod 'FacebookSDK'      # change here  
end


target 'MyApp' do
    workspace 'MyWorkspace.xcworkspace'
    project 'MyApp/MyApp.xcodeproj'
end

--- SCENARIO 2 : KO

Сценарий 2 не может скомпилировать файлы каркасов, где import FBSDKCore включено с ошибкой No such module 'FBSDKCoreKit'. (В этом сценарии из сценария 1 я просто использовал :modular_headers: true).

platform :ios, '12.0'

target 'MyFramework' do
    project 'MyFrameworks/MyFramework.xcodeproj'

    pod 'FacebookSDK', :modular_headers => true    # change here
end


target 'MyApp' do
    workspace 'MyWorkspace.xcworkspace'
    project 'MyApp/MyApp.xcodeproj'
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...