flutter 오류 – Windows Version (Unable to confirm if installed Windows version is 10 or greater)

정말 간만에 블로그에 글 남겨놓습니다. 진짜 바쁩니다. 트위터도 못할 정도로요..ㅠㅠ

뭐, 근황 업뎃하고 밀린 내용 올리고 할 껀데, 일단 요즘 좀 찾은 내용 좀 공유하려고 합니다. 바로 flutter 오류인데… 그냥 모바일 앱 개발만 하시는 분들은 상관 없을텐데, 요즘 나온 stable 버전인 3.7.1 버전 설치하고 나서 flutter doctor -v 하면 아래와 같이 나오는 분들 많을 껍니다. (윈도우 환경입니다.)

윈도우 버전 나왔다면서… 왜 이래..?

윈도우 환경에서 플러터 설치 후에 이렇게 나오면, 뭐 안드로이드 개발쪽에 하려고 하는 거면 별 신경도 안쓸텐데…. 저렇게 뜨는 것도 좀 그럴 껍니다.

게다가 쓰는 환경이 윈도우 11인데….

그래서 일단 저 내용이 뭔지 확인해보니… github 이슈는 이미 closed 되어있네요. 해결 되었다는 건데….

진짜 마지막까지 보면 closed 처리되어있다.

근데 이게 좀 골때리는 것이… 마지막에 나온 해결책이 방금 올린 이미지에 그대로 있다. “master 채널을 이용하라.” 라고요.

……

….수정은 했다. 그러니 그거 써라. 이런 건가…

그래서 일단 말하는대로 master 채널로 이동해서 처리하려고 한다. 하는 방법은 간단하다.

  1. flutter channel
  2. flutter channel master
  3. flutter upgrade

이렇게 하나씩 하면 master 채널로 가서 플러터를 업데이트 하게 된다.

stable 쓰면서 안정적으로 하고 싶었는데… 일단 이걸로 해결 되는지는 봐야지.

플러터 업데이트가 진행되는 것이니 시간은 좀 걸린다. 다 진행되고 나면 flutter doctor -v로 확인해보기로 합니다.

오류는 없어졌습니다.

그러니 github에 나온대로 일단 저 이슈 열려있을 때 사람들이 코드 수정한 거 공유 좀 되더니 master에는 일단 수정이 된 듯 합니다. 근데 아직 stable에는 적용이 안되었나보군요. 현재 master는 보다시피 3.8.0의 pre 버전입니다. stable도 3.8.0 되고 나면 이 오류는 없어져 있겠죠…?

저처럼 별 신경도 쓸 필요도 없는 이 오류가 신경쓰이면, 지금은 일단 master 채널로 이동해서 확인해보시면 될 거 같습니다.

Error: CocoaPods’s specs repository is too out-of-date to satisfy dependencies. (iOS)

아니, 플러터면서 왜 이런 오류가..!

하고 생각할 수 있는 오류를 가져와봤습니다. 협업하면서 한번씩은 겪을 문제인데, 사실 이걸 모르는 분들은 왜 생기는지 몰라할 수 있어서…..

빌드하다가 터지는 녀석…

이런 일이 생기는 건 간단하다. flutter pub이 내가 작업하던 것과 다른 사람이 작업하던 녀석이 충돌해서 그렇다. 내가 개발하다가 넘겨준 부분에 pub 라이브러리를 작업하는 곳에서 새로 업뎃하였다. 그러면서 여러모로 바꿔서 진행한 것도, 새로 추가된 것도 있고..

이러다보니 여러모로 추가된 녀석과 내가 먼저 이용해서 빌드에 이용한 녀석하고 충돌한 거다.

아, 당연하지만, pubspecs.yaml 파일이 충돌한 게 아니다. 이 파일의 내용을 가지고 ios 빌드를 진행해야 하는 CocoaPods가 새로 업뎃해서 받아오고 해야 하는데 그걸 그냥 더 추가하고 넘기는 작업으로만 하다보니 그런 것이다. CocoaPods를 써본 사람들은 알겠지만, 사실 방법 자체는 여러모로 합리적이다. 기존에 이용하는 것들은 이미 .lock 파일로 만들어서 고정해 두고 빠른 작업을 진행하도록 해놓는 것으로 빌드 시간을 단축할 수 있으니깐..

근데 뭐, 내가 쓰다가 이렇게 오류 나면 오류 나는 것이니 풀어줍시다.

내 작업에서 보이면 그냥 오류일뿐…

그럼 어떻게 하는지 하나하나 따라하면 됩니다. 근데 저기서 알려주는 pod repo update는 쳐봤자 오류납니다.

ios 폴더로 들어갑니다.

그리고 이 일의 원흉인 Podfile.lock 파일을 지워줍니다.

그리고는 위와 같이 pod install –repo-update 를 실행해서 repo를 업데이트 해줍니다. 그러면 pubspecs.yaml에 지정한 녀석들을 받아다가 업뎃을 쫙 진행해줍니다.

그리고 나서 다시 플러터 프로젝트의 루트로 올라가서 flutter clean 명령으로 현재 프로젝트의 빌드 관련 정보로 생성한 녀석들을 싹 지워줍니다.

그러고 나서 다시 빌드를 진행하면 문제 없이 빌드되는 것을 알 수 있습니다.

이건 CocoaPods를 좀 이용해보고 하면 금방 해결할 수 있는데, 처음부터 flutter를 접하면서 여러명과 작업하고 그러다 보면 그냥 보이는 오류여서 좀 정리해봤습니다.

