2021/07/13

[Flutter] Error: Cannot run with sound null safety

Flutter 개발환경을 구축해보고 공식 사이트의 안내를 따라 앱을 만들어 보았는데 실행부터 에러가 발생하였다.

https://flutter-ko.dev/docs/get-started/codelab

Error: Cannot run with sound null safety, because the following dependencies

don't support null safety:


- package:english_words


해결을 위해 인터넷을 찾아보니 해결책은 나오는데 원인은 모르겠다. 앱을 만들기 쉽다고 하는데 내게는 그리 쉽운게 아닌 것 같다. 해결 방법은 실행 명령 파라메터에 "--no-sound-null-safety"를 추가하는 것이다.

Android Studio 를 사용하는경우, 메인 메뉴의 Run 메뉴에 있는 "Edit Configuration..." 메뉴 대화상자의 "Additional run args" 항목에 "--no-sound-null-safety"를 추가한다.


Visual Studio Code 를 사용하는 경우, File > Preferences > Settings (Ctrl + ,) 에서 "Flutter run additional args" 를 찾아서 아이템을 추가하고 "--no-sound-null-safety"를 입력한다.


파라메터 입력 후 실행을하니 정상 실행되는 결과 화면을 볼 수 있었다.

2021/07/10

[Windows 11] 구형 노트북에 Windows 11 업그레이드 하기

회사에서 사용하는 PC에 Windows 11을 업그레이드 한 후 집에서 사용하는 노트북에도 설치를 해 보고 싶었다. 그래서 시도를 해 보았지만 HW이 충족되지 않아 할 수 없었다.


그래도 역시나 비슷한 상황에서 해결하려는 사람들이 많았는지 인터넷에 해결방법이 나와 있었다.

Bypass TPM 2.0 Requirement for Windows 11 Insider Preview via Windows update / Insider Programme


사전준비는 Registry 편집 단계로 HW 조건 미충족 문제를 해결하기 위한 것으로 강제로 Dev Channel 사용할 수 있게 하는 것과 Windows 11의 필수 HW 조건인 TPM 2.0 과 Secure Boot를 무시하도록 하기위한 조치이다.


Dev Channel 을 사용하기 위해 아래 두 키에 포함되어있는 일부 항목을 수정한다.


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsSelfHost\UI\Selection

UIBranch = Dev

UIContentType = Mainline

UIRing = External



HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsSelfHost\Applicability

BranchName = Dev

ContentType = Mainline

Ring = External


다음으로 TPM 과 Secure Boot 를 해결하기 위한 것으로 HKEY_LOCAL_MACHINE\SYSTEM\Setup 에 LabConfig 키를 추가하고 DWORD 항목 BypassTPMCheck와 BypassSecureBootCheck를 추가하여 1로 설정한다.


HKEY_LOCAL_MACHINE\SYSTEM\Setup\LabConfig

BypassTPMCheck = 1

BypassSecureBootCheck = 1


위의 조치로 Windows Insider Program의 Dev Channel을 사용할 수 있고 해당 채널을 이용하여 업그레이드를 진행한다.



업그레이드 도중 TPM 2.0 이 없는 경우 아래와 같이 오류 메시지가 출력되고 업그레이드가 종료된다.

이때 https://github.com/CodeProf14/Fix-TPM 에서 AppraiserRes.dll 파일을 다운로드 받아서 C:\$WINDOWS.~BT\Sources 경로에 복사해준다. 그리고 업데이트 대화상자에서 Fix Issue 버튼을 선택하고 다시 업그레이드를 시도한다. 이번에는 업그레이트가 멈춤 없이 진행되었다.


재부팅 후 Windows 11을 볼 수 있었다.

.






2021/07/07

[Windows 11] 탐색기의 파일 리스트의 간격을 줄이기

언제부터인가 탐색기의 파일 항목 리스트의 간격이 매우 넓어졌다. 아마도 20H2 버전부터인것 같다.


간격이 넓어지다보니 한화면에 보여주는 파일 수가 많이 줄어들어 불편하여 이전 형태로 변경하는 방법을 찾아보았다. 어전 버전부터 지원하는 기능인지는 모르겠으나 Windows 11 에서는 탐색기 옵션으로 간격을 원래대로 돌릴 수 있었다.

폴더 옵션 대화상자에서 "Decrease space between items (compact view)" 옵션을 선택해 주기만하면 된다.


옵션 설정후 탐색기를 다시 시작하면 예전처럼 파일 항목 간격이 줄어든 것을 볼 수 있다.



[Windows 11] 파일 탐색기의 팝업메뉴(Context Menu)을 Windows 10 형태로 변경하기

※ 22000.71 버전 이후로 적용이 되지 않는다. ☹️


