PROTOCOLS
ComponentDataRegister
定義於 fuchsia.feedback/data_register.fidl
註冊要在意見回饋報告中附加的實用資料 (當機、使用者意見回饋或錯誤報告)。
元件可運用這項資訊擴增所有意見回饋報告所附加的資料。預設 「意見回饋」服務會附加向平台公開的資料。這種通訊協定對資料 某些產品中的某些元件加以識別,但不會向平台公開。
epitaph ZX_ERR_INVALID_ARGS 表示用戶端正在傳送無效要求。詳情請見 指出這些請求可能無效的原因。
epitaph ZX_ERR_NO_RESOURCES 表示伺服器已無法再儲存額外的資源 元件資料,而且不會配置新的連線。
Upsert
更新或插入等要加入意見回饋報告的額外元件資料。
命名空間和每個註解鍵都可用來決定是否要更新或插入 註解。如果相同命名空間中的特定鍵已有註解, 更新值,否則請在該命名空間中,插入使用該索引鍵的註解。
例如,假設這些是伺服器已保存的資料 (來自之前的呼叫) 套用至 Upsert()):
{
  "bar": { # namespace
    "channel": "stable",
  },
  "foo": { # namespace
    "version": "0.2",
  }
}
接著:
Upsert({
  "namespace": "bar",
  "annotations": [
    "version": "1.2.3.45",
    "channel": "beta",
  ]
})
會造成伺服器現在保留:
{
  "bar": { # namespace
    "channel": "beta", # updated
    "version": "1.2.3.45" # inserted
  },
  "foo": { # namespace
    "version": "0.2", # untouched
  }
}
請注意,伺服器最多只能保留 MAX_NUM_ANNOTATIONS_PER_NAMESPACE 個不同項目 每個命名空間的註解鍵,來擷取最新的值。
要求
| 名稱 | 類型 | 
|---|---|
| data | ComponentData | 
回應
<空白>
CrashReporter
在 fuchsia.feedback/crash_reporter.fidl 中定義
提供當機報告。
FileReport
回報 report 當機,並提供作業的最終結果。
這表示如果在本機當機報告中產生當機報告, 或將當機報告上傳到遠端當機伺服器 取決於 FIDL 伺服器的設定
警告:這可能需要幾分鐘的時間。撥號中 我們不建議以同步方式使用這個函式。
要求
| 名稱 | 類型 | 
|---|---|
| report | CrashReport | 
回應
| 名稱 | 類型 | 
|---|---|
| payload | CrashReporter_FileReport_Result | 
CrashReportingProductRegister
定義於 fuchsia.feedback/crash_register.fidl
允許元件選擇其他當機回報產品,以回報該產品的當機問題 元件
根據預設,平台偵測到的所有當機事件都會歸在單一產品中 伺服器這個 API 可讓元件選擇自己的產品,同時享有 處理及當機回報
Upsert
更新或插入,例如特定元件網址的當機回報產品。
對相同元件網址的後續呼叫 Upsert() 會覆寫
CrashReportingProduct。
如果元件也會自行回報當機報告,則使用 UpsertWithAck(),以避免競爭 條件和歸因錯誤
要求
| 名稱 | 類型 | 
|---|---|
| component_url | string[2083] | 
| product | CrashReportingProduct | 
UpsertWithAck
新增/插入 (見上方說明) 並在作業完成時通知用戶端。
這可讓用戶端防止在提交當機報告和呼叫 Upsert 之間競爭。 否則,如果是在更新/插入作業完成前提交當機報告,則當機報告將 歸因於錯誤的產品,則可能產生不正確的當機資料。
要求
| 名稱 | 類型 | 
|---|---|
| component_url | string[2083] | 
| product | CrashReportingProduct | 
回應
<空白>
DataProvider
定義於 fuchsia.feedback/data_provider.fidl
在意見回饋報告中加入實用的資料,例如系統提交的當機報告, 使用者提交的使用者意見回饋報告或開發人員提交的錯誤報告。
GetAnnotations
傳回一組關於裝置狀態的註解。
如果收集圖像時發生問題,「annotations」可能就不會顯示任何內容。
這些註解與透過 GetSnapshot() 提供的註解相同,但有些客戶只需要 有些則需要註解和快照 相較於收集註解,快照可能需要更多的時間,例如記錄檔 只是快照的一部分,並非註解的一部分,因此可能需要一些時間。
要求
| 名稱 | 類型 | 
|---|---|
| params | GetAnnotationsParameters | 
回應
| 名稱 | 類型 | 
|---|---|
| annotations | Annotations | 
GetScreenshot
傳回以所提供 encoding 編碼的目前檢視畫面的圖片。
如果不支援編碼,screenshot 可能是空值,但裝置沒有
螢幕,或是記憶體不足,無法分配螢幕截圖。
螢幕截圖會與快照分開提供,因為呼叫端可能會想封鎖 在背景收集快照時變更檢視區塊。 還有許多用戶端對螢幕截圖不感興趣。
要求
| 名稱 | 類型 | 
|---|---|
| encoding | ImageEncoding | 
回應
| 名稱 | 類型 | 
|---|---|
| screenshot | Screenshot? | 
GetSnapshot
傳回裝置狀態的快照。
如果產生快照時發生問題,則「snapshot」可能會是空白。
要求
| 名稱 | 類型 | 
|---|---|
| params | GetSnapshotParameters | 
回應
| 名稱 | 類型 | 
|---|---|
| snapshot | Snapshot | 
DeviceIdProvider
定義於 fuchsia.feedback/device_id_provider.fidl
提供裝置的意見回饋 ID。
意見回饋 ID 是一組永久性的 UUID,用於將意見回饋報告分組。ID 不可用於回報任何目的,但意見回饋除外。 例如,不可用於遙測。
GetId
傳回裝置的意見回饋 ID。
此方法遵循等待取得模式,且在 ID 開始之前,不會傳回值 上次通話已變更。
要求
<空白>
回應
| 名稱 | 類型 | 
|---|---|
| feedback_id | string[64] | 
LastRebootInfoProvider
在 fuchsia.feedback/last_reboot_info.fidl 中定義的
瞭解裝置上次關閉的原因。使用重新啟動字詞,而非關機 因為許多開發人員針對重新啟動和大多數的連線問題 元件,想瞭解系統重新啟動的原因。
取得
要求
<空白>
回應
| 名稱 | 類型 | 
|---|---|
| last_reboot | LastReboot | 
結構
註解
在 fuchsia.feedback/annotation.fidl 中定義
註解及其純 ASCII 字串金鑰。 註解是簡短的字串,例如主面板名稱或建構版本。
| 欄位 | 類型 | 說明 | 預設 | 
|---|---|---|---|
| key | string[128] | 無預設 | |
| value | string[1024] | 無預設 | 
連結資源
定義於 fuchsia.feedback/attachment.fidl
附件及其純 ASCII 字串金鑰。 附件是較大的物件,例如記錄檔。可以是二進位或文字資料。
| 欄位 | 類型 | 說明 | 預設 | 
|---|---|---|---|
| key | string[128] | 無預設 | |
| value | fuchsia.mem/Buffer | 無預設 | 
CrashReporter_FileReport_Response
在 fuchsia.feedback/crash_reporter.fidl 中定義
| 欄位 | 類型 | 說明 | 預設 | 
|---|---|---|---|
| results | FileReportResults | 無預設 | 
螢幕截圖資源
定義於 fuchsia.feedback/data_provider.fidl
畫面的編碼圖片。
| 欄位 | 類型 | 說明 | 預設 | 
|---|---|---|---|
| image | fuchsia.mem/Buffer | 無預設 | |
| dimensions_in_px | fuchsia.math/Size | 無預設 | 
ENUMS
FilingError 彈性
類型:uint32
在 fuchsia.feedback/crash_reporter.fidl 中定義
| 名稱 | 值 | 說明 | 
|---|---|---|
| 不明 | 0 | |
| INVALID_ARGS_ERROR | 1 | |
| SERVER_ERROR | 2 | |
| PERSISTENCE_ERROR | 3 | |
| QUOTA_REACHED_ERROR | 4 | 
致勝秘訣彈性
類型:uint32
在 fuchsia.feedback/crash_reporter.fidl 中定義
「個人化記憶」是指非永久位置,例如建立 檔案系統
| 名稱 | 值 | 說明 | 
|---|---|---|
| 不明 | 0 | |
| REPORT_UPLOADED | 1 | |
| REPORT_ON_DISK | 2 | |
| REPORT_IN_MEMORY | 3 | |
| REPORT_NOT_FILED_USER_OPTED_OUT | 4 | 
ImageEncoding 嚴格
類型:uint32
定義於 fuchsia.feedback/data_provider.fidl
圖片使用的編碼。
目前系統僅支援 PNG,但之後的螢幕截圖會是 其他編碼中。
| 名稱 | 值 | 說明 | 
|---|---|---|
| PNG | 0 | 
RebootReason 彈性
類型:uint16
在 fuchsia.feedback/last_reboot_info.fidl 中定義的
裝置上次重新啟動的原因。
| 名稱 | 值 | 說明 | 
|---|---|---|
| 不明 | 0 | 如果伺服器會傳送新的列舉值給用戶端,用戶端就會取得這個值 無法以編譯的方式進行編譯 新增:9 | 
| 觸摸 | 2 | 裝置從冷狀態啟動。 這很可能是長時間未使用電源或裝置後所造成的結果 第一次使用 Fuchsia 系列手機 | 
| BRIEF_POWER_LOSS | 3 | 裝置曾短暫斷電,因此已重新啟動。 在某些硬體上,這可能是使用者中斷連線後重新連線 供需快速接續運作 | 
| 胸罩 | 4 | 裝置因電壓低於允許的程度 (未達到 0) 而重新啟動。 | 
| KERNEL_PANIC | 5 | |
| SYSTEM_OUT_OF_MEMORY | 6 | |
| HARDWARE_WATCHDOG_TIMEOUT | 7 | |
| SOFTWARE_WATCHDOG_TIMEOUT | 8 | |
| ROOT_JOB_TERMINATION | 19 | 使用者空間根工作已終止,因此裝置重新啟動,最有可能的原因是 因此關鍵程序停止運作 | 
| USER_REQUEST | 9 | 裝置使用者重新啟動,因此裝置重新啟動。使用者可以是 代表真人或與裝置互動的程式,如 SL4F 或 RCS | 
| SYSTEM_UPDATE | 10 | 裝置因 OTA 問題而重新啟動。 | 
| RETRY_SYSTEM_UPDATE | 17 | 無法執行 OTA,因此我們想重試,因此裝置已重新啟動。 | 
| HIGH_TEMPERATURE | 11 | 系統判定裝置過熱,因此已重新啟動。 | 
| SESSION_FAILURE | 12 | 由於工作階段發生問題或工作階段管理員,因此裝置已重新啟動 無法從錯誤復原。 | 
| SYSMGR_FAILURE | 15 | 系統管理員 (sysmgr) 無法從 錯誤。 | 
| FACTORY_DATA_RESET | 14 | 裝置在恢復原廠設定後重新啟動。 請參閱 fuchsia.recovery.FactoryReset。 | 
| CRITICAL_COMPONENT_FAILURE | 16 | 由 sysmgr 管理的重要元件執行失敗,因此裝置已重新啟動。 | 
| ZBI_SWAP | 18 | 裝置已重新啟動,以套用 Zircon 開機映像檔替換。 | 
資料表
註解
定義於 fuchsia.feedback/data_provider.fidl
裝置狀態的註解。
用戶端通常會將資料直接上傳至伺服器。資料則是 用戶端可直接轉送至伺服器的任意鍵/值組合。
| 序數 | 欄位 | 類型 | 說明 | 
|---|---|---|---|
| 1 | annotations | vector<Annotation>[64] | 鍵/值字串組合的向量。金鑰保證不會重複。 | 
ComponentData
定義於 fuchsia.feedback/data_register.fidl
會附加至意見回饋報告的元件已知元件,但不會向平台公開的資料。
| 序數 | 欄位 | 類型 | 說明 | 
|---|---|---|---|
| 1 | namespace | string[32] | 與資料相關聯的頂層命名空間: 
 | 
