一、添加本地方式
1、libs添加jar包 (3.3版本)
2、添加依赖
api files('libs/protobuf-java-util-3.3.0.jar')
api files('libs/protobuf-java-3.3.0.jar')
3、生成的protos放入对应的位置
①使用过程
**×××.Builder demo =×××.newBuilder();
demo.setX("");
…
××× demo =×××.build();
//生成流
byte[] byteArray1 =×××.toByteArray();
VeriFaceProtos.CVeriFace.Builder cVeriFace =VeriFaceProtos.CVeriFace.newBuilder();
cVeriFace.setDeviceType(2);// 1:master,2:terminal,3:server
cVeriFace.setMasterId("adsad112");//主机名称
//cVeriFace.setMasterTag("");//主机所在的大巴车车牌号,后台返回
cVeriFace.setTerminalId("0xsad1234");//终端
cVeriFace.setImageName("1123455");//图片名字
cVeriFace.setUploadUri("asdassfgg");//图片URI
Log.i("fenxi", "66666");
VeriFaceProtos.CVeriFace cVeriFaces = cVeriFace.build();
byte[] byteArray1 =cVeriFaces.toByteArray();
②解析过程
//
模拟接收Byte[],反序列化成Person类
byte[] byteArray1 =cVeriFaces.toByteArray();
try {
VeriFaceProtos.CVeriFace cVeriFace1 = VeriFaceProtos.CVeriFace.parseFrom(byteArray1);
System.out.println("after :" +cVeriFace1.getImageName());
System.out.println("after :" +cVeriFace1.toString());
}catch (Exception e){
e.printStackTrace();
}
二、添加依赖方式
1、//添加protobuf
implementation ‘com.google.protobuf:protobuf-lite:3.0.1’
三、本地生成protobuf方式
1、
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.7'
2、
apply plugin: 'com.android.application'
apply plugin: 'com.google.protobuf'//添加protobuf
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.administrator.myapplication"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
repositories {//添加protobuf
/*flatDir {
dirs 'libs'
}*/
sourceSets {
main {
proto {
//main目录新建proto目录
srcDir 'src/main/proto'
include '**/*.proto'
}
java {
srcDir 'src/main/java'
}
}
}
}
//编写编译任务,调用plugin编译生成java文件 添加protobuf
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.6.1'
}
plugins {
javalite {
artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
}
}
generateProtoTasks {
all().each { task ->
task.builtins {
remove java
}
task.plugins {
javalite {}
}
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
//添加butterknife
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
//添加butterknife
implementation 'com.jakewharton:butterknife:9.0.0-rc2'
annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-rc2'
//添加protobuf
implementation 'com.google.protobuf:protobuf-lite:3.0.1'
}
}