【问题标题】:Android Google TV Pairing Protocol not workingAndroid Google TV 配对协议不起作用
【发布时间】:2019-06-13 19:31:53
【问题描述】:

当我尝试使用此代码执行 android 程序时,我使用 google 协议缓冲区获取此错误列表。问题可能出在哪里?

我在 app.gradle 文件中使用 protobuf gradle 插件版本 0.8.8 和 com.google.protobuf:protoc 版本 3.0.0 和 com.google.protobuf:protoc-gen-javalite 依赖项

polo.proto 文件

// Copyright 2009 Google Inc. All Rights Reserved.

package polo.wire.protobuf;

option java_outer_classname = "PoloProto";
option java_package = "com.google.polo.wire.protobuf";
option optimize_for = LITE_RUNTIME;

// OuterMessage - base outer message type used in the protocol.

message OuterMessage {

// MessageType indicates the type of the enclosed message (serialized in the
// `payload` field)
enum MessageType {
    // Initialization phase
    MESSAGE_TYPE_PAIRING_REQUEST = 10;
    MESSAGE_TYPE_PAIRING_REQUEST_ACK = 11;

    // Configuration phase
    MESSAGE_TYPE_OPTIONS = 20;
    MESSAGE_TYPE_CONFIGURATION = 30;
    MESSAGE_TYPE_CONFIGURATION_ACK = 31;

    // Pairing phase
    MESSAGE_TYPE_SECRET = 40;
    MESSAGE_TYPE_SECRET_ACK = 41;
}

// Protocol status states.
enum Status {
    STATUS_OK = 200;
    STATUS_ERROR = 400;
    STATUS_BAD_CONFIGURATION = 401;
    STATUS_BAD_SECRET = 402;
}

required uint32 protocol_version = 1 [default = 1];

// Protocol status. Any status other than STATUS_OK implies a fault.
required Status status = 2;

// Encapsulated message.  These fields are required if status is STATUS_OK.
optional MessageType type = 3;
optional bytes payload = 4;

}


//
// Initialization messages
//

message PairingRequest {
// String name of the service to pair with.  The name used should be an
// established convention of the application protocol.
required string service_name = 1;

// Descriptive name of the client.
optional string client_name = 2;
}

message PairingRequestAck {
// Descriptive name of the server.
optional string server_name = 1;
}


//
// Configuration messages
//

message Options {
message Encoding {
    enum EncodingType {
    ENCODING_TYPE_UNKNOWN = 0;
    ENCODING_TYPE_ALPHANUMERIC = 1;
    ENCODING_TYPE_NUMERIC = 2;
    ENCODING_TYPE_HEXADECIMAL = 3;
    ENCODING_TYPE_QRCODE = 4;
    }

    required EncodingType type = 1;
    required uint32 symbol_length = 2;
}

enum RoleType {
    ROLE_TYPE_UNKNOWN = 0;
    ROLE_TYPE_INPUT = 1;
    ROLE_TYPE_OUTPUT = 2;
}

// List of encodings this endpoint accepts when serving as an input device.
repeated Encoding input_encodings = 1;

// List of encodings this endpoint can generate as an output device.
repeated Encoding output_encodings = 2;

// Preferred role, if any.
optional RoleType preferred_role = 3;
}

message Configuration {
// The encoding to be used in this session.
required Options.Encoding encoding = 1;

// The role of the client (ie, the one initiating pairing). This implies the
// peer (server) acts as the complementary role.
required Options.RoleType client_role = 2;
}

message ConfigurationAck {
}


//
// Pairing messages
//

message Secret {
required bytes secret = 1;
}

message SecretAck {
required bytes secret = 1;
}

错误列表

    error: type GeneratedMessageLite does not take parameters   
    error: type GeneratedMessageLite does not take parameters   
    error: type GeneratedMessageLite does not take parameters   
    error: type GeneratedMessageLite does not take parameters   
    error: type GeneratedMessageLite does not take parameters   
    error: type GeneratedMessageLite does not take parameters   
    error: type GeneratedMessageLite does not take parameters   
    error: cannot find symbol class MethodToInvoke  
    error: cannot find symbol class MethodToInvoke  
    error: cannot find symbol class ProtobufList    
    error: cannot find symbol class MethodToInvoke  
    error: cannot find symbol class MethodToInvoke  
    error: cannot find symbol class MethodToInvoke  
    error: cannot find symbol variable unknownFields    
    error: cannot find symbol variable unknownFields    
    error: cannot find symbol method parseFrom(OuterMessage,ByteString) 
    error: cannot find symbol method parseFrom(OuterMessage,byte[]) 
    error: cannot find symbol method parseFrom(OuterMessage,InputStream)    
    error: incompatible types: OuterMessage cannot be converted to InputStream  
    error: cannot find symbol method parseFrom(OuterMessage,CodedInputStream)   
    error: cannot find symbol method toBuilder()    
    error: type argument OuterMessage is not within bounds of type-variable MessageType
    where MessageType is a type-variable:
    MessageType extends GeneratedMessageLite declared in class Builder  
    error: constructor Builder in class Builder<MessageType,BuilderType> cannot be applied to given types;
    required: no arguments
    found: OuterMessage
    reason: actual and formal argument lists differ in length
    where MessageType,BuilderType are type-variables:
    MessageType extends GeneratedMessageLite declared in class Builder
    BuilderType extends Builder declared in class Builder   
    error: cannot find symbol variable instance 
    error: cannot find symbol variable instance 
    error: cannot find symbol variable instance 
    error: cannot find symbol variable instance 
    error: cannot find symbol variable instance 
    error: cannot find symbol variable instance 
    error: cannot find symbol variable instance

【问题讨论】:

    标签: android proto


    【解决方案1】:

    问题是我实现了旧版本的 ProtoBuf,而且我使用了 .jar lib 文件。

    我删除 .jar 文件并升级 protobuf 版本,它可以工作。

    【讨论】:

    • 救了我的命!哈哈
    • 你好@SitiOlamide 我需要你的帮助请尽快回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多