| 2 | annotations | vector<Annotation>[16] | 鍵/值字串組合的向量,例如 索引鍵: 
 | 
CrashReport 資源
在 fuchsia.feedback/crash_reporter.fidl 中定義
代表當機報告。
| 序數 | 欄位 | 類型 | 說明 | 
|---|---|---|---|
| 1 | program_name | string[1024] | 當機的程式名稱,例如程序或元件名稱。 | 
| 2 | specific_report | SpecificCrashReport | 根據當機類型產生的特定報告。 如果需要與當機程式相關的額外資訊,則應設定這個欄位 像是迷你傾印 | 
| 3 | annotations | vector<Annotation>[32] | 鍵/值字串組合的向量,代表應附加至 當機報告 鍵不得重複,因為向量中特定鍵最新的值將 考慮成形 | 
| 4 | attachments | vector<Attachment>[16] | 鍵/值字串對 VMO 的組合,代表應遵循的任意資料 圖示。 鍵不得重複,因為向量中特定鍵最新的值將 考慮成形 | 
| 5 | event_id | string[128] | 當機伺服器可使用的文字 ID,將相關的當機報告分組, 產生的內容 與當機簽章不同,共用相同 ID 的當機報告會對應 當機,但也可能視為同一事件,例如在低階事件中發生當機 導致高階 UI 小工具當機。 | 
| 6 | program_uptime | zx/Duration | 程式在當機前執行的時間長度。 | 
| 7 | crash_signature | string[128] | 當機伺服器可用來追蹤一段時間內相同當機情形的文字簽章,例如 「核心-恐慌」或「oom」這個簽名的優先順序高於任何自動簽名 與事件 ID 不同,共用相同簽名的當機報告會對應到同一個當機事件。 但會在多個事件發生時,例如在伺服器上發生空值指標例外狀況 先前提過同一個要求 必須使用小寫 [a-z][a-z-]*,亦即只能使用小寫英文字母和連字號,否則會造成 ZX_ERR_INVALID_ARGS 集錦。 | 
| 8 | is_fatal | bool | 指出當機報告是否為 執行中程序、元件、 或是系統本身 以下列舉幾個會導致嚴重當機報告的事件: 
 以下列舉幾個會導致非嚴重當機報告的事件: 
 這個欄位主要用於按照嚴重錯誤、非嚴重錯誤及不明狀況分類當機 分別設為 True、設為 False 或未設定 | 
