본문 바로가기

Flutter 사용 시 발생하는 미확인 개발자 문제

기술적인 이야기/기타 개발 2020. 2. 18.
반응형

macOS Catalina에서 Flutter CLI 도구를 이용해 개발 시 겪을 수 있는 문제 중 하나로 미확인 개발자 문제가 있습니다. 이 문제를 해결하는 방법을 간략히 정리하는 글입니다.

문제

flutter 커맨드를 사용할 때, 예를 들어 flutter doctorflutter build, 혹은 flutter run 시에 아래와 비슷한 오류가 날 때가 있습니다.

"idevice_id" cannot be opened because the developer cannot be verifed.

위 오류에서 idevice_id 대신 ideviceinfo, iproxy 등 여러 이름이 올 수 있습니다. 즉 하나의 명령이 아니라 여러 명령 바이너리가 개발자 사인이 빠진 채로 빌드되어 있어서 macOS에서 경고를 표시하는 것입니다.

아래는 한글 로케일의 macOS에서 캡처한 화면입니다.

"개발자를 확인할 수 없기 때문에 'iproxy'을(를) 열 수 없습니다" 오류

해결

원천적인 해결은 역시 구글 Flutter 개발팀에서 개발자 사인을 적용해서 빌드해 주는 것뿐이겠지만, 구글은 이 문제 해결에 관심이 없는 것 같습니다. 이 문제가 나타난 지 굉장히 오래된 데다 해결 방법이 단순함에도 전혀 해결되고 있지 않거든요.

개인이 할 수 있는 방법은 이 사인 체크를 우회하여 개발자 확인 여부를 체크하지 않도록 하면 됩니다. 다만 시스템 전역으로 이를 해제하는 것은 보안 시스템 하나를 꺼 버리는 것이기 때문에 추천하지 않습니다.

대신 각각의 명령어의 속성을 건드려서 해결하는 방법이 있습니다. 아래와 같은 식의 셸 커맨드를 입력하면 됩니다.

sudo xattr -d com.apple.quarantine /FLUTTER_PATH/bin/cache/artifacts/libimobiledevice/idevice_id

sudo xattr -d com.apple.quarantine /FLUTTER_PATH/bin/cache/artifacts/libimobiledevice/ideviceinfo

sudo xattr -d com.apple.quarantine /FLUTTER_PATH/bin/cache/artifacts/usbmuxd/iproxy

FLUTTER_PATH라고 표시한 부분은 자신이 설치한 Flutter 도구의 경로를 입력해야 함에 유의합시다.

위 세 줄의 커맨드는 위에서 언급한 3가지 명령에 대해 각각 com.apple.quarantine 속성을 제거하는 커맨드이며 반드시 관리자 권한이 필요하기 때문에 sudo를 줘서 실행시키고 있습니다. 세 줄의 명령을 모두 실행할 필요는 없으며 문제를 겪게 되는 커맨드만 실행하는 것도 괜찮을 것 같습니다.

물론 이 외에 다른 커맨드에서도 위와 같은 경고를 보게 된다면 해당 명령어 역시 경로를 정확하게 입력해서 비슷하게 해결할 수 있습니다.

저는 이 커맨드를 이용한 이후 더 이상 문제가 발생하지 않고 있습니다. 잘 되시나요?

 

참고

위 해결법의 각 명령을 실행할 때 아래처럼 오류가 발생하는 경우도 있을 수 있습니다.

xattr: /FLUTTER_PATH/bin/cache/artifacts/libimobiledevice/idevice_id: No such xattr: com.apple.quarantine

내용은 해당 속성이 존재하지 않는다는 의미입니다. 즉, 이 경우는 오류라기보다는 이미 조치가 취해진 상태라는 의미이고 그래서 없는 속성을 삭제하려 하기에 발생하는 경고일 뿐입니다.

결론은 그냥 무시하면 되는 오류입니다.

728x90
반응형

댓글