macOS 빌드 가이드
아래 지침을 따라 macOS에서 Electron 자체를 빌드하여 커스텀 Electron 바이너리를 생성한다. 사전 빌드된 Electron 바이너리와 함께 앱 코드를 번들링하고 배포하려면 애플리케이션 배포 가이드를 참고한다.
사전 준비 사항
- macOS 버전 11.6.0 이상
- Xcode. 정확히 어떤 버전이 필요한지는 빌드하려는 브랜치에 따라 다르지만, 일반적으로
main
브랜치를 빌드할 때는 Xcode의 최신 버전을 사용하는 것이 좋다. - node.js (외부 설치 필요)
- Python 버전 3.7 이상
Arm64 전용 사전 요구사항
- Rosetta 2
- x64와 arm64 머신 간 크로스 컴파일이 필요한 의존성을 사용할 경우 Rosetta를 설치할 것을 권장한다. Rosetta는 softwareupdate 커맨드라인 도구를 사용해 설치할 수 있다.
$ softwareupdate --install-rosetta
Electron 빌드하기
빌드 가이드: GN을 참고한다.
문제 해결
Xcode "호환되지 않는 아키텍처" 오류 (MacOS arm64 관련)
Xcode와 Xcode 커맨드라인 도구가 모두 설치되어 있더라도 ($ xcode -select --install
명령어 실행 또는 여기에서 직접 다운로드), 다음과 같은 스택 트레이스가 나타날 수 있다:
xcrun: error: unable to load libxcrun
(dlopen(/Users/<user>/.electron_build_tools/third_party/Xcode/Xcode.app/Contents/Developer/usr/lib/libxcrun.dylib (http://xcode.app/Contents/Developer/usr/lib/libxcrun.dylib), 0x0005):
tried: '/Users/<user>/.electron_build_tools/third_party/Xcode/Xcode.app/Contents/Developer/usr/lib/libxcrun.dylib (http://xcode.app/Contents/Developer/usr/lib/libxcrun.dylib)'
(mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e))), '/Users/<user>/.electron_build_tools/third_party/Xcode/Xcode-11.1.0.app/Contents/Developer/usr/lib/libxcrun.dylib (http://xcode-11.1.0.app/Contents/Developer/usr/lib/libxcrun.dylib)' (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e)))).`
arm64 아키텍처를 사용 중이라면, 빌드 스크립트가 잘못된 Xcode 버전을 가리키고 있을 수 있다 (11.x.y 버전은 arm64를 지원하지 않음). /Users/<user>/.electron_build_tools/third_party/Xcode/
디렉토리로 이동해 Xcode-13.3.0.app
을 Xcode.app
으로 이름을 변경하면 올바른 Xcode 버전을 사용할 수 있다.
인증서 검증 실패 문제 해결
certifi
를 설치하면 다음과 같은 오류를 해결할 수 있다:
________ running 'python3 src/tools/clang/scripts/update.py' in '/Users/<user>/electron'
Downloading https://commondatastorage.googleapis.com/chromium-browser-clang/Mac_arm64/clang-llvmorg-15-init-15652-g89a99ec9-1.tgz
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)>
Retrying in 5 s ...
Downloading https://commondatastorage.googleapis.com/chromium-browser-clang/Mac_arm64/clang-llvmorg-15-init-15652-g89a99ec9-1.tgz
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)>
Retrying in 10 s ...
Downloading https://commondatastorage.googleapis.com/chromium-browser-clang/Mac_arm64/clang-llvmorg-15-init-15652-g89a99ec9-1.tgz
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)>
Retrying in 20 s ...
이 문제는 Python 3.6이 더 이상 사용되지 않는 Apple 제공 OpenSSL 라이브러리 대신 자체 OpenSSL을 사용하기 때문에 발생한다. certifi
는 기본 루트 인증서 번들을 추가하여 이 문제를 해결한다. 이 문제는 Electron 저장소에서 여기에 문서화되어 있다. 이 문제에 대한 추가 정보는 여기와 여기에서 확인할 수 있다.