Flutter 에서 iOS 실행시 'kakao_flutter_sdk_common/kakao_flutter_sdk_common-Swift.h' file not found 오류가 납니다

문의 시 사용하시는 SDK 버전 정보와 플랫폼(Android / iOS)를 알려주세요.

Flutter 3.3.2 에서 kakao_flutter_sdk: ^1.2.2 플러그인을 사용하여 로그인을 구현하는중 iOS 시뮬레이터에서 빌드하면 ‘kakao_flutter_sdk_common/kakao_flutter_sdk_common-Swift.h’ file not found 라고 뜨며 빌드가 되지 않습니다. 깃헙 issue 에 올라온 예전 글을 보니 Podfile에 use_frameworks! 를 붙여주면 해결이 된다고 하는데 use_frameworks! 은 cocoapods 1.5.0 버전 이후부터 사용하지 않아도 된다고 알고 있고, use_frameworks!를 사용하면 다른 라이브러리에서 오류가 발생합니다. 어떻게 해결하면 좋을까요??

스크린샷 2022-09-20 오후 5.35.29

1개의 좋아요

안녕하세요

제보주신 환경에서 재현해보려 했지만 이슈가 재현되지 않아서 정확한 원인은 파악하지 못했습니다ㅠㅠ

혹시 flutter clean 명령어 실행 및 cocoapods 캐시 삭제 후에도 동일하게 에러가 발생하고 있나요?

넵 flutter clean도 해보고 Pods 폴더와 .symlinks 폴더 Podfile.lock파일 다 지우고 빌드해봐도 동일한 에러가 납니다ㅠㅠ Podfile 에서 use_frameworks! 가 반드시 필요한건가요?

use_frameworks! 옵션은 정적 프레임워크를 사용할 때 선언하는 옵션으로 알고있어서 kakao_flutter_sdk를 사용하실 때는 선언할 필요가 없습니다. 그리고 1.2.2 버전을 배포할 때도 ios 관련해서 수정한 내역이 없어서 왜 에러가 발생하고 있는지 파악하지 못하고 있네요

이전 SDK를 사용해도 동일하게 에러가 발생하는지 확인 가능하실까요? ex) 1.2.1 버전, 1.2.0 버전, 1.1.1 버전 등

1개의 좋아요

깃헙에 올라와있는 kakao sdk example 코드를 실행시켜봤을때 처음 실행시 실행이 잘 되다가 Podfile 에서 use_frameworks!를 지우고 pod 캐시 삭제후 pod install 하고 실행하면 바로 오류가 납니다. 여러가지 찾아봤는데 런타임에 동작하는 동적 라이브러리 형태 일 때 use_frameworks 명령어가 필요하다고 하는데 다른 로그인 플러그인들은 use_frameworks가 없어도 잘 동작합니다ㅠㅠ 해결 할 수 있는 방법이 있을까요? (1.1.1 버전에서도 같은 오류가 납니다)

1개의 좋아요

flutter 빈 프로젝트를 생성했을 때 use_frameworks!use_modular_headers! 이 선언되어있다는걸 제가 놓쳤네요… 테스트해본 결과 kakao_flutter_sdk를 사용하기 위해서는 두 옵션이 필요한 것으로 보입니다.

두 옵션은 flutter 프로젝트를 생성했을 때 기본으로 들어가있는 옵션이기 때문에 특별한 이유가 없다면 제거해서 사용하지 않는 것이 좋다고 생각되는데요, use_frameworks를 사용했을 때 에러가 나는 라이브러리가 어떤건지 알려주시면 조금 더 확인해보도록 하겠습니다.

1개의 좋아요

Lexical or Preprocessor Issue (Xcode): ‘FBLPromiseError.h’ file not found

이런 오류 메세지가 뜹니다. 해당 오류는 Firebase 플러그인에서 참조하는 PromisesObjC 라는 라이브러리 때문인것으로 보입니다.
정확히 Firebase의 어떤 플러그인 때문인지는 아직 찾지 못했지만 우선 오류메세지 공유 드립니다.
원래는 잘 동작하는 플러그인들인데 use_frameworks! 만 추가하면 나는 오류이며 해당 오류를 검색해봤을때 use_frameworks!를 제거하고 use_modular_headers!를 추가해야한다고 했어서 그렇게 사용중이었습니다.

참고로 이전에 다른 개인 개발자가 만든 flutter_kakao_login 이라는 플러그인을 사용하다가 그 플러그인이 더이상 maintain 되지 않아 이번에 kakao_flutter_sdk 로 바꾸려는 중에 pubspec.yaml 에 넣자마자 맞닥뜨린 오류입니다.

스크린샷 2022-09-21 오전 11.51.46

혹시 import 하는 부분을
스크린샷 2022-09-23 오전 9.54.14

이렇게 변경해주실 수 있나요?
스크린샷 2022-09-23 오전 9.54.34

#import "KakaoFlutterSdkPlugin.h"
#if __has_include(<kakao_flutter_sdk_common/kakao_flutter_sdk_common-Swift.h>)
#import <kakao_flutter_sdk_common/kakao_flutter_sdk_common-Swift.h>
#else
// Support project import fallback if the generated compatibility header
// is not copied when this plugin is created as a library.
// https://forums.swift.org/t/swift-static-libraries-dont-copy-generated-objective-c-header/19816
#import "kakao_flutter_sdk_common-Swift.h"
#endif

찾아보니 동적 라이브러리와 정적 라이브러리가 헤더를 링크하는 방식이 다른것 같습니다.
use_frameworks 를 사용하게되면 라이브러리가 런타임에 동적으로 동작하는 방식이라 앱의 퍼포먼스에 영향을 끼치게 되어서 임포트 부분 수정 요청드립니다! 위의 방식대로 임포트 부분을 수정하면 동적/정적 모두 오류 없이 빌드 할 수 있는것으로 확인하였습니다.

1개의 좋아요

원인 분석에 해결방법까지 공유해주셔서 감사합니다.

내부적으로 검토 및 테스트 진행해보고 이슈가 없다면 수정해서 최대한 빠른 시일 내에 배포하도록 하겠습니다.

감사합니다

1개의 좋아요

감사합니다! :slight_smile:

해당 이슈 수정된 kakao_flutter_sdk 1.3.0-beta.3 버전 배포되었습니다. 제보주셔서 감사합니다.