원격 분석 서비스는 구성 가능한 게시자 레지스트리를 데이터 수집의 보조 수단으로 제공합니다. 애플리케이션과 서비스는 레지스트리에 원격 분석 게시자로 등록할 수 있으며, 이렇게 하면 원격 분석 서비스에서 사용할 수 있습니다. Google에서 지원하는 데이터 소스 유형에 대한 자세한 내용은 데이터 소스를 참고하세요.
라이브러리
원격 분석은 바인더를 통해 구성 가능한 게시자 레지스트리 게시자와 통신합니다. AIDL 인터페이스를 수동으로 구현하는 대신 원격 분석 SDK의 일부인 실험용 구성 가능한 게시자 레지스트리 라이브러리를 사용하는 것이 좋습니다. 이 라이브러리는 AIDL 인터페이스를 추상화하고 게시자를 정의하고, 원격 분석 데이터를 게시하고, protobuf 메시지를 와이어 형식으로 변환하는 작업을 관리하기 위한 깔끔하고 타입 안전한 API를 제공합니다.
라이브러리 사용에 관한 자세한 내용은 구성 가능한 게시자 레지스트리 라이브러리를 참고하세요.
게시자 수동 구현 및 등록
제공된 라이브러리를 사용하지 않으려면 필요한 바인더 인터페이스를 수동으로 구현하면 됩니다. 다음 섹션에서는 게시자를 구현하고 구성 가능한 게시자 레지스트리에 등록하는 데 필요한 단계를 간략하게 설명합니다.
등록
메시지 구조와 같은 메타데이터가 VSIDL에 정의되어 시스템에서 사용할 수 있는 SDV 서비스와 달리 구성 가능한 게시자 레지스트리를 사용하는 게시자는 메타데이터를 명시적으로 제공해야 합니다. 등록 중에 PublisherInfo 객체를 통해 이 메타데이터를 제공합니다.
IConfigurablePublisherRegistry
AIDL 인터페이스를 사용하여 이러한 게시자를 등록합니다. 따라서 Java, C++, Rust를 비롯해 AIDL이 지원하는 모든 언어로 게시자를 작성할 수 있습니다. 인터페이스는 다음 두 가지 메서드를 제공합니다.
registerPublisher메서드를 사용하여 원격 분석 서비스에 새 게시자를 등록합니다.void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)unregisterPublisher메서드를 사용하여 이전에 등록된 게시자를 원격 분석 서비스에서 등록 취소합니다.void unregisterPublisher(in @utf8InCpp String serviceName)
PublisherInfo 객체는 게시자의 기본 정보를 지정합니다.
| 필드 | 설명 |
|---|---|
serviceName |
게시자의 사용자 정의 이름입니다. 측정항목 구성에서 이를 참조하려면 이 이름을 사용하세요. |
fileDescriptorSet |
이 게시자가 게시하는 메시지의 메시지 설명자 (messageTypeName 필드로 명명됨)와 필요한 모든 종속 항목이 포함된 직렬화된 google.protobuf.FileDescriptorSet입니다 (자세한 내용은 자체 설명 메시지 참고). 원격 분석 서비스는 메시지 설명자를 사용하여 게시자가 전송한 데이터를 역직렬화합니다. 빌드 시간에 이를 생성하는 방법에 관한 자세한 내용은 Java protobuf 설명자 생성기 도구를 참고하세요. |
messageTypeName |
게시자가 게시하는 protobuf 메시지의 전체 이름입니다. 이 메시지의 메시지 설명자는 fileDescriptorSet에 선언되어야 합니다. |
supportsGet |
게시자가 구독하지 않고도 최신 메시지를 제공할 수 있는지 여부를 나타냅니다. |
구현
맞춤 게시자는 다음 메서드를 제공하여 IConfigurablePublisher 인터페이스를 구현해야 합니다.
측정항목 구성에서 이 게시자의 데이터 소스의
connection_type이SUBSCRIPTION로 설정된 경우 원격 분석 서비스는createSubscription를 호출하여 게시자를 구독합니다. 게시자에게 전달된ISubscriber인수는sendData(in byte[] data)메서드를 제공하며, 이 메서드를 사용하여 원격 분석 서비스에 protobuf 메시지를 스트리밍할 수 있습니다.IConfigurablePublisherSubscription createSubscription(in ISubscriber subscriber, in @nullable byte[] configuration)측정항목 구성에서 이 게시자의 데이터 소스의
connection_type이ON_DEMAND로 설정된 경우 원격 분석 서비스는getLatestMessage을 호출하여 게시자의 최신 메시지를 가져옵니다. 텔레메트리 서비스는 게시자의PublisherInfo가supportsGet = true를 나타내는 경우에만 이 메서드를 사용합니다.@nullable byte[] getLatestMessage(in @nullable byte[] configuration)
원격 분석 서비스는 측정항목 구성에서 데이터 소스의 configuration 옵션에 configuration 인수를 설정합니다.