Windows 11의 큰 변화중의 하나는 파일 탐색기의 리본바와 팝업메뉴의 간소화이다.

메인 메뉴의 사용이 많지 않는 나는 간소화에 큰 영향이 없는데 팝업 메뉴의 경우 간소화로 많은 불편함을 가져왔다.


탐색기 작업에 많은 부분을 팝업 메뉴로 처리를 했는데 기존의 메뉴를 부르기에는 매우 불편하게 변경이 되었다. 나와 유사한 생각을 하는 사람이 많아서인지 이전 형태의 팝업 메뉴로 전환하는 방법을 찾는 사람이 많은 것 같다.


이전 형태로 되돌리는 방법은 간단하였다. 폴더 옵션에서 "Launch folder windows in a separate process" 옵션을 선택해 주기만 하면된다.


이전 버전에도 있는 옵션인데 어찌 이번 버전에서는 탐색기의 외형까지 영향을 주는지는 모르겠으나 이 옵션을 설정하면 이전 형태의 탐색기를 사용할 수 있다.




2021/07/06

Windows 11 업그레이드

Windows 11 이 발표되고 얼마되지 않아 Windows Insider Program 의 Dev Channel에 Windows 11 인 Build 22000.51 버전이 올라왔다. 사용하고 있던 PC에 바로 설치해 보았다.

Windows 11


업그레이드는 생각보다는 빠르게 진행되었다. 업그레이드 후 로그인을 하니 산뜻한 배경화면이 맞이해 주었다.

처음에는 작업표시줄이 중앙정렬되어 다소 어색한 느낌이었다. 개인적으로 작업표시줄의 버튼의 위치가 고정되어 있는것을 선호하여 작업 표시줄을 좌측정렬로 변경하였다. 작업표시줄에서 마우스 우측 버튼 메뉴인 Taskbar Settings을 선택해서 보여지는 메뉴중 Behaviors 설정에서 정렬을 바꾸어 줄 수 있다.

작업표시줄 마우스 우측 메뉴

작업표시줄 버튼 정렬 설정


Windows 11 에서는 윈도우와 팝업메뉴의 모서리가 둥글게 처리되었다.

윈도우와 팝업메뉴


윈도우와 팝업메뉴 뿐만아니라 버튼들도 둥글둥글 하게 변했고, 텍스트 입력 상자도 밑줄색이 추가되었다.


기본 윈도우 컨트롤을 사용하는 프로그램들은 모두 둥글둥글한 모습을 보여주었다.

그리고 탐색기도 큰 변화가 있었다. 둥글둥글한 윈도우에 기존 메인 메뉴인 리본메뉴와 마우스 우측 메뉴도 간소화되었다.

파일 탐색기

탐색기 우측 메뉴


탐색기 우측 메뉴가 간소화되면서 기존 우측 Context 메뉴의 사용 빈도가 높은 나로서는 상당히 불편한 변화였다. 계속 사용하면서 해결 방법과 장단점을 찾아 봐야겠다.

2021/07/05

Android license status unknown 문제 해결

 Flutter을 해 보고 싶어서 설치를 했는데 설치후 flutter doctor을 수행하니 Android license status unknown 에러가 나왔다.

flutter doctor --android-license 를 수행하면 자바 에러가 발생하였다. JDK 는 OpenJDK 17을 사용하고 있었다.


해결 방법을 알 수 었어 인터넷에 검색을 해 보니 몇 가지 해결책이 검색이 되었다.

  • JDK 버전을 JDK8 로 변경
  • Android SDK Tools(Obsolete)을 설치
  • SDKManager.bat 및 jar 파일 다운받아 설치
  • Android SDK Command-line Tools 설치


"JDK 버전을 JDK8 로 변경"은 원치 않았다 가급적 최신 JDK를 사용하고 싶어서 이 방법은 시도하지 않았다.

"Android SDK Tools(Obsolete)" 은 내가 설치한 Android SDK 에는 해당 항목이 보이지 않았다. "Hide Obsolete Packages" 항목을 해제해도 나타나지 않았다.

"SDKManager.bat 및 jar 파일 다운받아 설치" 방법은 너무 복잡하고 뭔가 깔끔해 보이지 않았다.

그래서 마지막으로 선택한 방법이 "Android SDK Command-line Tools 설치" 이였다.


Android SDK Command-line Tools을 설치 한 후, flutter doctor를 수행하여 에러가 사라졌음을 확인하였고 flutter doctor --android-license 명려으로 다수의 라이선스를 수용하는 질의에 응답하였다.


License 관련 다섯가지 정도의 라이선스 수용 질의에 응답 후 flutter doctor 를 수행하여 상태를 확인해보니 정상적인 결과가 나왔다.