1. Lost connection to device 발생
Flutter로 프로젝트를 진행하는 중에 위와 같은 에러를 마주쳤다. Lost connection to device.
심지어 프로젝트가 작동을 하다가 firebase를 사용하는 곳에만 가면, 저 에러를 뱉으면서 아무 에러메세지도 없이 종료되어버렸다.
https://github.com/flutter/flutter/issues/35102
찾아보니 위와 같은 경우도 있다고 한다. 혹시 나와 같은 이유로 발생한 에러가 아니라면, 위 방법을 시도해보는 것도 좋을 것 같다.
그런데 나는 해당 경우는 아니었고, 위와 같은 방법으로 해결되지 않았다.
2. 안드로이드 스튜디오에서 에러 메세지가 안 뜬다면, xcode에서 실행시켜보자.
이렇게 안드로이드 스튜디오에서 별다른 에러 메세지 없지 앱이 종료되어버릴 때에는 안드로이드 스튜디오 대신 xcode에서 돌려보면, 에러메시지를 와르르 뱉어내는 경우가 많다고 한다.
그래서 xcode에서 돌려보기 도전.
3. Invalid document reference. Document references must have an even number of segments, but ~ has 3
에러 메세지가 나왔다.
Invalid document reference. Document references must have an even number of segments, but ~ has 3
Document를 참조하는 데에 짝수개의 segment가 필요한데, 나는 3개를 가지고 요청하고 있다는 것이다.
이게 무슨 말일까. Document. 그렇다 firebase의 문제이다.
Firebase 쪽에 문제가 있다.
4. firebase를 사용할 때에는, 문자열에 /가 포함되어 있는지 유의하자.
현재 나는 크롤링을 한 데이터를 받아와서 해당 데이터를 firebase에 넣어서 사용하고 있다.
여기서 문제는 크롤링 데이터에 /가 포함된 문자열이 있는 것이다. 위에서 봤듯이 "짜장면/짜장면곱배기"가 그러하다.
firebase는 /로 구분한 문자열로 문서나 컬렉션의 경로를 지정할 수 있다.
아래 사진처럼 말이다.
그래서 menu/짜장면/짜장면곱배기 의 형태가 되어버려서
'menu'의 '짜장면/짜장면곱배기'에 해당하는 데이터를 참조하는 게 아니라, 'menu'의 '짜장면'의 '짜장면곱배기' 에 해당하는 데이터를 참조하려고 하게되는 것이다.
firebase에 사용하기 전, /를 &로 모두 replace해주는 데이터 전처리를 하니 해결되었다!
[배운점]
1. 안드로이드 스튜디오에서 별다른 에러 메세지 없이 종료되어버린다면, xcode로 돌려보자.
2. firebase를 사용할 땐, 데이터에 /가 있는지 잘 살펴보고, 전처리를 하자.
참고 : https://firebase.google.com/docs/firestore/data-model?hl=ko