간만에 쓴 블로그가 이런 내용인데 도움 좀 되었으면 좋겠군요. ;ㅅ;

요즘 너무 바빠서….

No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi

외주로 플러터 앱 개발 작업을 하고 있는 도중에 이번에 안드로이드 스튜디오가 업데이트 되었더군요. ㅎㅎ….

보통이었으면 업데이트를 안했을 텐데, 왠지 모르게 이건 업데이트를 해야 할 거 같았습니다. 구글 애드몹(AdMob) 적용하는 pub도 안드로이드 업데이트 땜에 맛이 갔던 기억도 있고, Gradle 버전 땜에 짜증났던 경우도 상당히 많았기에 업데이트를 통해서 확인해야 할 듯 하더군요. 이건 또 무슨 문제 터질것인지를 생각하면 진짜….

(근데 iOS에서는 진짜 아무 문제도 없이 잘 실행되던 거 보면 더더욱 열받습니다. 그러니 여러분 제발 아이폰 쓰세요.)

뭐, 저한테 플러터는 지금 버전 업되면서 여러모로 충돌나는 좀 많이 짜증나는 녀석으로 인식이 박히고 있었는데… 이건 좀 경험 공유를 해야 할 거 같습니다.

일단 안드로이드 스튜디오가 업글되고, 개발 화녁이나 API 업글이 되고 나서 갑자기 이런 메시지가 발생하기 시작합니다.

…대놓고 빨간색이야…
으앙….ㅠㅠ

에러 메시지의 주 내용은 제목에 적은 내용 그대로 ndk toolchain을 찾을 수 없다는 내용입니다.

근데 이런 오류가 나면, 보통을 플러터 환경 문제일 것이라고 가장 먼저 떠올릴 수 있습니다. 당연하잔하요. ndk toolchain이 없다니… 이건 뭐 설치 오류 아니겠어요?

근데 이걸 공유하고자 맘먹은 이유는….

flutter doctor, flutter doctor -v로 돌려도 정상으로 나옵니다. 아래처럼 말이죠…

이게 그냥 flutter doctor 돌렸을 때
이건 flutter run -v 돌렸을 때, 도중에 flutter doctor -v를 스스로 돌려서 툴에 문제 있는지 보여주는 화면
….와 이런 오류 진짜 싫습니다….

어떤 크로스플랫폼 이용하는 녀석들 중에 ndk 안쓰는 녀석이 어딨다고?! 이미 설치 다 해놨을텐데 왜?!

진심 최악입니다.

검색해보니 다행이도 쓰레가 있습니다. (링크도 걸어둡니다.) 다른 곳에서 다른 사용자가 비슷하게 질문 올렸는데 전부 이 스레 하나로 통일되어 나옵니다.

정확하게 이 쓰레 딱 하나 나옵니다.

근데 뭐 이 쓰레 제대로 이해 못할 분들을 위해 결론부터 적으면, 안드로이드 스튜디오의 ndk 버전 다운그레이드 하시면 됩니다.

안드로이드 스튜디오에서 SDK Manager를 통해 SDK를 확인하고 SDK Tools에서 NDK가 그냥 체크 표시 되어있는 경우에는 업데이트 하면서 NDK도 그냥 자동으로 업데이트 된 상황인 것입니다. 전 이미 버그 안나도록 다운그레이드 해서 저렇게 되어있을 뿐…

그럼 이전 버전은 어떻게 설치하냐고 물으시면, 아래와 같이 Show Package Details를 클릭하면 설치 가능한 버전들을 보여줍니다.

스레에서 말하는 제일 오류 안나는 버전으로 다운그레이드 했습니다. 다른 건 안건드려도 상관 없습니다.

그리고 원하는 버전의 ndk를 체크하고, 최신 ndk를 체크 해지해서 지워줍니다. 그리고 적용하면 바뀐 버전으로 설치가 진행될 것입니다. (ndk 설치는 시간이 오래 걸립니다.)

그리고 나서 버그난 플러터 프로젝트 다시 빌드하면 저 오류 어디서 튀어나왔냐는 듯이 없어집니다.

진짜 개운해졌습니다…ㅠㅠ

이거 스레 내용이 이해가 제대로 안되어서 정신 차리고 제대로 보고 다시 하느라 솔직히 하루 이틀 날려먹은 것도 어이가 없긴 한데….

ndk 버전 타기 시작하면 진짜 열받습니다. 다행이 지금 쓰고 있는 pub들 중에서 낮춘 ndk에서 문제 안터지게 되었으니 다행인데, 만약 계속 써야 하는 녀석이 ndk 버전 타고 하면 골때려지기 시작하는데….

다른 버전 충돌과 문제인 것은, 보통의 버전 충돌이나 참조 충돌같은 경우에는 각각이 다 독립적인 라이브러리들이다 보니 그냥 버전을 맞춰준다 = 그냥 개발자만 좀 불편해진다에서 끝날 수도 있는데 이런 건 그냥 운영체제 동작환경 자체에도 영향을 주는거니…

차후에 새로운 프로젝트로 해보면서 확인 좀 해봐야겠지만… 이건 좀 많이 위험하네요.

예전에 Cocos2d-X 할 때 생각나서 더 머리아프군요….ㅠㅠ

시간 날려먹은 거 땜빵하러 전 이만…

p.s. 이런 오류 안터지게 잘 개발하는 분들도 있겠지만, 그냥 플러터에 올라온 거 잘 이용하면 뭔 문제 있겠냐 수준의 분들이라면 그냥 더 이상 할 말은 없습니다.