CrashReportingProduct
定義於 fuchsia.feedback/crash_register.fidl
要回報給當機伺服器的產品資訊。
| 序數 | 欄位 | 類型 | 說明 | 
|---|---|---|---|
| 1 | name | string | 當機伺服器上的產品名稱。 
 | 
| 2 | version | string | 元件的選用產品版本。 
 如未指定版本,系統就不會向當機伺服器回報任何版本。 | 
| 3 | channel | string | 元件產品發布頻道,例如「canary」、「beta」、「stable」。 如未指定管道,系統就不會將任何裝置回報給當機伺服器。 | 
FileReportResults
在 fuchsia.feedback/crash_reporter.fidl 中定義
| 序數 | 欄位 | 類型 | 說明 | 
|---|---|---|---|
| 1 | result | FilingSuccess | 成功類型。 | 
| 2 | report_id | string[64] | |result| 代表非空白的值Filing 成功:REPORT_UPLOADED。 | 
GetAnnotationsParameters
定義於 fuchsia.feedback/data_provider.fidl
DataProvider::GetAnnotations() 方法的參數。
| 序數 | 欄位 | 類型 | 說明 | 
|---|---|---|---|
| 1 | collection_timeout_per_annotation | zx/Duration | 系統會從平台中的多個位置同時收集註解,且每個位置都有 逾時。 
 | 
