Import KakaoSDKFriend 시 에러가 납니다

Podfile
pod 'KakaoSDKShare'  # Kakao Talk sharing
pod 'KakaoSDKStory'  # Kakao Story
pod 'KakaoSDKAuth'  # 사용자 인증
pod 'KakaoSDKUser'  # 카카오 로그인, 사용자 관리
pod 'KakaoSDKTalk'  # 친구, 메시지(카카오톡)
pod 'KakaoSDKTemplate'  # 메시지 템플릿
pod 'KakaoSDKFriend' # 카카오톡 소셜 피커, 리소스 번들 파일 포함

post_install do |installer|
  react_native_post_install(installer)

  installer.pods_project.build_configurations.each do |config|
    config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
  end

  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
    end
  end
  __apply_Xcode_12_5_M1_post_install_workaround(installer)
end

이렇게 해서 설치한 후에 xcode 에서 쓰면

Xcode 14.1 와 14.2 버전에서는
import KakaoSDKFriend 이 부분에서

Failed to build module ‘KakaoSDKFriend’; this SDK is not supported by the compiler (the SDK is built with ‘Apple Swift version 5.6 (swiftlang-5.6.0.323.62 clang-1316.0.20.8)’, while this compiler is ‘Apple Swift version 5.7.1 (swiftlang-5.7.1.135.3 clang-1400.0.29.51)’). Please select a toolchain which matches the SDK.

이런 에러가 발생합니다. 처음 에러가 발생했을 때엔 14.2 버전 이었는데 인터넷 서칭하다가 Xcode 업데이트 하면 된다 해서 14.3 버전으로 업데이트 하니 해당 에러가 사라졌지만 다른 에러때문에 빌드가 안되서 다시 14.1 로 돌아왔으나 같은 에러가 다시 발생하게 되었습니다.

toolChain 에서 swft 버전을 다르게 쓰면?? 된다는 글이 있어서 아직 시도하기 전이긴 한데 혹시 다른 해결 방안이 있는지 궁금합니다.

감사합니다!

– 추가로 toolChain 은 실패했고 Xcode 13 버전은 Ventura OS 에서 실행 자체가 안됬습니다.
Xcode 14.1 에서 pod ‘KakaoSDKFriend’ 이 부분만 삭제하고 npx pod-install 후 실행하면 잘되지만 추가하면

error: cannot load underlying module for ‘Alamofire’
import Alamofire

error: failed to build module ‘KakaoSDKFriend’; this SDK is not supported by the compiler (the SDK is built with ‘Apple Swift version 5.6 (swiftlang-5.6.0.323.62 clang-1316.0.20.8)’, while this compiler is ‘Apple Swift version 5.7.1 (swiftlang-5.7.1.135.3 clang-1400.0.29.51)’). Please select a toolchain which matches the SDK.
import KakaoSDKFriend

이렇게 나옵니다.

++ 추가로 Podfile 에
pod ‘Alamofire’
pod ‘RxSwift’
pod ‘RxCocoa’
pod ‘RxAlamofire’
를 추가했지만 에러는 그대로 나왔습니다.

답변해 주시면 감사드리겠습니다!

안녕하세요.

해당 모듈을 전부 사용하시는건가요?
Pods 폴더 삭제하고 다시 설치해보시겠어요?

안녕하세요!

해당 방법으로 진행하였으나 여전히 똑같은 오류가 발생합니다.

xcode 에서 Build Clean(⌘ + ⇧ + K)
rm -rf ~/Library/Developer/Xcode/DerivedData
cd ios && pod deintegrate && pod cache clean --all && pod setup && pod install && cd …
yarn cache clean (react native 프로젝트라서)
Pod 폴더 및 Podfile.lock 파일 삭제 후 npx pod-install 하여 실행했으나 같은 오류가 나옵니다.

그리고 추가로

error: using bridging headers with module interfaces is unsupported

이런 오류도 뜨는데 bridging headers 와 연관이 있는 지도 궁금합니다. 구글 서치하니
config.build_settings[‘BUILD_LIBRARY_FOR_DISTRIBUTION’] = ‘YES’
이 부분과 관련 있는 것 같은데 잘 모르겠네요.

또한 react native 프로젝트라서 react-native run-ios 커맨드로 실행했을 때 ( 커맨드 콘솔에 info Building (using “xcodebuild -workspace MyApp.xcworkspace -configuration Debug -scheme MyApp -destination id=MyID”) 라고 나옵니다, MyApp 과 MyID 는 다른 값입니다.) 는 위에서 말한

error: cannot load underlying module for ‘Alamofire’
error: failed to build module ‘KakaoSDKFriend’;

에러가 나오는데 xcode 에서 Build 시에는

failed to verify module interface of ‘YogaKit’ due to the errors above; the textual interface may be broken by project issues or a compiler bug

