macOS Catalina에서 Flutter CLI 도구를 이용해 개발 시 겪을 수 있는 문제 중 하나로 미확인 개발자 문제가 있습니다. 이 문제를 해결하는 방법을 간략히 정리하는 글입니다.
문제
flutter
커맨드를 사용할 때, 예를 들어 flutter doctor
나 flutter build
, 혹은 flutter run
시에 아래와 비슷한 오류가 날 때가 있습니다.
"idevice_id" cannot be opened because the developer cannot be verifed.
위 오류에서 idevice_id
대신 ideviceinfo
, iproxy
등 여러 이름이 올 수 있습니다. 즉 하나의 명령이 아니라 여러 명령 바이너리가 개발자 사인이 빠진 채로 빌드되어 있어서 macOS에서 경고를 표시하는 것입니다.
아래는 한글 로케일의 macOS에서 캡처한 화면입니다.
해결
원천적인 해결은 역시 구글 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
내용은 해당 속성이 존재하지 않는다는 의미입니다. 즉, 이 경우는 오류라기보다는 이미 조치가 취해진 상태라는 의미이고 그래서 없는 속성을 삭제하려 하기에 발생하는 경고일 뿐입니다.
결론은 그냥 무시하면 되는 오류입니다.
'기술적인 이야기 > 기타 개발' 카테고리의 다른 글
러스트(Rust) 시작해보기 (1311) | 2020.07.23 |
---|---|
Flutter에서 써드파티 모듈을 수동으로 집어넣기 (901) | 2020.06.09 |
Python 3 정적 타이핑 소개 및 소감(?) (0) | 2020.02.13 |
Python에 F-string 이라는 게 있었다? (0) | 2020.02.11 |
파이썬 코드 문법 검사기 flake8 (0) | 2020.01.29 |
댓글