728x90
android gRPC 를 사용하기 위해서 아래와 같은 단계를 진행하면서 gRPC 를 적용한다. 이때 Mac M2 Chip 에서 이슈가 있었던 부분을 정리하였다.
1. libs.version.toml 에 android protobuf plugin 버전 등록 및 plugin 적용
protobufPlugin = "0.9.4"
...
protobuf = { id = "com.google.protobuf", version.ref = "protobufPlugin" }
2. app > gradle kts 에 protobuf plugin 적용하기
plugins {
alias(libs.plugins.protobuf)
}
protobuf {
protoc {
artifact = libs.protobuf.protoc.get().toString()
// Set the location of generated source code by protoc compiler
generatedFilesBaseDir = "$projectDir/gen-src"
}
plugins {
create("grpc") {
artifact = "io.grpc:protoc-gen-grpc-java:1.53.0"
}
}
generateProtoTasks {
all().forEach { task ->
task.builtins {
register("java") {
option("lite")
}
register("kotlin") {
option("lite")
}
}
task.plugins {
register("grpc") {
option("lite")
}
}
}
}
}
android {
namespace = "${your_namespace}"
sourceSets.getByName("main") {
java.srcDirs("gen-src/main/java", "gen-src/main/grpc")
}
}
dependencies {
api(libs.protobuf.kotlin.lite)
}
gRPC 적용 중 발생한 문제 상황
protoc-grpc-gen-java 를 실행하지 못하는 문제
protoc-gen-grpc-java: program not found or is not executable
Please specify a program using absolute path or make sure the program is available in your PATH system variable
--grpc-java_out: protoc-gen-grpc-java: Plugin failed with status code 1.
해결 방법
1. app > gradle kts 에서 protoc 에서 os architecture 에 따라 artifact 를 구분한다. (나의 경우 수정되지 않음)
protobuf {
protoc {
if (osdetector.os == "osx") {
artifact = 'com.google.protobuf:protoc:3.14.0:osx-x86_64'
} else {
artifact = 'com.google.protobuf:protoc:3.14.0'
}
}
}
2. maven download 된 grpc java 실행 파일을 직접 수행해 보고 BAD CPU 에러가 발생할 경우 Rosetta update 를 진행한다.(나의 경우 정상 동작 함)
java.io.IOException: Cannot run program "/Users/aweinzettl/.gradle/caches/modules-2/files-2.1/com.google.protobuf/protoc/3.0.0/31a580cdff228f572e27920c0abcfa71cd3d95e4/protoc-3.0.0-osx-x86_64.exe": error=86, Bad CPU type in executable
-> 위와 같이 에러가 발생할 경우 터미널에서...
softwareupdate --install-rosetta --agree-to-license
실행한다.
2번 과정 수행 시 gRPC 빌드 시 gRPC Service Stub 생성을 위한 Class 가 정상적으로 나온다.
728x90
'Android > gRPC' 카테고리의 다른 글
Android gRPC Client 구현(2) - Connection (0) | 2021.10.01 |
---|---|
Android gRPC Client 구현(1) - gradle 환경 설정 (0) | 2021.10.01 |