我是靠谱客的博主 高贵母鸡,最近开发中收集的这篇文章主要介绍java protobuf mac 安装_Mac安装Protobuf编译Java,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文整理了再在Mac上安装Protobuf 和编译Java的详细过程

在Mac上安装protobuf

创建一个java项目,编写.proto文件

用protobuf编译生成java文件,测试

用wire编译生成java文件,测试

1.protobuf下载地址:https://github.com/google/protobuf/tags?after=v3.0.0-alpha-1

Github:https://github.com/google/protobuf

我先下载了2.6.1版本的,安装了之后protoc命令报一个错

dyld: Library not loaded: /usr/local/lib/libprotobuf.9.dylib

google了一下然而并没有解决,然后就下载2.5.0版本的继续试,结果安装正常。

安装过程:

解压压缩包

cd到brotofbuf-2.5.0 目录

指定安装目录    ./configure --prefix=/User/Dev/Tools/protobuf     /User/Dev/Tools/protobuf安装目录

安装                   make

make install

环境变量           sudo vi .bash_profile

export PROTOBUF=/Users/mingwei/Dev/protobuf

export ANDROID_HOME=/Users/mingwei/Dev/android-sdk-mac/platform-tools

export PATH=${PATH}:$ANDROID_HOME:$PROTOBUF/bin

环境变量生效    source .bash_profile

测试                  protoc --version

参考:http://my.oschina.net/KingPan/blog/283881?fromerr=8vajR5S9

2.可以自己写,也可以复制example中的文件过来

protobuf.proto

option java_package = "com.example.demo";

option java_outer_classname = "PersonPb";

message Person {

required string name = 1;

required int32 id = 2;

optional string email = 3;

enum PhoneType {

MOBILE = 0;

HOME = 1;

WORKE = 2;

}

message PhoneNumber {

required string number = 1;

optional PhoneType type = 2 [default = HOME];

}

repeated PhoneNumber phone = 4;

message CountryInfo {

required string name = 1;

required string code = 2;

optional int32 number = 3;

}

}

message AddressBook {

repeated Person person = 1;

}

3.编译生成Java    protoc -I=src/main/resource/proto --java_out=src/main/java src/main/resource/proto/protobuf.proto

PersonPb.java

private PersonPb() {}

public static void registerAllExtensions(

com.google.protobuf.ExtensionRegistry registry) {

}

public interface PersonOrBuilder

extends com.google.protobuf.MessageOrBuilder {

// required string name = 1;

/**

* required string name = 1;

*/

boolean hasName();

...

...内容很多,(稍后附件中有)

...

com.google.protobuf.Descriptors.FileDescriptor

.internalBuildGeneratedFileFrom(descriptorData,

new com.google.protobuf.Descriptors.FileDescriptor[] {

}, assigner);

}

// @@protoc_insertion_point(outer_class_scope)

}

使用:

public class MainTest {

public static void main(String[] args) {

System.out.println("Test_Systemout");

PersonPb.AddressBook.Builder build = PersonPb.AddressBook.newBuilder();

PersonPb.Person person1 = PersonPb.Person.newBuilder().setId(1).setName("xxxxxxi").setEmail("123@qq.com").

addPhone(PersonPb.Person.PhoneNumber.newBuilder().setNumber("15211112222").setType(PersonPb.Person.

PhoneType.HOME).build()).build();

build.addPerson(person1);

PersonPb.Person person2 = PersonPb.Person.newBuilder().setId(2).setName("sasasasas").setEmail("qqqqq@qq.com").

addPhone(PersonPb.Person.PhoneNumber.newBuilder().setNumber("15211112222").setType(PersonPb.Person.

PhoneType.HOME).build()).build();

build.addPerson(person2);

for (int i = 0; i < build.getPersonList().size(); i++) {

System.out.println("name=" + build.getPersonList().get(i).getName());

}

}

}

生成的PersonPb.java 代码加注释一共3600多行,如果代码一多对于移动端显然是一个负担。so...应用而生的Wire就来了,Wire是一个专门针对Android端的轻量级的protobuf。

参考:http://www.bubuko.com/infodetail-781200.html

Github:https://github.com/square/wire

4.使用wire

在gradle中添加wire所需的jar包

compile 'com.squareup.wire:wire-runtime:2.1.0'

libs中用到的压缩时用到的wire包

wire-compiler-1.8.0-jar-with-dependencies.jar   (稍后附件中有)

wire的文档中写道用命令:

java -jar wire-compiler-1.7.0-jar-with-dependencies.jar --proto_path=. --java_out=. addressbook.proto

可以生成java文件,但是我敲的时候不报错,也不生成任何文件,没找到原因。

然后采用了这种方式

task generateWireFile(type: JavaExec ) {

classpath = files("libs/wire-compiler-1.8.0-jar-with-dependencies.jar")

args = ["--proto_path=src/main/resource/proto", "--java_out=src/main/java",

"protobuf.proto"]

main = "com.squareup.wire.WireCompiler"

}

在Gradle中添加:

0818b9ca8b590ca3270a3433284dd417.png

然后双击图中选中的那一项等待编译完成就可以了

生成   Person.java   AddressBook.java

demo:http://download.csdn.net/detail/u013045971/9419552

最后

以上就是高贵母鸡为你收集整理的java protobuf mac 安装_Mac安装Protobuf编译Java的全部内容,希望文章能够帮你解决java protobuf mac 安装_Mac安装Protobuf编译Java所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部