어제 하루를 flutter windows 빌드 에러 삽질로 날렸다.
flutter 프로그램으로 서비스 시작, 정지를 하려고 하는데 그러려면 관리자 권한을 받아와야 했다.
그때 발생한 에러.
분명히 디버그 모드로 켜놓고 핫리로드로 개발할 때는 잘 되었었는데, 빌드할 때는 안 되더라.
디버그 종료하고 다시 디버그를 하니 동일 증상 발생..
flutter 윈도우 빌드할 때 생기는 오류인데 아무리 구글링을 해보고 찾아봐도 나오지가 않음..
C++ 에러다 보니까 더 안되고 미쳐버리겠는 상황이었는데 드디어 답을 찾았다.
해당 버그는 관리자 권한을 요청하려고 할 때 생긴 버그인데, 처음 flutter에 관리자 권한을 주려고 구글링해서 찾아보니 이런 답을 발견했다.
https://github.com/flutter/flutter/issues/98416
보면 .windows/runner/runner.exe.manifest 파일에 이 부분을 추가하라고 되어있는데
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
오히려 추가하고 나니까 LNK1327 에러가 발생하더라.
그래서 한참 삽질을 하고 또 구글링을 하고 반나절을 날린거 같다.
visual studio 설치할 때 뭔갈 빼먹은가 싶어서 다시 설치해보기도 하고 계속 검색을 해봤다.
결국 위 github 질문글에서 CMakerLists.txt 파일에 추가로 작성하라는 내용을 작성하고 빌드를 하니 잘 되더라
/windows/runner/CMakeLists.txt 파일의 하단에 이 코드를 넣어준다.
SET_TARGET_PROPERTIES(PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\" /SUBSYSTEM:WINDOWS")
처음부터 위 아래를 다 넣었어야지.. manifest 오류인줄 알고 manifest 만 한참 보고 삽질했다.