Protobuf 官方僅內建 Java、Python、C++ 代碼生成器。ActionScript 3 (AS3) 支持需第三方插件 protobuf-actionscript3,包含 AS3 序列化庫源碼與 C++ 代碼生成器插件。
compiler/as3 目錄(生成器 C++ 代碼)+ as3-lib(運行時庫)protobuf-actionscript3/compiler/as3 整個目錄拷貝到 protobuf/src/google/protobuf/compiler/ 下,與 cpp、java、python 同級。compiler/ as3/ cpp/ java/ python/ code_generator.cc command_line_interface.cc ...
.sln),在 libprotoc 項目中「添加現有項目」,選中 as3 目錄下所有 .cc/.h 文件。protoc 項目 main.cc,在 main() 中添加:google::protobuf::compiler::as3::As3Generator as3_generator;
cli.RegisterGenerator("--as3_out", &as3_generator,
"Generate ActionScript source file.");
as3/as3_file.h,註釋掉原有的前置聲明命名空間塊,改為直接包含公共頭文件:// 註釋掉:
// namespace protobuf { class FileDescriptor; namespace io { class Printer; } ... }
// 添加:
#include
#include
#include
protoc 項目,輸出 protoc.exe。.proto 文件,執行:protoc.exe --as3_out=./output ./your.proto
.as 文件、protobuf-actionscript3/as3-lib 源碼、as3crypto.swc 加入專案構建路徑,即可使用 MyMessage.parse(bytes)、msg.toByteArray() 等 API。long,生成器會映射為 int64 類(高低 32 位組合),注意精度。通過將第三方 AS3 生成器插件融入 protobuf 源碼樹、註冊到命令行界面、修復頭文件依賴,即可編譯出支持 --as3_out 的 protoc.exe。配合運行時庫與加密庫,實現 Protobuf 在 Flash/Flex/AIR 客戶端的高效二進制序列化,適合遊戲、RIA 等場景。