이런 에러가 출력됩니다.

failed to verify module interface of ‘YogaKit’ due to the errors above; the textual interface may be broken by project issues or a compiler bug

이건 Xcode 14.3 버전 에러인 것 같습니다.

14.3 버전에선
import KakaoSDKFriend

이 부분에 현재 에러인

Failed to build module ‘KakaoSDKFriend’; this SDK is not supported by the compiler (the SDK is built with ‘Apple Swift version 5.6 (swiftlang-5.6.0.323.62 clang-1316.0.20.8)’, while this compiler is ‘Apple Swift version 5.7.1 (swiftlang-5.7.1.135.3 clang-1400.0.29.51)’). Please select a toolchain which matches the SDK.

가 사라져서 Xcode 버전과 관련된 것 같긴 한데 14.3 버전에서 다른 에러 때문에 빌드가 안되서 14.1 14.2 버전으로 다시 내려와야 해서… 애매합니다

새로 프로젝트 파서 Podfile 에

pod ‘KakaoSDKAuth’ # 사용자 인증
pod ‘KakaoSDKUser’ # 카카오 로그인, 사용자 관리
pod ‘KakaoSDKTalk’ # 친구, 메시지(카카오톡)
pod ‘KakaoSDKTemplate’ # 메시지 템플릿
pod ‘KakaoSDKFriend’ # 카카오톡 소셜 피커, 리소스 번들 파일 포함 # 에러 때문에 주석처리

installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings[‘BUILD_LIBRARY_FOR_DISTRIBUTION’] = ‘YES’
end
end

추가 하니 빌드 후 앱이 죽고

Library not loaded: @rpath/Alamofire.framework/Alamofire
Referenced from: MyProjectPath.app/Frameworks/KakaoSDKFriend.framework/KakaoSDKFriend
Reason: image not found
(terminated at launch; ignore backtrace)

이런 에러가 뜹니다. Alamofire 연관된거 같은데 구글에서 나온 방법으로 해도 여전히 빌드가 안되네요.

안녕하세요.

재현해 보기 위해 xcode 14.1에서, 아래와 같이 설정하여 잘 동작하는 것을 확인하였습니다.

  # Enables Flipper.
  #
  # Note that if you have use_frameworks! enabled, Flipper will not work and
  # you should disable the next line.
  # use_flipper!()

  post_install do |installer|
    react_native_post_install(installer)
    __apply_Xcode_12_5_M1_post_install_workaround(installer)

    installer.pods_project.targets.each do |target|
      # Build Phases Order Fix = "[CP-USER] Generate Specs", "Headers"
      if (target.name&.eql?('FBReactNativeSpec'))
        target.build_phases.each do |build_phase|
          if (build_phase.respond_to?(:name) && build_phase.name.eql?('[CP-User] Generate Specs'))
            target.build_phases.move(build_phase, 0)
          end
        end
      end
      target.build_configurations.each do |config|
        config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
      end
    end
  end

오 감사합니다! 이틀동안 찾았는데 React Native 는 약간 방법이 달랐나 보군요.

근데 중요한게 원래 에러는 사라졌는데

error: using bridging headers with module interfaces is unsupported

이 에러가 나옵니다.

검색해보니 config.build_settings[‘BUILD_LIBRARY_FOR_DISTRIBUTION’] = ‘YES’ 와 관련이 있는 것 같은데
config.build_settings[‘BUILD_LIBRARY_FOR_DISTRIBUTION’] = ‘NO’ 로 하라는 내용은 있지만 이걸 하면 KakaoSDKFriend 설치랑 안맞아져서…

혹시 이 부분도 왜 그런지 알 수 있을까요?

아 다시 확인해보니 원래 에러도 그대로 나오네요…

현재 m1 사용하고 있으며

require_relative ‘…/node_modules/react-native/scripts/react_native_pods’
require_relative ‘…/node_modules/@react-native-community/cli-platform-ios/native_modules’

platform :ios, ‘12.4’
install! ‘cocoapods’, :deterministic_uuids => false

pod ‘KakaoSDKShare’ # Kakao Talk sharing
pod ‘KakaoSDKStory’ # Kakao Story

pod ‘KakaoSDKAuth’ # 사용자 인증
pod ‘KakaoSDKUser’ # 카카오 로그인, 사용자 관리
pod ‘KakaoSDKTalk’ # 친구, 메시지(카카오톡)
pod ‘KakaoSDKTemplate’ # 메시지 템플릿
pod ‘KakaoSDKFriend’ # 카카오톡 소셜 피커, 리소스 번들 파일 포함 # 에러 때문에 주석처리

pod ‘Firebase’, :modular_headers => true
pod ‘GoogleUtilities’, :modular_headers => true
pod ‘FirebaseCore’, :modular_headers => true
production = ENV[“PRODUCTION”] == “1”

