Apple M1 맥북을 지급받고 개발 환경을 셋팅했는데, grpc를 사용중인 프로젝트에서 gradle build 스크립트가 실패했다.
이유는 별다른 옵션을 주지 않으면 grpc 패키지를 받아올때 환경에 따라서 x86_64 또는 aarch_64 바이너리를 받아오는데, 아직 grpc 패키지에 ARM64용 바이너리(aarch-64)가 릴리즈되지 않았기 때문이다. 그래서 M1 환경의 장비에서도 ARM64용 바이너리가 아닌 AMD64용 바이너리를 받아올 수 있도록 별도의 설정이 필요하다. 프로젝트가 M1 맥북과 Intel 맥북에서 모두 동작하려면 M1 환경의 맥북에 이를 구분할 수 있는 값(osx-x86_64)을 추가하는걸 권장한다.
gradle.properties 설정값 추가하기
Gradle global 속성값을 저장하는 곳인 ~/.gradle/gradle.properties
안에 osx-x86_64
값을 추가한다. 이건 M1 장비에만 추가하면 되는 설정값이다. Intel 맥북에는 따로 설정하지 않아도 osx-x86_64
바이너리를 받아온다.
protoc_platform=osx-x86_64
build.gradle 수정하기
M1 환경인 경우에도 AMD64용 grpc 바이너리를 받아올 수 있도록 protobuf task에 protoc_platform
속성값이 존재하는지 검사하는 조건문을 추가한다.
protobuf {
protoc {
if (project.hasProperty('protoc_platform')) {
artifact = "com.google.protobuf:protoc:${protobufVersion}:${protoc_platform}"
} else {
artifact = "com.google.protobuf:protoc:${protobufVersion}"
}
}
plugins {
grpc {
if (project.hasProperty('protoc_platform')) {
artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}:${protoc_platform}"
} else {
artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}"
}
}
}
}