말랑말랑제리스타일

플러터 에러 Cannot run with sound null safety 처리 방법 본문

프로그래밍/플러터 앱개발

플러터 에러 Cannot run with sound null safety 처리 방법

제리제리 2022. 11. 3. 00:46

플러터에서 pub을 이용해 외부 라이브러리를 끌어다 쓸 때 간혹 "Cannot run with sound null safety"라는 에러가 발생할 수 있는데요. 참고 사이트에 들어가면 영어로 되어있어 알아보기 힘들지만 처리 방법은 생각보다 간단합니다.

Cannot run with sound null safety 에러 간단한 처리 방법

먼저 가장 간단하게 이 에러를 발생시키지 않는 처리 방법입니다. null safety에 대한 에러를 무시하고 실행시켜버리는건데요. 당연히 플러터 자체적으로 권장하는 방법은 아닌 것 같지만 가장 간단한 방법이기 때문에 이것부터 알려드립니다.

터미널을 이용해 실행시키는 방법(한번만 사용)

반응형

먼저 첫번째 방법은 일단 한번 실행시켜보고자 할 때 터미널에서 실행시키는 방법입니다. 

플러터의 터미널 창에 입력하는 방법
플러터 터미널 창에 입력하는 방법

기본 세팅으로 터미널 창은 안드로이드 스튜디오 화면 하단에 이렇게 존재합니다.

만약 보이지 않으면 View-Tool Windows-Terminal을 눌러 추가해주세요.

터미널을 열어보면 프로젝트 폴더 위치가 나올텐데요. 여기서 "flutter run" 커맨드를 입력하면 앱이 실행됩니다. 하지만 당연히 flutter run을 입력하면 같은 에러가 나겠죠?

그렇기 때문에 옵션을 걸어줍니다.

"flutter run --no-sound-null-safety" 이라는 명령을 입력하고 엔터를 치면 "Cannot run with sound null safety" 에러를 무시하고 빌드해서 실행시켜버립니다. 물론 다음번에 실행할 때도 이 방법을 써야하고 끄고싶으면 터미널에서 키보드 "Q" 버튼을 입력해주면 꺼집니다.

 

자 일단 이런 방법으로 앱을 실행은 시켰지만 상당히 번거롭죠.

안드로이드 스튜디오 실행 옵션을 수정하는 방법

크게 보면 위에서 설명한 것과 같은 방법인데요. 아얘 안드로이드 스튜디오 실행하는 디폴트 옵션으로 "Cannot run with sound null safety" 에러를 무시하게 하는 방법이 있습니다.

메뉴바의 Run-Edit Configurations로 들어가면 아래와 같은 화면이 보일겁니다.

반응형

안드로이드 스튜디오 run, debug 설정
안드로이드 스튜디오 run,debug 설정

이 화면에서 상단 캡처와 같이 Additional run args에 --no-sound-null-safety를 입력해줍니다. "Run" 버튼을 누를 때 기본 옵션으로 이걸 걸어줘서  "Cannot run with sound null safety" 에러가 발생하지 않게 하는거죠.

원리는 앞서 말씀드린 방법과 동일합니다.

 

자 이 두가지가 가장 간단하고 일시적으로  "Cannot run with sound null safety" 에러를 해결하는 방법이었고, 실제로 플러터 자체적으로 이 라이브러리를 사용하지 않는걸 권장하는 것 같죠?

 

 Cannot run with sound null safety 에러 근본적인 원인

이 에러의 원인은 빌드할 때 minumum 버전이 라이브러리와 맞지 않아서인 것으로 보입니다. 이전 버전의 플러터는 null 값에 대해 이렇게까지 타이트하게 관리하지 않지만 요즘은 워낙 타이트하기 때문에 제대로 사용을 못하는 것으로 보입니다.

그러면 이 근본적인 원인을 해결하려면 어떻게 해야될까요?

 

바로 버전을 인위적으로 낮춰주는겁니다. 사실 저는 이렇게 인위적으로 버전을 낮추는 것보다 실행 옵션을 걸어주는게 더 안전할 것 같긴 한데 플러터 사이트에 들어가면 이 버전을 낮춰서 "Cannot run with sound null safety" 에러를 발생시키지 않는 방법이 더 위쪽에 있는걸로 봐서 더 권장하는 방법인 것 같습니다.

반응형

개인적으로 이 에러 하나만 무시하는게 버전을 굳이 낮추는 것보다는 안전할 것 같다는 생각이 들어서 버전을 낮추는 방법은 굳이 사용하지 않았고 방법 자체도 너무 까다로워서 한참 해보려다 잘 안되네요.

버전 마이그레이션도 해보고 별짓 다해봤는데 그냥 깔끔하게 앞서 설명한 간단한 방법을 사용하시는게 정신 건강에 좋을 것 같네요.

물론 더 가능하다면 이 라이브러리를 굳이 쓰지 않는걸 고민하는 것도 나쁘지 않을 것 같습니다.

반응형
Comments