target ‘Moyvle’ do
config = use_native_modules!

Flags change depending on the env values.

flags = get_default_flags()

use_react_native!(
:path => config[:reactNativePath],
# to enable hermes on iOS, change false to true and then install pods
:production => production,
:hermes_enabled => flags[:hermes_enabled],
:fabric_enabled => flags[:fabric_enabled],
:flipper_configuration => FlipperConfiguration.enabled,
# An absolute path to your application root.
:app_path => “#{Pod::Config.instance.installation_root}/…”
)

pod ‘react-native-contacts’, :path => ‘…/node_modules/react-native-contacts’

target ‘ThisProjectTests’ do
inherit! :complete
# Pods for testing
end

post_install do |installer|
react_native_post_install(installer)
__apply_Xcode_12_5_M1_post_install_workaround(installer)

installer.pods_project.targets.each do |target|
  # Build Phases Order Fix = "[CP-USER] Generate Specs", "Headers"
  if (target.name&.eql?('FBReactNativeSpec'))
    target.build_phases.each do |build_phase|
      if (build_phase.respond_to?(:name) && build_phase.name.eql?('[CP-User] Generate Specs'))
        target.build_phases.move(build_phase, 0)
      end
    end
  end
  target.build_configurations.each do |config|
    config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
  end
end

# m1
installer.pods_project.build_configurations.each do |config|
  config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
end

end

end

Podfile 전체 코드입니다.

안녕하세요 새로 프로젝트를 파서 Podfile 에

pod ‘KakaoSDKFriend’

post_install do |installer|
react_native_post_install(installer)
__apply_Xcode_12_5_M1_post_install_workaround(installer)
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings[‘BUILD_LIBRARY_FOR_DISTRIBUTION’] = ‘YES’
end
end
installer.pods_project.build_configurations.each do |config|
config.build_settings[“EXCLUDED_ARCHS[sdk=iphonesimulator*]”] = “arm64”
end
end

만 넣고 진행 하였을 때

Exception Type: EXC_CRASH (SIGABRT)

Exception Codes: 0x0000000000000000, 0x0000000000000000

Termination Reason: DYLD 1 Library missing

dyld: Using shared cache: 371A0908-6413-3666-9AE2-B79CC317AF32

Library not loaded: @rpath/Alamofire.framework/Alamofire

Referenced from: /Users/USER/Library/Developer/CoreSimulator/Devices/E24A0C4D-8B12-4FE0-A34D-C60771A8AF7D/data/Containers/Bundle/Application/7756FAEE-766E-41B8-BC40-E53593A9F1C9/TestProject1.app/Frameworks/KakaoSDKFriend.framework/KakaoSDKFriend

Reason: image not found

(terminated at launch; ignore backtrace)

이런 에러가 발생합니다.
/Users/USER/Library/Developer/CoreSimulator/Devices/E24A0C4D-8B12-4FE0-A34D-C60771A8AF7D/data/Containers/Bundle/Application/7756FAEE-766E-41B8-BC40-E53593A9F1C9/TestProject1.app/Frameworks/KakaoSDKFriend.framework
디렉토리에 들어가니
KakaoSDKFriend
KakaoSDKFriendResources.bundle
Info.plist
_CodeSignature
이렇게 있는데 여기에서 KakaoSDKFriend 가 directory 가 아니라 들어가지지 않는데 … 이 부분이 문제일지 잘 모르겠네요
이 부분 해결할 수 있을까요?

@developer62623

안녕하세요.
두가지 정도 체크 부탁드릴게요.

  1. KakaoSDKFriend 모듈 필요여부
    맨윗글 봤을때 KakaoSDK 전체 모듈을 추가해서 빌드하는것같이 보입니다.
    개발하는 앱에 필요한 모듈만 설치하는것을 권장드립니다.

  2. (1번에서 꼭 필요한 모듈이라면) Podfile내 (혹은 빌드타겟내)에 아래 키워드 유무.

Podfile

...

use_frameworks!

...

KakaoSDKFriend 모듈은 binary dynamic framework 으로 개발되어서
디펜던시 참조를 dynamic framework 으로 하고 있습니다.
따라서, 해당 키워드가 꼭 필요합니다.

디펜던시 모듈 리스트

  • Alamofire
  • KakaoSDKCommon
  • KakaoSDKAuth
  • KakaoSDKUser

참고) 샘플앱 Podfile
스크린샷 2023-04-23 오후 6.07.06

p.s.
사용하는 Podfile 부분발췌말고 전체파일을 좀 올려주세요

안녕하세요!

use_frameworks!

이 부분 넣어서 진행하니 빌드 되었습니다.

도움을 주셔서 진심으로 감사드립니다!!

1개의 좋아요