關於MAC M1處理器執行Android protoc報錯的解決方案

xiangzhihong發表於2022-07-01

Protobuf是Google開發的一種新的結構化資料儲存格式,一般用於結構化資料的序列化,即我們常說的資料序列化。這種序列化的協議非常輕便高效,而且是跨平臺的,目前已支援多種主流語言,並且比傳統的XML, JSON等方式更具優勢。詳情可以參考:Google protocol buffer。不過,最近在使用Protobuf時候報瞭如下的一個錯誤。

Execution failed for task ':columbus:generateDebugProto'.
> Could not resolve all files for configuration ':columbus:protobufToolsLocator_protoc'.
   > Could not find protoc-3.0.0-osx-aarch_64.exe (com.google.protobuf:protoc:3.0.0).
     Searched in the following locations:
         https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.0.0/protoc-3.0.0-osx-aarch_64.exe

Possible solution:
 - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html

解決的方法是更換protoc的地址,如果我們直接開啟https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.0.0/protoc-3.0.0-osx-aarch_64.exe,會發現網頁時打不開,所以我就去掉後面的版本號,開啟下面的連結:

https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/

得到protoc的版本如下:
在這裡插入圖片描述
所以,我們只需要找到下面的程式碼,在com.google.protobuf:protoc:3.0.0中新增osx-x86_64即可。

protoc {
        artifact = 'com.google.protobuf:protoc:3.0.0'
    }
    plugins {
        javalite {
            artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
        }
    }

//變更後
protoc {
        artifact = 'com.google.protobuf:protoc:3.0.0:osx-x86_64'
    }
    plugins {
        javalite {
            artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0:osx-x86_64'
        }
    }

相關文章