GetSnapshotParameters 資源
定義於 fuchsia.feedback/data_provider.fidl
DataProvider::GetSnapshot() 方法的參數。
| 序數 | 欄位 | 類型 | 說明 | 
|---|---|---|---|
| 1 | collection_timeout_per_data | zx/Duration | 快照匯總了來自平台的各種資料 (裝置運作時間、記錄、檢查資料、 等) 平行收集的資料。系統內部會在 逾時。 
 請注意,這無法控制快照產生作業總共需要多少時間
也就是建立比  | 
| 2 | response_channel | handle<channel> | 如果設定,系統會以 |fuchsia.io.File| 格式傳送快照封存檔改為透過這個管道 放入 |封存|欄位 |快照|中的欄位回應。這個方法通常很實用 用戶端位於主機上,但不支援 VMO。 | 
LastReboot
在 fuchsia.feedback/last_reboot_info.fidl 中定義的
裝置上次重新啟動原因的相關資訊。
| 序數 | 欄位 | 類型 | 說明 | 
|---|---|---|---|
| 1 | graceful | bool | 上次重新啟動是否安全良好,例如裝置沒有因發生錯誤而重新啟動 再以受控的方式重新啟動 這個欄位可讓用戶端瞭解上次重新啟動是否安全,而不必 剖析非必要的 |原因|] 欄位。這在以下時機相當實用,|原因|:例如,由於 都不會知道重新啟動是「優雅」還是 會不斷演變以支援新的 RebootReason 值,而用戶端尚未更新。 如果 |reason|,這個欄位一律為值而不是每個 Pod 的名稱但是,|理由|可能不是 一律要有值。 | 
| 2 | reason | RebootReason | 裝置上次重新啟動的原因。 | 
| 3 | uptime | zx/Duration | 裝置重新啟動前的運作時間。 | 
NativeCrashReport 資源
在 fuchsia.feedback/crash_reporter.fidl 中定義
代表原生例外狀況的當機報告,因為用戶端已建構 Minidump。
| 序數 | 欄位 | 類型 | 說明 | 
|---|---|---|---|
| 1 | minidump | fuchsia.mem/Buffer | 以 Minidump 格式為基礎的核心傾印。 | 
| 2 | process_name | string[64] | 異常終止程序的名稱。 | 
| 3 | process_koid | zx/Koid | 當機程序的核心物件 ID。 | 
| 4 | thread_name | string[64] | 當機的執行緒名稱。 | 
| 5 | thread_koid | zx/Koid | 當機執行緒的核心物件 ID。 | 
RuntimeCrashReport 資源
在 fuchsia.feedback/crash_reporter.fidl 中定義
代表執行階段例外狀況的當機報告 (適用於多數語言)。
| 序數 | 欄位 | 類型 | 說明 | 
|---|---|---|---|
| 1 | exception_type | string[128] | 例外狀況類型,例如「FileSystemException」。 | 
| 2 | exception_message | string[4096] | 例外狀況訊息,例如「無法開啟檔案」。 | 
| 3 | exception_stack_trace | fuchsia.mem/Buffer | 例外狀況堆疊追蹤的文字表示法。 | 
快照資源
定義於 fuchsia.feedback/data_provider.fidl
裝置狀態快照。
用戶端通常會將資料直接上傳至伺服器。資料則是 用戶端可直接轉送至伺服器的任意鍵/值組合。
| 序數 | 欄位 | 類型 | 說明 | 
|---|---|---|---|
| 1 | archive | Attachment | <檔案名稱,ZIP 封存檔>配對。 ZIP 封存檔包含數個檔案,檔案則對應至收集來源的各種資料 平台。所有註解通常都會有一個檔案 (裝置運作時間、版本) 版本) 以及每個附件一個檔案 (記錄、檢查資料等)。 如果 |response_channel| 未設定,就無法設定並未設定在要求中提供的資訊 | 
| 2 | annotations | vector<Annotation>[64] | 鍵/值字串組合的向量。金鑰保證不會重複。 雖然註解本身就包含在 ZIP 封存檔中,但有些客戶也會希望 分開索引或擴增,因此我們另外提供它們。 | 
聯合國
CrashReporter_FileReport_Result 的嚴格
在 fuchsia.feedback/crash_reporter.fidl 中定義
| 序數 | Variant | 類型 | 說明 | 
|---|---|---|---|
| 1 | response | CrashReporter_FileReport_Response | |
| 2 | err | FilingError | 
SpecificCrashReport 彈性 資源
在 fuchsia.feedback/crash_reporter.fidl 中定義
代表特定當機報告。
伺服器需要以特殊方式處理特定註解及
針對特定當機類型的附件,例如 RuntimeCrashReport 代表 JavaScript。
| 序數 | Variant | 類型 | 說明 | 
|---|---|---|---|
| 2 | native | NativeCrashReport | 適用於原生例外狀況。 | 
| 3 | dart | RuntimeCrashReport | 適用於 Dart 例外狀況。 | 
觀測站
| 名稱 | 值 | 類型 | 說明 | 
|---|---|---|---|
| MAX_ANNOTATION_KEY_LENGTH | 128 | uint64 | 註解鍵的長度上限。 新增日期:23 | 
| MAX_ANNOTATION_VALUE_LENGTH | 1024 | uint64 | 註解值的長度上限。 新增日期:23 | 
| MAX_CRASH_SIGNATURE_LENGTH | 128 | uint32 | |
| MAX_EVENT_ID_LENGTH | 128 | uint32 | |
| MAX_EXCEPTION_MESSAGE_LENGTH | 4096 | uint32 | 新增:10 | 
| MAX_EXCEPTION_TYPE_LENGTH | 128 | uint32 | |
| MAX_NAMESPACE_LENGTH | 32 | uint32 | |
| MAX_NUM_ANNOTATIONS_PER_CRASH_REPORT | 32 | uint32 | |
| MAX_NUM_ANNOTATIONS_PER_NAMESPACE | 16 | uint32 | |
| MAX_NUM_ANNOTATIONS_PROVIDED | 64 | uint32 | |
| MAX_NUM_ATTACHMENTS_PER_CRASH_REPORT | 16 | uint32 | |
| MAX_PROCESS_NAME_LENGTH | 64 | uint32 | |
| MAX_PROGRAM_NAME_LENGTH | 1024 | uint32 | |
| MAX_REPORT_ID_LENGTH | 64 | uint32 | 新增日期:11 | 
| MAX_THREAD_NAME_LENGTH | 64 | uint32 |