개발/Android

안드로이드 Proto 설정 시 오류

귀염둥이 팡무 2023. 8. 14. 17:44

오랜만에 Proto Datastore를 사용하려고 하니 2가지 오류가 발생하였습니다. Plugin 적용하는 부분에서 아래의 오류가 발생하였습니다.

Could not get unknown property 'source' for generate-proto-generateDebugProto of type org.gradle.api.internal.file.DefaultSourceDirectorySet.

실수가 있나하여 공식 문서, Codelab을 참고하여 시도하였지만 변화가 없었습니다.

여기저기 찾아보니 스택오버플로우에서 관련 내용을 찾을 수 있었습니다.


해결 방법은 간단합니다. 코드랩에 안내된 0.8.17 버전 대신 0.9.1을 사용하면 됩니다...

id("com.google.protobuf") version "0.9.1" // Codelab에 표기된 0.8.7 대신 0.9.1으로 변경

 

만약 저처럼 Codelab을 따라하신 분이라면 위의 오류를 해결 후 Proto 컴파일(rebuild) 시 artifact를 찾을 수 없다는 오류를 만나보실 수 있을겁니다.

Execution failed for task ':app:generateDebugProto'.
> Could not resolve all files for configuration ':app:protobufToolsLocator_protoc'.
   > Could not find com.google.protobuf:protoc:21.7.
     Searched in the following locations:
       - https://dl.google.com/dl/android/maven2/com/google/protobuf/protoc/21.7/protoc-21.7.pom
       - https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/21.7/protoc-21.7.pom
     Required by:
         project :app

 

Codelab에서는 21.7을 사용하고 있어 그대로 적용하였는데 또 안되더라구요... 마찬가지로 여기저기 찾아보니 다른 버전을 사용하라고 합니다. 버전을 바꿔줍시다...

protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:3.19.4" // Codelab에서는 21.7으로 표기됨...
    }

    generateProtoTasks {
        all().forEach { task ->
            task.builtins {
                id("java") {
                    option("lite")
                }
            }
        }
    }
}

이후 다시 sync후 rebuild 하면 정상적으로 클래스가 생성됩니다.

 

무언가 허무하군요...