이번에 프로젝트를 하면서 세세하게 배운 점도 많고 대충 앱을 개발할 때 어떠한 식으로 굴러가는구나라는 대략적인 순서를 아는데 많이 도움이 되었다. 지금까지 협업을 해본 적도 없고 깃헙도 최근에 사용하기 시작해서 너무 헷갈리고 어려웠었는데, 플젝 팀원이 많이 도와주셔서 브랜치 사용이 이제 좀 이해가 된달까... (매우 감사했습니다!) 이후에 Solution Challenge도 이러한 느낌으로 흘러가겠구나, 그리고 어떠한 점들을 더 공부해야겠구나를 알게 되었는데, 역시 실전(?)에서 부딛치면서 배우는 게 가장 배우는 것도 많구나를 또 느꼈다.
그런데, 생각보다 이번 플젝은 진심으로 너무 힘들었던 게 에러와의 싸움이었다..... 무슨 플젝을 하던지 마찬가지였겠지만, 유독 이번에 코로나 걸리면서 거의 2주를 생으로 날려서 밀린 학교 공부에다가 플젝까지 하니까 시간이 매우 촉박했었는데, 하나 해결하는데 하루 꼬박 걸린 에러도 참 많았어서 너무 즐거웠다. 아무튼 차치하고, 나를 매우 고생시켰던 에러들을 몇가지 추려 정리해 놓으려고 한다. (막상 블로그 쓰려고 하니 에러 코드들을 다 저장해 놓지 않아서 조금 후회되네.)
1. 카카오 로그인(KOE009)
이 에러는 다른 에러코드랑 다른 로그랑 너무 섞여있어서 에러 코드 자체를 못 보고 있다가 거의 5시간 넘게 걸려서 '에러코드'를 찾았던 것 같다. 카카오에서 API를 사용할 때 자주 생기는 에러코드에 대해 정리한 곳에도 알려주는 에러인데, '등록되지 않은 플랫폼에서 엑세스 토큰을 요청하는 경우'에 발생하는 에러라고 한다. 따라서,, 나는 안드로이드랑 ios 플랫폼 등록 설정이랑 네이티브 앱 키가 잘 못 되었나 싶어 등록만 열번을 했는데 해결되지 않았었다. 그래서, 서치해보다 보니 '해시키 값 오류'일 수도 있다고 하는 글을 봐서 Libressl 재설치해보다가 안돼서 openssl로 갈아타고 예전 버전으로 설치도 해보고 별 난리를 다 쳤었는데 결론은 뜬금 없는 곳에서 나왔다. 그 전까지는 나오지도 않던 에러 메시지를 찾아서 확인해보니,
자바가 안 깔려 있었다. 이게 문제라고는 생각도 못했었던 이유는 하필이면 자바 없이도 틀린(적용할 수 없는) 해시키 값이 나왔기 때문이다. 그래서 ssl 자체 문제일 것이라고 생각했었는데,, 후,, 맥북을 최근에(2달 전) 바꿨는데다가 최근에는 수업 듣고 플러터만 하는 중이라 자바가 필요가 없었어서 안 깔았더니 이상한데서 골탕을 먹였다. (자바민국에서 자바 없이 살아남기 실패!) 아무튼 이게 제일 오래 걸려서(하루 왠종일 했다) 굉장히 인상깊었던 에러다.
2. iOS>Runner>AppDelegate.swift에서
Swift Compiler Error (Xcode): 'UIApplicationLaunchOptionsKey' has been renamed to 'UIApplication.LaunchOptionsKey'
상대적으로 금방 해결했던 에러긴 한데, UIApplicationLaunchOptionsKey와 UIApplicationOpenURLOptionsKey이 UIApplication.LaunchOptionsKey와 UIApplication.OpenURLOptionsKey로 이름이 변화한 경우인데, 둘 중 하나는 제대로 .이 들어가서 설정되어 있었고 하나는 없는 상태였어서 처음에 변수를 못 찾았었던 헤프닝이 있었다. iOS 설정이 아주 뒤죽박죽으로 다 섞여있던 상황이었어서 여러개를 계속 처리하느라 정신이 나갈 것 같았었는데 하나하나 떼어서 보니 간단하네. 그래도 모든 에러가 이정도면 좋을텐데.
3. iOS>Runner>AppDelegate.swift에서 No such module 'Flutter'
이번 프로젝트에서 내가 카카오 로그인, 그리고 나머지 두명이 각각 구글 로그인, 네이버 로그인을 담당해서 하면서 ios info.plist가 난리가 나면서 정리한다고 오늘 시작한 것이었는데, 오늘 하루종일 한 것은 버그 구경인 것 같다. 분명 난 깃헙에 올리기 전에 카카오 로그인만 있을 때는 ios에서 잘 컴파일 되는 것을 확인했는데 말이다. No such 플러터 모듈이면 그때는 어떻게 컴파일 했던 거니? 신비한 맥북이야.
이 메시지는 XCode에서 나타나는 버그인데, 스택 오버플로우를 보면 13.1버전에도 있었던 버그인 것 같다. 왜 그때는 됐는지는 모르겠지만 최근에 XCode를 14.1 버전으로 업데이트했던 것 같은데 그 과정에서 생긴 모양이다. 아무튼, 해결 방법으로는
1. ios폴더 안에 있는 podfile.lock파일과 Pods폴더를 지운다.
2. 터미널에 flutter clean을 한다.
3. 터미널에 pod install과 pod update를 한다.
4. Runner.xcworkspace를 open한다. (xcodeproj파일로 열면 안 된다.)
이렇게 하고 없어지면 그냥 사용하면 되고, 아직도 no such module 'Flutter'이라고 뜨면 조금 기다리면 된다고는 하는데, 나는 그냥 한 3번 반복하니까 버그가 사라지고 정상적으로 돌아왔다.
4. flutter doctor 실행 시,
[!] CocoaPods did not set the base configuration of your project because your project already has a custom config set. In order for CocoaPods integration to work at all, please either set the base configurations of the target `Runner` to `Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig`
에러라고 보기엔 주의사항정도 였던 것 같은데(해당 문제 떄문에 컴파일에 문제가 생기지는 않았음) 아무튼 doctor을 했을 때 다 초록색으로 체크 되어야 깔끔하게 신경이 안 쓰일 테니 해결을 하기로 했다. 간단하게 해결되는데,
1. ios 폴더에 들어가서 pod install을 한다.(ios는 모든 문제가 pod로 귀결되는 것 같다.)
2. ios/Flutter/Debug.xcconfig에 가서
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
를 더해주고,
ios/Flutter/Release.xcconfig에 가서
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"
이렇게 두줄까지 삽입해주면 된다.
그리고, 마지막으로 info.plist를 수정하면서 느낀 점이지만, 협업할 때는 info.plist와 같이 키값 등을 입력할 때 중복되는 부분이 없는 지, 그리고 인덴트와 <dict>,</dict>같은 것들이 짝이 맞는지 확인해보는 습관을 가질 필요가 있을 것 같다.
아무튼, 에러 싫어 제발 한번에 컴파일 되어라!
'Flutter' 카테고리의 다른 글
[Flutter] 플러터에서 Isolate & 비동기 (0) | 2023.10.30 |
---|---|
[Flutter] 자식 위젯에서 부모 위젯 상태 변경 방법(findAncestorStateOfType, 함수 전달) (1) | 2022.12.07 |
[Flutter] Null Safety (1) | 2022.11.06 |
[Flutter] Flutter CLI (Command-Line Interface) (0) | 2022.10.06 |
[Flutter] FVM (Flutter Version Management) 사용 방법 (Windows) (1) | 2022.10.01 |