| syntax = "proto2"; |
| |
| option java_package = "com.google.wireless.android.sdk.stats"; |
| option java_outer_classname = "AndroidStudioStats"; |
| |
| // IntelliJ gets really upset with the large proto files we generate |
| // and disables auto-complete for the classes. |
| // This option will generate multiple files and restore auto-completion. |
| option java_multiple_files = true; |
| |
| package android_studio; |
| |
| message AndroidStudioEvent { |
| // Describes a group of event kinds related to each other. |
| // Necessary only for events that were originally being reported to Google |
| // Analytics (GA). |
| optional EventCategory category = 1; |
| |
| // Specific kind of event, primary separation key of all Android Studio |
| // related events. |
| optional EventKind kind = 2; |
| |
| // The session id is a UUID tracking a single instance of Android Studio |
| // to associate events together such as kind = TEST_RUN |
| optional string studio_session_id = 3; |
| |
| // Fully set when kind = STUDIO_PING |
| // or ANDROID_STUDIO_TEST |
| // or ANDROID_STUDIO_THROUGH_GRADLE |
| // or kind = EMULATOR_PING |
| // or kind = TEST_RUN |
| // or kind = GAME_TOOLS_PING |
| // or kind = AGDE_PING. |
| // The version field is set for most messages. |
| optional ProductDetails product_details = 4; |
| |
| // set when kind = MONITOR_ACTIVATED or kind = MONITOR_RUNNING |
| // Deprecated by AndroidProfilerEvent |
| optional MonitorType monitor_type = 5 [deprecated = true]; |
| |
| // set when kind = MONITOR_RUNNING |
| // Deprecated by AndroidProfilerEvent |
| optional bool monitor_paused = 6 [deprecated = true]; |
| |
| // set when kind = PROFILING_OPEN or PROFILING_CAPTURE |
| // Deprecated by AndroidProfilerEvent |
| optional ProfilerCaptureType profiler_capture_type = 7 [deprecated = true]; |
| |
| // set when kind = CLOUD_TESTING_BACKEND_ERROR |
| optional string cloud_testing_error_message = 8; |
| |
| // set when kind = CLOUD_TESTING_COMPARE_SCREENSHOTS_OPENED |
| optional int32 cloud_testing_loaded_screenshots_count = 9; |
| |
| // Deprecated, use debug_session_start_details instead. |
| // set when kind = LLDB_SESSION_STARTED |
| optional RunConfigurationType run_configuration_type = 10 [deprecated = true]; |
| |
| // Deprecated, use debug_session_start_details instead. |
| // set when kind = LLDB_SESSION_STARTED |
| optional DebuggerType debugger_type = 11 [deprecated = true]; |
| |
| // set when kind = LLDB_LAUNCHED |
| // or kind = DEPLOYMENT_APK |
| // or kind = DEPLOYMENT_EMULATOR |
| // or kind = CLOUD_TESTING_CONFIGURE_CLOUD_DEVICE |
| // or kind = CLOUD_TESTING_LAUNCH_CLOUD_DEVICE |
| // or kind = CLOUD_TESTING_DEBUG_FROM_RESULTS |
| // or kind = TEST_RUN |
| // or kind = LayoutInspectorEvent and LayoutInspectorEventType = CAPTURE |
| // or kind = ANDROID_PROFILER and AndroidProfilerEvent.Type = CHANGE_DEVICE |
| // or kind = DynamicLayoutInspectorEvent |
| // or kind = AppInspectionEvent and AppInspectionEvent.Type = PROCESS_SELECTED |
| optional DeviceInfo device_info = 12; |
| |
| // set when kind = LLDB_INSTALL_FAILED |
| // e.g. 'failed to get reply to handshake packet' |
| optional string lldb_session_failure_message = 13; |
| |
| // set when kind = DEVELOPER_SERVICES_INSTALLED |
| // or kind = DEVELOPER_SERVICES_REMOVED |
| optional DeveloperServiceKind developer_service_kind = 14; |
| |
| // set when category = GRADLE_SYNC |
| optional string gradle_version = 15; // e.g. '2.10' |
| |
| // set when kind = GRADLE_SYNC_FAILURE_DETAILS (previously set when kind = |
| // GRADLE_SYNC_FAILURE) |
| optional GradleSyncFailure gradle_sync_failure = 16; |
| |
| // set when kind = GRADLE_SYNC_FAILURE and gradle_sync_failure = *_NOT_FOUND |
| // e.g. 'org.gradle.api.internal.DemoClass.demoMethod' |
| optional string gradle_missing_signature = 17; |
| |
| // set when kind = TEMPLATE_RENDERER |
| optional TemplateRenderer template_renderer = 18; |
| |
| // set when kind = STUDIO_CRASH |
| optional StudioCrash studio_crash = 19; |
| |
| // set when kind = GRADLE_BUILD_DETAILS or INSTANT_RUN |
| // In the case of INSTANT_RUN, only the plugin version information is included |
| optional GradleBuildDetails gradle_build_details = 20; |
| |
| // set when kind = INSTANT_RUN |
| optional InstantRun instant_run = 21; |
| |
| // set when kind = META_METRICS |
| optional MetaMetrics meta_metrics = 22; |
| |
| // set when kind = EMULATOR_PING |
| optional EmulatorDetails emulator_details = 23; |
| |
| // set when kind = TEST_RUN |
| optional TestRun test_run = 24; |
| |
| // set when kind = EMULATOR_UI_EVENT (deprecated), use the repeated |
| // field emulator_ui_events instead. |
| optional EmulatorUiEvent emulator_ui_event = 25 [deprecated = true]; |
| |
| // set when kind = HYPERVISOR |
| optional Hypervisor hypervisor = 26; |
| |
| // set when kind = EMULATOR_HOST |
| optional EmulatorHost emulator_host = 27; |
| |
| // set when kind = GRADLE_BUILD_PROFILE |
| optional GradleBuildProfile gradle_build_profile = 28; |
| |
| // set when kind = LLDB_FRONTEND_EXITED |
| optional LLDBFrontendDetails lldb_frontend_details = 29; |
| |
| // set when kind = FIREBASE_ASSISTANT_ERROR_PRESENTED or |
| // kind FIREBASE_ASSISTANT_SILENT_ERROR |
| optional FirebaseErrorDetails firebase_error_details = 30; |
| |
| // Client-side salted (rotating every 532 days), sha256 of the project id. |
| // set when kind = PROJECT_STRUCTURE_* |
| // or kind = APK_ANALYZER_STATS |
| // or kind = TSDKUA_EVENT |
| optional string project_id = 31; |
| |
| // set when kind = GFX_TRACE_* |
| optional GfxTracingDetails gfx_tracing_details = 32; |
| |
| // set when kind = TEST_RECORDER_GENERATE_TEST_CLASS |
| optional TestRecorderDetails test_recorder_details = 33; |
| |
| // set when kind = STUDIO_UI_ACTION_STATS |
| optional UIActionStats ui_action_stats = 34; |
| |
| // set when kind = STUDIO_PING |
| optional MachineDetails machine_details = 35; |
| |
| // set when kind = STUDIO_PING |
| optional JvmDetails jvm_details = 36; |
| |
| // set when kind = STUDIO_PROCESS_STATS |
| // or kind = GRADLE_BUILD_PROFILE |
| // or kind = STUDIO_UI_OOM_DIALOG_EVENT |
| // or kind = STUDIO_LOW_MEMORY_EVENT |
| optional JavaProcessStats java_process_stats = 37; |
| |
| // set when kind = STUDIO_PERFORMANCE_STATS |
| optional StudioPerformanceStats studio_performance_stats = 38; |
| |
| // set when kind = LLDB_PERFORMANCE_STATS |
| optional LldbPerformanceStats lldb_performance_stats = 39; |
| |
| // set when kind = STUDIO_PROJECT_OPENED or STUDIO_PROJECT_CLOSED |
| optional StudioProjectChange studio_project_change = 40; |
| |
| // optionally set when kind = FIREBASE_ASSISTANT_* (except for errors). |
| optional FirebaseContextDetails firebase_context_details = 41; |
| |
| // set when kind = LAYOUT_EDITOR_EVENT |
| optional LayoutEditorEvent layout_editor_event = 42; |
| |
| // set when kind = APP_LINKS_ASSISTANT_STATS |
| optional AppLinksAssistantEvent app_links_assistant_event = 43; |
| |
| // set when kind = EMULATOR_PERFORMANCE_STATS |
| optional EmulatorPerformanceStats emulator_performance_stats = 44; |
| |
| // set when kind = ADB_ASSISTANT_STATS |
| optional AdbAssistantStats adb_assistant_stats = 45; |
| |
| // set when kind = LLDB_SESSION_STARTED |
| optional LldbSessionStartDetails lldb_session_start_details = 46; |
| |
| // set when kind = LLDB_SESSION_ENDED |
| optional LldbSessionEndDetails lldb_session_end_details = 47; |
| |
| // set when kind = ANDROID_PROFILER |
| optional AndroidProfilerEvent android_profiler_event = 48; |
| |
| // set when kind = APK_ANALYZER_STATS |
| optional ApkAnalyzerStats apk_analyzer_stats = 49; |
| |
| // set when kind = GRADLE_SYNC_ENDED, GRADLE_SYNC_FAILURE or |
| // GRADLE_SYNC_SETUP_STARTED |
| optional GradleSyncStats gradle_sync_stats = 50; |
| |
| // set when kind = GRADLE_CPP_SYNC_COMPLETED |
| optional GradleCppSyncStats gradle_cpp_sync_stats = 113; |
| |
| // set when category = APK_DEBUG |
| optional ApkDebugProject apk_debug_project = 51; |
| |
| // set when kind = LAYOUT_INSPECTOR_EVENT |
| optional LayoutInspectorEvent layout_inspector_event = 52; |
| |
| // set when kind = ANDROID_PROFILER_DB_STATS |
| optional AndroidProfilerDbStats android_profiler_db_stats = 53; |
| |
| // set when kind = TEMPLATE_RENDERER |
| // or kind = GRADLE_SYNC_ENDED |
| optional KotlinSupport kotlin_support = 54; |
| |
| // set when kind = CONNECTION_ASSISTANT_EVENT |
| optional ConnectionAssistantEvent connection_assistant_event = 55; |
| |
| // set when kind = STUDIO_UI_OOM_DIALOG_EVENT |
| optional OomDialogEvent oom_dialog_event = 56; |
| |
| // set when kind = CMAKE_EDITING_EVENT |
| optional CMakeEditingEvent cmake_editing_event = 57; |
| |
| // set for all events generated by Android Studio |
| optional IdeBrand ide_brand = 58; |
| |
| // set when kind = CPP_HEADERS_VIEW_EVENT |
| optional CppHeadersViewEvent cpp_headers_view_event = 59; |
| |
| // set when kind = WHATS_NEW_ASSISTANT_EVENT |
| // Deprecated since 3.6.0.8, replaced with WhatsNewAssistantUpdateEvent |
| optional WhatsNewAssistantEvent whats_new_assistant_event = 60 |
| [deprecated = true]; |
| |
| // the project id as used in the playstore, e.g. |
| // 'com.google.android.apps.maps'. This is sensitive information and |
| // thus restricted to "raw" sawmill access. This data is only available in |
| // and for PWG approved scenarios. |
| optional string raw_project_id = 61; |
| |
| // set when kind = INTELLIJ_INDEXING_STATS |
| optional IntellijIndexingStats intellij_indexing_stats = 62; |
| |
| // set when kind == LINT_SESSION |
| optional LintSession lint_session = 63; |
| |
| // set when kind == LINT_ACTION |
| optional LintAction lint_action = 64; |
| |
| // set when kind = STUDIO_RUN_EVENT |
| optional StudioRunEvent studio_run_event = 65 [deprecated = true]; |
| |
| // set when kind = INTELLIJ_PROJECT_SIZE_STATS |
| repeated IntellijProjectSizeStats intellij_project_size_stats = 66; |
| |
| // set when kind = STUDIO_TOOL_WINDOW_ACTION_STATS |
| optional StudioToolWindowActionStats studio_tool_window_action_stats = 67; |
| |
| // set when kind = PROJECT_STRUCTURE_DIALOG |
| optional PSDEvent psd_event = 68; |
| |
| // set when Android Studio is launched with the "idea.is.internal=true" |
| // flag, indicating that this is somebody debugging Android Studio rather |
| // than a normal user sending actual usage metrics. |
| optional bool idea_is_internal = 69; |
| |
| // set when kind == JNI_INSPECTION |
| optional JniInspectionEvent jni_inspection_event = 70; |
| |
| // set when kind == USER_SENTIMENT |
| optional UserSentiment user_sentiment = 71; |
| // Describes a group of event kinds related to each other. |
| // This is redundant in the presence of EventKind + event specific message, |
| // and is only necessary for events originally sent to GA. |
| |
| // set when kind = RUN_EVENT |
| optional RunEvent run_event = 72; |
| |
| // set when kind = NAV_EDITOR_EVENT |
| optional NavEditorEvent nav_editor_event = 73; |
| |
| // set when kind = DIALOG_STATS |
| optional DialogStats dialog_stats = 74; |
| |
| // set when kind = GRADLE_PLUGIN_UPGRADE_DIALOG |
| optional GradlePluginUpgradeDialogStats gradle_plugin_upgrade_dialog = 75; |
| |
| // set when kind = DATA_BINDING |
| optional DataBindingEvent data_binding_event = 76; |
| |
| // set when kind = TYPING_LATENCY_STATS |
| optional TypingLatencyStats typing_latency_stats = 77; |
| |
| // set when kind = GRADLE_SYNC_ISSUES. |
| repeated GradleSyncIssue gradle_sync_issues = 78; |
| |
| // The list of quick-fixes offered to resolve a sync failure. (Quick fixes |
| // offered to resolve specific sync issues are reported in |
| // gradle_sync_issues). set when kind = GRADLE_SYNC_FAILURE_DETAILS. |
| repeated GradleSyncQuickFix offered_quick_fixes = 79; |
| |
| // set when kind = STUDIO_PATCH_UPDATER |
| optional StudioPatchUpdaterEvent studio_patch_updater_event = 80; |
| |
| // Set when kind = RESOURCE_MANAGER |
| optional ResourceManagerEvent resource_manager_event = 81; |
| |
| // Set when kind = IDE_PLUGIN_INFO |
| optional IdePluginInfo ide_plugin_info = 82; |
| |
| // Set when kind = EDITOR_HIGHLIGHTING_STATS |
| optional EditorHighlightingStats editor_highlighting_stats = 83; |
| |
| // Set when kind = WINDOWS_DEFENDER_STATUS |
| optional WindowsDefenderStatus windows_defender_status = 84; |
| |
| // Set when kind = MEMORY_SETTINGS_EVENT |
| optional MemorySettingsEvent memory_settings_event = 85; |
| |
| // Set when kind = STUDIO_UPDATE_FLOW |
| optional StudioUpdateFlowEvent studio_update_flow_event = 86; |
| |
| // set when kind = BUILD_OUTPUT_WINDOW_STATS |
| optional BuildOutputWindowStats build_output_window_stats = 87; |
| |
| // set when kind = GRADLE_PLUGIN_DSL_USAGE_STATS |
| optional GradlePluginDslUsageStats gradle_plugin_dsl_usage_stats = 88; |
| |
| // set when kind = WHATS_NEW_ASSISTANT_UPDATE_EVENT |
| optional WhatsNewAssistantUpdateEvent whats_new_assistant_update_event = 89; |
| |
| // set when kind = DEFAULT_ACTIVITY_LOCATOR_STATS |
| optional DefaultActivityLocatorStats default_activity_locator_stats = 90; |
| |
| // set when kind = MOTION_LAYOUT_EDITOR_EVENT |
| optional MotionLayoutEditorEvent motion_layout_editor_event = 91; |
| |
| // set when kind = COMPOSE_SAMPLE_EVENT |
| // This is a sample project for Compose published on GitHub that can be |
| // imported through the sample browser UI or cloned and opened manually |
| optional ComposeSampleEvent compose_sample_event = 92; |
| |
| // set when kind = IMPORT_SAMPLE_EVENT |
| // Logs the ID of the sample project imported through the sample browser UI, |
| // e.g. android/user-interface-samples/TextStyling |
| optional ImportSampleEvent import_sample_event = 93; |
| |
| // set when kind = DYNAMIC_LAYOUT_INSPECTOR_EVENT |
| optional DynamicLayoutInspectorEvent dynamic_layout_inspector_event = 94; |
| |
| // set when kind = BUILD_ATTRIBUTION_STATS |
| optional BuildAttributionStats build_attribution_stats = 95; |
| |
| // set when kind = EDITOR_COMPLETION_STATS |
| optional EditorCompletionStats editor_completion_stats = 96; |
| |
| // set when kind = MULTI_VIEW_EVENT |
| optional MultiViewEvent multi_view_event = 97; |
| |
| // set when kind = BUILD_ATTRIBUTION_UI_EVENT |
| optional BuildAttributionUiEvent build_attribution_ui_event = 98; |
| |
| // set when kind = VS_PLUGIN |
| optional VsPluginEvent vs_plugin_event = 99; |
| |
| // set when kind = DESIGN_EDITOR_HELP_PANEL_EVENT |
| optional DesignEditorHelpPanelEvent design_editor_help_panel_event = 100; |
| |
| // set when kind = APP_INSPECTION |
| optional AppInspectionEvent app_inspection_event = 101; |
| |
| // set when kind = ML_MODEL_BINDING |
| optional MlModelBindingEvent ml_model_binding_event = 102; |
| |
| // set when kind = DEPLOYMENT_TO_EMULATOR |
| optional AvdLaunchEvent avd_launch_event = 103; |
| |
| // set when kind = NAV_SAFE_ARGS_EVENT |
| optional NavSafeArgsEvent nav_safe_args_event = 104; |
| |
| // set when kind = DAGGER_EDITOR |
| optional DaggerEditorEvent dagger_editor_event = 105; |
| |
| // set when kind = PARALLEL_ANDROID_TEST_REPORT_UI |
| optional ParallelAndroidTestReportUiEvent |
| parallel_android_test_report_ui_event = 106; |
| |
| // set when kind = APPLY_CHANGES_AGENT_ERROR |
| optional ApplyChangesAgentError apply_changes_agent_error = 107; |
| |
| // set when kind = WIZARD_TEMPLATES_USAGE |
| optional TemplatesUsage template_usage = 108; |
| |
| // set when kind = UPGRADE_ASSISTANT_COMPONENT_EVENT |
| optional UpgradeAssistantComponentEvent upgrade_assistant_component_event = |
| 109; |
| |
| // set when kind = UPGRADE_ASSISTANT_PROCESSOR_EVENT |
| optional UpgradeAssistantProcessorEvent upgrade_assistant_processor_event = |
| 110; |
| |
| // set when kind = INTERACTIVE_PREVIEW_EVENT |
| optional InteractivePreviewEvent interactive_preview_event = 111; |
| |
| // set when kind = COMPOSE_ANIMATION_TOOLING |
| optional ComposeAnimationToolingEvent compose_animation_tooling_event = 112; |
| |
| // set when kind = EMULATOR_UI_EVENTS |
| repeated EmulatorUiEvent emulator_ui_events = 114; |
| |
| // set when kind = SURVEY_RESPONSE |
| optional SurveyResponse survey_response = 115; |
| |
| // set when kind = COMPOSE_DEPLOY |
| optional ComposeDeployEvent compose_deploy_event = 116; |
| |
| // Deprecated, use suggested_import_event instead. |
| // set when kind = AUTO_IMPORT_EVENT |
| optional AutoImportEvent auto_import_event = 117 [deprecated = true]; |
| |
| // set when kind = FILE_USAGE |
| optional FileUsage file_usage = 118; |
| |
| // set when kind = LIVE_LITERALS_EVENT |
| optional LiveLiteralsEvent live_literals_event = 119; |
| |
| // set when kind = MIGRATE_TO_NON_TRANSITIVE_R_CLASS |
| optional NonTransitiveRClassMigrationEvent |
| non_transitive_r_class_migration_event = 120; |
| |
| // set when kind = ANDROID_TEST_RETENTION_EVENT |
| optional AndroidTestRetentionEvent android_test_retention_event = 121; |
| |
| // set when kind = SUGGESTED_IMPORT_EVENT |
| optional SuggestedImportEvent suggested_import_event = 122; |
| |
| // set when kind = VFS_REFRESH |
| optional VfsRefresh vfs_refresh = 123; |
| |
| // Set when kind is SIGNING_WIZARD_*_FAILED or SIGNING_WIZARD_*_SUCCEEDED |
| optional SigningWizardEvent signing_wizard_event = 124; |
| |
| // set when kind = FILE_TYPE |
| optional FileType file_type = 125; |
| |
| // set when kind is KOTLIN_PROJECT_CONFIGURATION |
| optional KotlinProjectConfiguration kotlin_project_configuration = 126; |
| // set when kind = RUN_START_DATA |
| optional RunStartData run_start_data = 127; |
| |
| // set when kind = RUN_FINISH_DATA |
| optional RunFinishData run_finish_data = 128; |
| |
| // set when kind = DEVICE_MANAGER |
| optional DeviceManagerEvent device_manager_event = 129; |
| |
| // set when kind = WEAR_PAIRING |
| optional WearPairingEvent wear_pairing_event = 130; |
| |
| // set when kind = GRADLE_JDK_INVALID |
| optional GradleJdkInvalidEvent gradle_jdk_invalid_event = 131; |
| |
| // set when kind = DEVICE_EXPLORER |
| optional DeviceExplorerEvent device_explorer_event = 132; |
| |
| // set when kind = OPTIN_METRICS |
| optional OptInToMetrics opt_in_to_metrics = 133; |
| |
| // set when kind = OPTOUT_METRICS |
| optional OptOutOfMetrics opt_out_of_metrics = 134; |
| |
| // set when kind = GRADLE_VERSION_CATALOG_DETECTOR |
| optional GradleVersionCatalogDetectorEvent |
| gradle_version_catalog_detector_event = 135; |
| |
| // set when kind = COROUTINE_DEBUGGER |
| optional CoroutineDebuggerEvent coroutine_debugger_event = 136; |
| |
| // set when kind = SPLITTING_TABS_USAGE |
| optional SplittingTabsUsageEvent splitting_tabs_usage_event = 137; |
| |
| // set when kind = LOGCAT_USAGE |
| optional LogcatUsageEvent logcat_usage_event = 138; |
| |
| // the project ids as used in the playstore, e.g. |
| // 'com.google.android.apps.maps'. This is sensitive information and |
| // thus restricted to "raw" sawmill access. This data is only available in |
| // and for PWG approved scenarios. |
| repeated string raw_project_ids = 139; |
| |
| // Client-side salted (rotating every 28 days), sha256 of the project id. |
| // set when kind = PROJECT_STRUCTURE_* or kind = APK_ANALYZER_STATS |
| repeated string project_ids = 140; |
| |
| // set when kind = OS_METRICS |
| optional OSMetrics os_metrics = 141; |
| |
| // set when kind is SDK_INDEX_LIBRARY_HAS_CRITICAL_ISSUES, |
| // SDK_INDEX_LIBRARY_IS_OUTDATED or SDK_INDEX_LIBRARY_IS_NON_COMPLIANT |
| optional SdkIndexLibraryDetails sdk_index_library_details = 142; |
| |
| // set when kind = EDITOR_PICKER |
| optional EditorPickerEvent editor_picker_event = 143; |
| |
| // set when kind = COMPOSE_MULTI_PREVIEW |
| optional ComposeMultiPreviewEvent compose_multi_preview_event = 144; |
| |
| // set when kind = LIVE_EDIT_EVENT |
| optional LiveEditEvent live_edit_event = 145; |
| |
| // set when kind = STOP_EVENT |
| optional StopEvent stop_event = 146; |
| |
| // set when kind = APP_QUALITY_INSIGHTS_USAGE |
| optional AppQualityInsightsUsageEvent app_quality_insights_usage_event = 147; |
| |
| // set when kind = GOOGLE_LOGIN_EVENT |
| optional GoogleLoginPluginEvent google_login_event = 148; |
| |
| // set when kind = DEVICE_MIRRORING_SESSION |
| optional DeviceMirroringSession device_mirroring_session = 149; |
| |
| // set when kind = FAST_PREVIEW_EVENT |
| optional FastPreviewEvent fast_preview_event = 150; |
| |
| // set when kind = MEMORY_USAGE_REPORT_EVENT |
| optional MemoryUsageReportEvent memory_usage_report_event = 151; |
| |
| // set when kind = SDK_INDEX_LOADED_CORRECTLY |
| // or kind = SDK_INDEX_CACHING_ERROR |
| // or kind = SDK_INDEX_DEFAULT_DATA_ERROR |
| optional SdkIndexLoadingDetails sdk_index_loading_details = 152; |
| |
| // set when kind = MANIFEST_MERGER_STATS |
| optional ManifestMergerStats manifest_merger_stats = 153; |
| |
| // set when kind = THREADING_AGENT_STATS |
| optional ThreadingAgentUsageEvent threading_agent_usage_event = 154; |
| |
| // set when kind = PROJECT_VIEW_SELECTION_CHANGE_EVENT |
| optional ProjectViewSelectionChangeEvent project_view_selection_change_event = |
| 155; |
| |
| // set when kind = HEAP_REPORT_EVENT |
| optional HeapReportEvent heap_report_event = 156; |
| |
| // set when kind = CREATE_DIAGNOSTIC_REPORT_ACTION |
| optional CreateDiagnosticReportAction create_diagnostic_report_action_event = |
| 157; |
| |
| // set when kind = DIRECT_ACCESS_USAGE_EVENT |
| optional DirectAccessUsageEvent direct_access_usage_event = 158; |
| |
| // set when kind = SAFE_MODE_STATS_EVENT |
| optional SafeModeStatsEvent safe_mode_stats_event = 159; |
| |
| // set when kind = TSDKUA_EVENT |
| optional TSdkUAEvent tsdk_ua_event = 160; |
| |
| // set when kind = INTELLIJ_NEW_UI_STATE_EVENT |
| optional IntelliJNewUIState intellij_new_ui_state_event = 161; |
| |
| // set when kind = KOTLIN_GRADLE_PERFORMANCE |
| optional KotlinGradlePerformance kotlin_gradle_performance_event = 162; |
| |
| // set when kind = BUILD_OUTPUT_DOWNLOADS_INFO_USER_INTERACTION |
| optional BuildOutputDownloadsInfoEvent build_output_downloads_info_event = |
| 163; |
| |
| // set when kind = DEVICE_MIRRORING_ABNORMAL_AGENT_TERMINATION |
| optional DeviceMirroringAbnormalAgentTermination |
| device_mirroring_abnormal_agent_termination = 164; |
| |
| // set when kind = SYSTEM_HEALTH_EVENT |
| optional SystemHealthEvent system_health_event = 165; |
| |
| // set when kind = COMPOSE_PREVIEW_CANVAS_EVENT |
| optional ComposePreviewCanvasEvent compose_preview_canvas_event = 166; |
| |
| // set when kind = SML_COMPLETION_EVENT |
| optional SmlCompletionEvent sml_completion_event = 167; |
| |
| // set when kind = SML_CODE_TRANSFORMATION_EVENT |
| optional SmlTransformEvent sml_transform_event = 168; |
| |
| // set when kind = SML_CHATBOT_EVENT |
| optional SmlChatBotEvent sml_chat_bot_event = 169; |
| |
| // set when kind = SML_CONFIGURATION_EVENT |
| optional SmlConfigurationEvent sml_configuration_event = 170; |
| |
| // set when kind = KOTLIN_SUPPORT_DECLINED |
| optional KotlinSupportDeclined kotlin_support_declined = 171; |
| |
| // set when kind = DEVICE_SCREENSHOT_EVENT |
| optional DeviceScreenshotEvent device_screenshot_event = 172; |
| |
| // set when kind = EDITOR_NOTIFICATION |
| optional EditorNotification editor_notification = 173; |
| |
| // set when kind = COMPOSE_PREVIEW_LITE_MODE |
| optional ComposePreviewLiteModeEvent compose_preview_lite_mode_event = 174; |
| |
| // set when kind = UPGRADE_ANDROID_STUDIO_DIALOG |
| optional UpgradeAndroidStudioDialogStats upgrade_android_studio_dialog = 175; |
| |
| // set when kind = DEBUGGER_EVENT |
| optional DebuggerEvent debugger_event = 176; |
| |
| // set when kind = SOONG_SYNC_EVENT |
| optional SoongSyncStats soong_sync_stats = 177; |
| |
| // set when kind = INTELLIJ_NEW_UI_SWITCH |
| optional IntelliJNewUISwitch intellij_new_ui_switch = 178; |
| |
| // set when kind = ESSENTIALS_MODE_EVENT |
| optional EssentialsModeEvent essentials_mode_event = 179; |
| |
| // set when kind = LINT_TOOLTIP_LINK_EVENT |
| optional LintTooltipLinkEvent lint_tooltip_link_event = 180; |
| |
| // set when kind = SML_AI_EXCLUDE_EVENT |
| optional SmlAiExcludeEvent sml_ai_exclude_event = 181; |
| |
| // set when kind = I_DEVICE_USAGE_EVENT |
| optional IDeviceUsageEvent i_device_usage_event = 182; |
| |
| // set when kind = GRADLE_JDK_CONFIGURATION |
| optional GradleJdkConfigurationEvent gradle_jdk_configuration_event = 183; |
| |
| // set when kind = RENDER_SECURITY_MANAGER_EVENT |
| optional RenderSecurityManagerEvent render_security_manager_event = 184; |
| |
| // set when kind = PREVIEW_REFRESH_EVENT |
| optional PreviewRefreshEvent preview_refresh_event = 185; |
| |
| // set when kind = WEAR_HEALTH_SERVICES_TOOL_WINDOW_EVENT |
| optional WearHealthServicesEvent wear_health_services_event = 186; |
| |
| // set when kind = UI_DEVICE_SETTINGS_EVENT |
| optional UiDeviceSettingsEvent ui_device_settings_event = 187; |
| |
| // set when kind = ADB_USAGE_EVENT |
| optional AdbUsageEvent adb_usage_event = 188; |
| |
| // set when kind = SML_GEOLOCATION_EVENT |
| optional SmlGeolocationEvent sml_geolocation_event = 189; |
| |
| // set when kind = SML_COMPLETION_REQUEST_ERROR |
| optional SmlCompletionRequestErrorEvent sml_completion_request_error = 190; |
| |
| // set when kind = ADB_DEVICE_CONNECTED |
| optional DeviceConnectedNotificationEvent device_connected = 191; |
| |
| // set when kind = SCREENSHOT_TEST_COMPOSE_PREVIEW |
| optional ScreenshotTestComposePreviewEvent |
| screenshot_test_compose_preview_event = 192; |
| |
| // set when kind = TEST_SCENARIO_EVENT |
| optional TestScenarioEvent test_scenario_event = 193; |
| |
| // set when kind = ADB_SERVER_STATE |
| optional AdbServerState adb_server_state = 194; |
| |
| // set when kind = FIREBASE_MANAGEMENT_EVENT |
| optional FirebaseManagementEvent firebase_management_event = 195; |
| |
| enum EventCategory { |
| // The event was not grouped into any specific category (default). |
| NO_EVENT_CATEGORY = 0; |
| // The event is related to deployment to a device or emulator. |
| DEPLOYMENT = 1; |
| // Stats on builds from Studio. |
| STUDIO_BUILD = 2; |
| // The event is related to usage of 'Google Developer Services' |
| // inside Android Studio. |
| DEVELOPER_SERVICES = 3; |
| // The event is related to interaction between Android Studio and Gradle. |
| GRADLE_SYNC = 4; |
| // The event is related to Performance Profiling. |
| // Deprecated by AndroidProfilerEvent |
| PROFILING = 5 [deprecated = true]; |
| // The event is related to Performance Monitoring. |
| // Deprecated by AndroidProfilerEvent |
| MONITOR = 6 [deprecated = true]; |
| // The event is related to the SDK Manager. |
| SDK_MANAGER = 7; |
| // The event is related to project/file templates. |
| TEMPLATE = 8; |
| // The event is related to Theme Editor. |
| THEME_EDITOR = 9 [deprecated = true]; |
| // The event is related to App Indexing integration. |
| |
| APP_INDEXING = 10; |
| // The event is related to C++ debugging. |
| LLDB = 11; |
| // The event is related to Google Cloud Test Lab integration. |
| CLOUD_TESTING = 12; |
| // The event is a regular ping from the application. |
| PING = 13; |
| // The event is related to running tests. |
| TESTS = 14; |
| // The event is a meta event reporting metrics on metrics. |
| META = 15; |
| // The event is related to the Emulator UI |
| EMULATOR_UI = 16; |
| // The event describes System Info |
| SYSTEM = 17; |
| // The event is related to the Project Structure Dialog. |
| PROJECT_STRUCTURE_DIALOG = 18; |
| // The event is from the Android Gradle plugin. |
| GRADLE = 19; |
| // The event is related to the Firebase assistant. |
| FIREBASE_ASSISTANT = 20; |
| // The event is related to the GPU Profiler. |
| // Deprecated by AndroidProfilerEvent |
| GPU_PROFILER = 21 [deprecated = true]; |
| // the event is related to the test recorder (Cassette) |
| TEST_RECORDER = 22; |
| // the event is related to the Android Studio UI. |
| STUDIO_UI = 23; |
| // the event is related to the layout editor |
| LAYOUT_EDITOR = 24; |
| // The event is related to APK_DEBUGGING actions initiated by the user. |
| APK_DEBUG = 25; |
| // The event is related to CMake editing. |
| // Do not use this -- use the EventKind below. |
| DEPRECATED_CMAKE_EDITING_EVENT = 26 [deprecated = true]; |
| // The event is related to Android Studio Projects |
| PROJECT_SYSTEM = 27; |
| // The event is related to Splitting Tabs tool windows |
| SPLITTING_TABS = 28; |
| // The event is related to Logcat tool window |
| LOGCAT = 29; |
| // The event is related to Google Play SDK Index |
| GOOGLE_PLAY_SDK_INDEX = 30; |
| } |
| |
| // Specific kind of event, primary separation key of all Android Studio |
| // related events. |
| enum EventKind { |
| UNKNOWN_EVENT_KIND = 0; |
| // An APK (android application) is deployed. |
| DEPLOYMENT_APK = 1; |
| // A deployment to the emulator. |
| DEPLOYMENT_TO_EMULATOR = 2; |
| // The developer added a Google Developer Service to their app. |
| DEVELOPER_SERVICES_INSTALLED = 3; |
| // The developer removed a Google Developer Service from their app. |
| DEVELOPER_SERVICES_REMOVED = 4; |
| // A sync between Android Studio and Gradle started. |
| GRADLE_SYNC_STARTED = 5; |
| // A sync between Android Studio and Gradle ended. |
| GRADLE_SYNC_ENDED = 6; |
| // A sync between Android Studio and Gradle was skipped. |
| GRADLE_SYNC_SKIPPED = 7; |
| // A sync between Android Studio and Gradle failed. |
| GRADLE_SYNC_FAILURE = 8; |
| // A sync between Android Studio and Gradle C++ support completed. |
| GRADLE_CPP_SYNC_COMPLETED = 9; |
| // Performance profiling capture started. |
| PROFILING_CAPTURE = 10; |
| // Performance profiling capture opened in the IDE. |
| PROFILING_OPEN = 11; |
| // Conversion of hprof profiling data in progress. |
| PROFILING_CONVERT_HPROF = 12; |
| // Analysis of the profiling data in progress. |
| PROFILING_ANALYSIS_RUN = 13; |
| // Performance monitoring has been activated. |
| // Deprecated by AndroidProfilerEvent |
| MONITOR_ACTIVATED = 14 [deprecated = true]; |
| // Performance monitoring is running. |
| // Deprecated by AndroidProfilerEvent |
| MONITOR_RUNNING = 15 [deprecated = true]; |
| // The user selected an action from the SDK Manager Toolbar. |
| SDK_MANAGER_TOOLBAR_CLICKED = 16; |
| // The standalone SDK Manager was launched. |
| SDK_MANAGER_STANDALONE_LAUNCHED = 17; |
| // The built-in SDK Manager was launched. |
| SDK_MANAGER_LOADED = 18; |
| // A new file/project is created based on a template. |
| TEMPLATE_RENDER = 19; |
| // User opened the Theme Editor. |
| THEME_EDITOR_OPEN = 20 [deprecated = true]; |
| // A deep link was created for app indexing. |
| APP_INDEXING_DEEP_LINK_CREATED = 21; |
| // An api code was created for app indexing. |
| APP_INDEXING_API_CODE_CREATED = 22; |
| // An app indexing deep link was launched. |
| APP_INDEXING_DEEP_LINK_LAUNCHED = 23; |
| // An app indexing quick fix was applied. |
| APP_INDEXING_TRIGGER_QUICKFIX = 24; |
| // App Indexing Fetch As Google dialog is shown. |
| APP_INDEXING_SHOW_FEAG_DIALOG = 25; |
| // App Indexing Fetch As Google task has started. |
| APP_INDEXING_START_FEAG_TASK = 26; |
| // Native debugger is launched. |
| LLDB_LAUNCHED = 27; |
| // Native debugger session has started. |
| LLDB_SESSION_STARTED = 28; |
| // Deprecated, use LLDB_SESSION_ENDED instead. |
| // Native debugger session has failed. |
| LLDB_SESSION_FAILED = 29 [deprecated = true]; |
| // Deprecated, use DEBUG_SESSION_ENDED instead. |
| // Native debugger session has completed successfully. |
| LLDB_SESSION_COMPLETED = 30 [deprecated = true]; |
| // SDK Manager QuickFix Wizard is invoked to install LLDB package. |
| LLDB_INSTALL_STARTED = 31; |
| // SDK Manager QuickFix Wizard invocation to install LLDB package failed. |
| LLDB_INSTALL_FAILED = 32; |
| // SDK Manager QuickFix Wizard invocation to install LLDB package completed |
| // successfully. |
| LLDB_INSTALL_COMPLETED = 33; |
| // A watchpoint was added to native code. |
| LLDB_SESSION_USED_WATCHPOINTS = 34; |
| // A Cloud Device was configured for Cloud Testing. |
| CLOUD_TESTING_CONFIGURE_CLOUD_DEVICE = 35; |
| // A Matrix of Cloud Devices was configured for Cloud Testing. |
| CLOUD_TESTING_CONFIGURE_MATRIX = 36; |
| // A Cloud Devices was launched for Cloud Testing. |
| CLOUD_TESTING_LAUNCH_CLOUD_DEVICE = 37; |
| // A Matrix of Cloud Devices was run for Cloud Testing. |
| CLOUD_TESTING_RUN_TEST_MATRIX = 38; |
| // Cloud Testing reported a backend error. |
| CLOUD_TESTING_BACKEND_ERROR = 39; |
| // A Debug session was launched from Cloud Testing results. |
| CLOUD_TESTING_DEBUG_FROM_RESULTS = 40; |
| // The compare screenshots window was opened from a Cloud Testing run. |
| CLOUD_TESTING_COMPARE_SCREENSHOTS_OPENED = 41; |
| // Studio crash statistics were sent. |
| STUDIO_CRASH = 42; |
| // A Gradle Build was run and statistics are available. |
| GRADLE_BUILD_DETAILS = 44; |
| // Stats on Instant Run. |
| INSTANT_RUN = 45; |
| // Daily Android Studio ping with version & os details. |
| STUDIO_PING = 46; |
| // Daily emulator ping with version & os details. |
| EMULATOR_PING = 47; |
| // Metrics on Metrics. |
| META_METRICS = 48; |
| // User ran tests. |
| TEST_RUN = 50; |
| // User clicked something in the Emulator UI. (deprecated), use the |
| // repeated field EMULATOR_UI_EVENTS instead. |
| EMULATOR_UI_EVENT = 51; |
| // Information on the host OS's hypervisor support. |
| HYPERVISOR = 52; |
| // Provides info on the Emulator Host |
| EMULATOR_HOST = 53; |
| // Various UI events in the Project Structure Dialog. |
| PROJECT_STRUCTURE_DIALOG_OPEN = 54; |
| PROJECT_STRUCTURE_DIALOG_SAVE = 55; |
| PROJECT_STRUCTURE_DIALOG_TOP_TAB_CLICK = 56; |
| PROJECT_STRUCTURE_DIALOG_TOP_TAB_SAVE = 57; |
| PROJECT_STRUCTURE_DIALOG_LEFT_NAV_CLICK = 58; |
| PROJECT_STRUCTURE_DIALOG_LEFT_NAV_SAVE = 59; |
| // A gradle build profile |
| GRADLE_BUILD_PROFILE = 60; |
| |
| // The LLDB Frontend has unexpectedly exited |
| LLDB_FRONTEND_EXITED = 61; |
| |
| // The Firebase assistant created a project. |
| FIREBASE_ASSISTANT_PROJECT_CREATED = 62; |
| // The Firebase assistant failed to create a project. |
| FIREBASE_ASSISTANT_PROJECT_CREATE_FAILED = 63; |
| // The Firebase assistant upgraded a project. |
| FIREBASE_ASSISTANT_PROJECT_UPGRADED = 64; |
| // The Firebase assistant failed to upgrade a project. |
| FIREBASE_ASSISTANT_PROJECT_UPGRADE_FAILED = 66; |
| // The Firebase assistant failed to create a config. |
| FIREBASE_ASSISTANT_PROJECT_CONFIG_CREATE_FAILED = 67; |
| // The Firebase assistant updated a project. |
| FIREBASE_ASSISTANT_PROJECT_UPDATED = 68; |
| // The Firebase assistant failed to update a project. |
| FIREBASE_ASSISTANT_PROJECT_UPDATE_FAILED = 69; |
| // The Firebase assistant failed to write the project config. |
| FIREBASE_ASSISTANT_PROJECT_CONFIG_WRITE_FAILED = 70; |
| // The Firebase assistant failed as the user did not accept the TOS. |
| FIREBASE_ASSISTANT_TOS_FAILED = 71; |
| // The Firebase assistant is trying to login. |
| FIREBASE_ASSISTANT_ATTEMPT_LOGIN = 72; |
| // The Firebase assistant successfully logged in. |
| FIREBASE_ASSISTANT_LOGIN_SUCCESS = 73; |
| // The Firebase assistant showed the dialog to offer to reconnect. |
| FIREBASE_ASSISTANT_RECONNECT_DIALOG_SYNC = 74; |
| // The Firebase assistant was requested to connect to the server. |
| FIREBASE_ASSISTANT_CONNECT_REQUESTED = 75; |
| // The Firebase assistant panel was opened. |
| FIREBASE_ASSISTANT_OPEN = 76; |
| // The Firebase assistant connect dialog was opened. |
| FIREBASE_ASSISTANT_CONNECT_DIALOG_OPENED = 77; |
| // The Firebase assistant connect dialog was asked to connect. |
| FIREBASE_ASSISTANT_CONNECT_DIALOG_SYNC = 78; |
| // The Firebase assistant presented an error to the user. |
| FIREBASE_ASSISTANT_ERROR_PRESENTED = 79; |
| // The Firebase assistant encounted an error but didn't inform the user. |
| FIREBASE_ASSISTANT_SILENT_ERROR = 80; |
| // The Firebase assistant reconnect dialog was opened. |
| FIREBASE_ASSISTANT_RECONNECT_DIALOG_OPENED = 81; |
| |
| // The GPU Debugger tracing had an initialization failure. |
| GFX_TRACE_INIT_ERROR = 82; |
| // The GPU Debugger tracing was closed. |
| GFX_TRACE_CLOSED = 83; |
| // The GPU Debugger tracing had a parameter edited. |
| GFX_TRACE_PARAMETER_EDITED = 84; |
| // The GPU Debugger tracing was started. |
| GFX_TRACE_TRACE_STARTED = 85; |
| // The GPU Debugger tracing was stopped. |
| GFX_TRACE_TRACE_STOPPED = 86; |
| // A UI command influencing the GPU Debugger was selected. |
| GFX_TRACE_COMMAND_SELECTED = 87; |
| // A link from the GPU Debugger tracing results was clicked. |
| GFX_TRACE_LINK_CLICKED = 88; |
| // A memory snapshot from the GPU Debugger tracing results was clicked. |
| GFX_TRACE_MEMORY_VIEWED = 89; |
| // A texture from the GPU Debugger tracing results was viewed. |
| GFX_TRACE_TEXTURE_VIEWED = 90; |
| |
| // A "legacy" IntelliJ style project was loaded. |
| LEGACY_IDEA_ANDROID_PROJECT = 91; |
| |
| // The user requested the test recorder to generate a test class. |
| TEST_RECORDER_GENERATE_TEST_CLASS = 92; |
| // The test recorder detected missing espresso dependencies. |
| TEST_RECORDER_MISSING_ESPRESSO_DEPENDENCIES = 93; |
| // The test recorder detected missing instrumentation test folder. |
| TEST_RECORDER_MISSING_INSTRUMENTATION_TEST_FOLDER = 94; |
| // The test recorder was launched. |
| TEST_RECORDER_LAUNCH = 95; |
| |
| // A GPU Debugger Trace session was opened but not started yet. |
| GFX_TRACE_OPEN = 96; |
| |
| // Statistics on user actions in the Android Studio UI. |
| STUDIO_UI_ACTION_STATS = 97; |
| |
| // Stats on the current running Android Studio process. |
| STUDIO_PROCESS_STATS = 98; |
| |
| // Stats on Studio's performance |
| STUDIO_PERFORMANCE_STATS = 99; |
| |
| // Performance stats for LLDB operations. |
| LLDB_PERFORMANCE_STATS = 100; |
| |
| // User opened a project in the IDE. |
| STUDIO_PROJECT_OPENED = 101; |
| |
| // User closed a project in the IDE. |
| STUDIO_PROJECT_CLOSED = 102; |
| |
| // Feature grouping of tutorials expanded. |
| FIREBASE_ASSISTANT_FEATURE_EXPANDED = 103; |
| // Tutorial opened. |
| FIREBASE_ASSISTANT_TUTORIAL_OPENED = 104; |
| // Tutorial closed via navigation. |
| FIREBASE_ASSISTANT_TUTORIAL_CLOSED = 105; |
| // Project update failed due to permissions issue. |
| FIREBASE_ASSISTANT_PROJECT_UPDATE_DENIED = 106; |
| // Terms of service accepted by user. |
| FIREBASE_ASSISTANT_TOS_ACCEPTED = 107; |
| // Dependency added. |
| FIREBASE_ASSISTANT_DEPENDENCY_ADDED = 108; |
| |
| // Layout editor event |
| LAYOUT_EDITOR_EVENT = 109; |
| |
| // Receive sync response and start to setup project in IDE. |
| GRADLE_SYNC_SETUP_STARTED = 110; |
| |
| // For event from App Links Assistant. |
| APP_LINKS_ASSISTANT_STATS = 111; |
| |
| // Emulator performance tracking. |
| EMULATOR_PERFORMANCE_STATS = 112; |
| |
| // The user saved a recorded Robo bootstrap script. |
| TEST_RECORDER_SAVE_ROBO_SCRIPT = 113; |
| |
| // Opened ADB Connection Help Link |
| ADB_ASSISTANT_STATS = 114; |
| |
| // A native debug session ended. |
| LLDB_SESSION_ENDED = 115; |
| |
| // Android Profiler event |
| ANDROID_PROFILER = 116; |
| |
| // APK Analyzer Statistics |
| APK_ANALYZER_STATS = 117; |
| |
| // The user launched the test recorder to record a Robo bootstrap script. |
| TEST_RECORDER_RECORD_ROBO_SCRIPT = 118; |
| |
| // Instant Run Notification Tracking |
| INSTANT_RUN_PROMPT_FOR_APPLY_CHANGES_SHOWN = 119; |
| |
| // APK Main module imported for debugging |
| APK_DEBUG_IMPORT = 120; |
| |
| // Attach java sources for apk debuggging |
| APK_DEBUG_ATTACH_JAVA_SOURCES = 121; |
| |
| // Add debug symbols for apk debugging |
| APK_DEBUG_ADD_SYMBOLS = 122; |
| |
| // Select Path mappings for apk debugging |
| APK_DEBUG_SELECT_PATH_MAPPINGS = 123; |
| |
| // Layout Inspector event |
| LAYOUT_INSPECTOR_EVENT = 124; |
| |
| // Android Profiler database statistics |
| ANDROID_PROFILER_DB_STATS = 125; |
| |
| // Connection Assistant event |
| CONNECTION_ASSISTANT_EVENT = 126; |
| |
| // Out of Memory Dialog event |
| STUDIO_UI_OOM_DIALOG_EVENT = 127; |
| |
| // The event is related to CMake editing. |
| CMAKE_EDITING_EVENT = 128; |
| |
| // The event is related to C++ header file view in Android Project |
| CPP_HEADERS_VIEW_EVENT = 129; |
| |
| // The event is related to What's New Assistant |
| // Deprecated since 3.6.0.8, use WHATS_NEW_ASSISTANT_UPDATE_EVENT instead. |
| WHATS_NEW_ASSISTANT_EVENT = 130 [deprecated = true]; |
| |
| // Indexing operation event. |
| INTELLIJ_INDEXING_STATS = 131; |
| |
| // The event is related to a lint session |
| LINT_SESSION = 132; |
| |
| // The event is related to taking an action on a lint suggestion |
| LINT_ACTION = 133; |
| |
| // Events related to a “Run” in studio |
| STUDIO_RUN_EVENT = 134 [deprecated = true]; |
| |
| // The event is related to count files in a search scope |
| INTELLIJ_PROJECT_SIZE_STATS = 135; |
| |
| // The event is related to a tool window |
| STUDIO_TOOL_WINDOW_ACTION_STATS = 136; |
| |
| // The event is related to a JNI inspection |
| JNI_INSPECTION = 137; |
| |
| // The event is descibing user sentiment |
| USER_SENTIMENT = 138; |
| |
| // More events on the UI of Project Structure Dialog |
| PROJECT_STRUCTURE_DIALOG_APPLY = 139; |
| PROJECT_STRUCTURE_DIALOG_CANCEL = 140; |
| PROJECT_STRUCTURE_DIALOG_VARIABLES_ADD_SIMPLE = 141; |
| PROJECT_STRUCTURE_DIALOG_VARIABLES_ADD_LIST = 142; |
| PROJECT_STRUCTURE_DIALOG_VARIABLES_ADD_MAP = 143; |
| PROJECT_STRUCTURE_DIALOG_VARIABLES_REMOVE = 144; |
| PROJECT_STRUCTURE_DIALOG_VARIABLES_RENAME = 145; |
| PROJECT_STRUCTURE_DIALOG_VARIABLES_MODIFY_VALUE = 146; |
| PROJECT_STRUCTURE_DIALOG_MODULES_ADD = 147; |
| PROJECT_STRUCTURE_DIALOG_MODULES_REMOVE = 148; |
| PROJECT_STRUCTURE_DIALOG_MODULES_RENAME = 149; |
| PROJECT_STRUCTURE_DIALOG_MODULES_SIGNINGCONFIGS_ADD = 150; |
| PROJECT_STRUCTURE_DIALOG_MODULES_SIGNINGCONFIGS_REMOVE = 151; |
| PROJECT_STRUCTURE_DIALOG_MODULES_SIGNINGCONFIGS_RENAME = 152; |
| PROJECT_STRUCTURE_DIALOG_DEPENDENCIES_ADD_LIBRARY = 153; |
| PROJECT_STRUCTURE_DIALOG_DEPENDENCIES_ADD_MODULE = 154; |
| PROJECT_STRUCTURE_DIALOG_DEPENDENCIES_ADD_JAR = 155; |
| PROJECT_STRUCTURE_DIALOG_DEPENDENCIES_REMOVE = 156; |
| PROJECT_STRUCTURE_DIALOG_BUILTYPES_ADD = 157; |
| PROJECT_STRUCTURE_DIALOG_BUILTYPES_REMOVE = 158; |
| PROJECT_STRUCTURE_DIALOG_BUILTYPES_RENAME = 159; |
| PROJECT_STRUCTURE_DIALOG_FLAVORS_DIMENSION_ADD = 160; |
| PROJECT_STRUCTURE_DIALOG_FLAVORS_DIMENSION_REMOVE = 161; |
| PROJECT_STRUCTURE_DIALOG_FLAVORS_DIMENSION_RENAME = 162; |
| PROJECT_STRUCTURE_DIALOG_FLAVORS_PRODUCTFLAVOR_ADD = 163; |
| PROJECT_STRUCTURE_DIALOG_FLAVORS_PRODUCTFLAVOR_REMOVE = 164; |
| PROJECT_STRUCTURE_DIALOG_FLAVORS_PRODUCTFLAVOR_RENAME = 165; |
| PROJECT_STRUCTURE_DIALOG_UPDATE_LIBRARY_VERSION = 166; |
| |
| // Deploying and running apps from studio |
| RUN_EVENT = 167; |
| |
| // Studio's LowMemoryWatcher triggered |
| STUDIO_LOW_MEMORY_EVENT = 168; |
| |
| // Project Structure Dialog repository search events. |
| PROJECT_STRUCTURE_DIALOG_REPOSITORIES_SEARCH = 169; |
| |
| // Navigation Editor event |
| NAV_EDITOR_EVENT = 170; |
| |
| // User took an action on a dialog (open or close) |
| DIALOG_STATS = 171; |
| |
| // User took an action to invalidate caches |
| PROJECT_SYSTEM_INVALIDATE_CACHES = 172; |
| |
| // Performed an action with the Gradle Plugin Upgrade dialog |
| GRADLE_PLUGIN_UPGRADE_DIALOG = 173; |
| |
| // Data binding related metrics |
| DATA_BINDING = 174; |
| |
| // Typing latency statistics. |
| TYPING_LATENCY_STATS = 175; |
| |
| // Sync failure details reported to the user (previously reported as a |
| // GRADLE_SYNC_FAILURE). |
| GRADLE_SYNC_FAILURE_DETAILS = 176; |
| |
| // Sync issues reported to the user (after sync completed). |
| GRADLE_SYNC_ISSUES = 177; |
| |
| // Android Studio Patch Updater events |
| STUDIO_PATCH_UPDATER = 178; |
| |
| // Resource Manager events |
| RESOURCE_MANAGER = 179; |
| |
| // Info on which IDE plugins are enabled for the current session. |
| IDE_PLUGIN_INFO = 180; |
| |
| // Editor syntax highlighting statistics. |
| EDITOR_HIGHLIGHTING_STATS = 181; |
| |
| // Status of Windows Defender |
| WINDOWS_DEFENDER_STATUS = 182; |
| |
| // Memory settings configuration statistics |
| MEMORY_SETTINGS_EVENT = 183; |
| |
| // Studio update flow events |
| STUDIO_UPDATE_FLOW = 184; |
| |
| // Build output window statistics when build fails. |
| BUILD_OUTPUT_WINDOW_STATS = 185; |
| |
| // Stats about the use of the Android Gradle Plugin DSL |
| GRADLE_PLUGIN_DSL_USAGE_STATS = 186; |
| |
| // The event is related to What's New Assistant update flow |
| WHATS_NEW_ASSISTANT_UPDATE_EVENT = 188; |
| |
| // APK reload operation started |
| APK_DEBUG_RELOAD_START = 189; |
| |
| // APK reload finished without errors |
| APK_DEBUG_RELOAD_SUCCESS = 190; |
| |
| // Information about how long DefaultActivityLocator blocked on getting |
| // a list of activities from the merged manifest. |
| DEFAULT_ACTIVITY_LOCATOR_STATS = 191; |
| |
| // Motion Layout Editor event |
| MOTION_LAYOUT_EDITOR_EVENT = 192; |
| |
| // Opening the Compose sample project |
| COMPOSE_SAMPLE_EVENT = 193; |
| |
| // Importing a sample project from the sample browser UI |
| IMPORT_SAMPLE_EVENT = 194; |
| |
| // Dynamic layout inspector (layout inspector v2) event |
| DYNAMIC_LAYOUT_INSPECTOR_EVENT = 195; |
| |
| // Information on collected build attribution data and performance |
| BUILD_ATTRIBUTION_STATS = 196; |
| |
| // Editor code completion stats. |
| EDITOR_COMPLETION_STATS = 197; |
| |
| // Multi View Panel event |
| MULTI_VIEW_EVENT = 198; |
| |
| // Build Attribution ui event |
| BUILD_ATTRIBUTION_UI_EVENT = 199; |
| |
| VS_PLUGIN = 200; |
| |
| // The event related to help panels in design editor |
| DESIGN_EDITOR_HELP_PANEL_EVENT = 201; |
| |
| // Any event related to the app inspection tool window or any of its child |
| // inspector tabs. |
| APP_INSPECTION = 202; |
| |
| // ML model binding feature events |
| ML_MODEL_BINDING = 203; |
| |
| // Event related to Navigation Safe Args IDE support |
| NAV_SAFE_ARGS_EVENT = 205; |
| |
| // The event related to Dagger editor support. |
| DAGGER_EDITOR = 206; |
| |
| // The event related to test reporting UI. |
| PARALLEL_ANDROID_TEST_REPORT_UI = 207; |
| |
| // Event related to Apply Changes agent error logs. |
| APPLY_CHANGES_AGENT_ERROR = 208; |
| |
| GAME_TOOLS_PING = 209; |
| |
| AGDE_PING = 210; |
| |
| // Events related to Upgrade Assistant processing. |
| UPGRADE_ASSISTANT_COMPONENT_EVENT = 211; |
| UPGRADE_ASSISTANT_PROCESSOR_EVENT = 212; |
| |
| // A new file/project is created by the wizards based on a template. |
| WIZARD_TEMPLATES_USAGE = 213; |
| |
| // Interactive Preview event |
| INTERACTIVE_PREVIEW_EVENT = 214; |
| |
| // Event related to Compose animation tooling, e.g. animation inspector. |
| COMPOSE_ANIMATION_TOOLING = 215; |
| |
| // User clicked something in the Emulator UI. |
| EMULATOR_UI_EVENTS = 216; |
| |
| // Event related to a survey response |
| SURVEY_RESPONSE = 217; |
| |
| // Event related to deploying Compose previews. |
| COMPOSE_DEPLOY = 218; |
| |
| // Deprecated, use SUGGESTED_IMPORT_EVENT instead. |
| // Event related to auto-import support. |
| AUTO_IMPORT_EVENT = 219 [deprecated = true]; |
| |
| // Event related to file usage data |
| FILE_USAGE = 220; |
| |
| // Event related to live literals. |
| LIVE_LITERALS_EVENT = 221; |
| |
| // Event related to Non-Transitive R class migration. |
| MIGRATE_TO_NON_TRANSITIVE_R_CLASS = 222; |
| |
| // Event related to Android Test Retention |
| ANDROID_TEST_RETENTION_EVENT = 223; |
| |
| // Event related to suggested import support. |
| SUGGESTED_IMPORT_EVENT = 224; |
| |
| // Event related to IntelliJ collected VFS refresh |
| VFS_REFRESH = 225; |
| |
| // Events related to Bundle/APK Signing wizard |
| // Dialog is opened |
| SIGNING_WIZARD_OPEN = 226; |
| // Ok action was performed ("Finish" button pressed) |
| SIGNING_WIZARD_OK_ACTION = 227; |
| // Cancel action was performed ("Cancel" button is pressed or dialog closed) |
| SIGNING_WIZARD_CANCEL_ACTION = 228; |
| // Failed to sign Gradle project |
| SIGNING_WIZARD_GRADLE_SIGNING_FAILED = 229; |
| // Gradle project successfully signed |
| SIGNING_WIZARD_GRADLE_SIGNING_SUCCEEDED = 230; |
| // Failed to sign Intellij project |
| SIGNING_WIZARD_INTELLIJ_SIGNING_FAILED = 231; |
| // INTELLIJ project successfully signed |
| SIGNING_WIZARD_INTELLIJ_SIGNING_SUCCEEDED = 232; |
| |
| // File type information for a project |
| FILE_TYPE = 233; |
| |
| // Kotlin project information logged by IntelliJ |
| KOTLIN_PROJECT_CONFIGURATION = 234; |
| |
| // Event related to IntelliJ Run Start data being logged |
| RUN_START_DATA = 235; |
| |
| // Event related to IntelliJ Run Finish data being logged |
| RUN_FINISH_DATA = 236; |
| |
| // Event related to the device manager tool window, the replacement for the |
| // AVD manager |
| DEVICE_MANAGER = 237; |
| |
| // Event related to Wear OS emulator pairing assistant |
| WEAR_PAIRING = 238; |
| |
| // Event to report why Gradle JDK is invalid |
| GRADLE_JDK_INVALID = 239; |
| |
| // Event related to the device explorer tool |
| DEVICE_EXPLORER = 240; |
| |
| // Event related to user opting in to metrics |
| OPTIN_METRICS = 241; |
| |
| // Event related to user opting out of metrics |
| OPTOUT_METRICS = 242; |
| |
| // Event related to project Version Catalog usage detection |
| GRADLE_VERSION_CATALOG_DETECTOR = 243; |
| |
| // Event related to coroutine debugger |
| COROUTINE_DEBUGGER = 244; |
| |
| // Event related to usage of Splitting Tabs tool windows |
| SPLITTING_TABS_USAGE = 245; |
| |
| // Event related to usage of the Logcat tool window |
| LOGCAT_USAGE = 246; |
| |
| // OS-level metrics |
| OS_METRICS = 247; |
| |
| // Events related to Google Play SDK Index |
| // SDK Index was loaded correctly |
| SDK_INDEX_LOADED_CORRECTLY = 248; |
| // Error while reading SDK Index from cache or network |
| SDK_INDEX_CACHING_ERROR = 249; |
| // Error while reading SDK Index from default resource |
| SDK_INDEX_DEFAULT_DATA_ERROR = 250; |
| // Link provided by the SDK Index was used |
| SDK_INDEX_LINK_FOLLOWED = 251; |
| // Library has critical issues in the SDK Index |
| SDK_INDEX_LIBRARY_HAS_CRITICAL_ISSUES = 252; |
| // Library has is marked as outdated in the SDK Index |
| SDK_INDEX_LIBRARY_IS_OUTDATED = 253; |
| // Library has is marked as non compliant in the SDK Index |
| SDK_INDEX_LIBRARY_IS_NON_COMPLIANT = 254; |
| |
| // Event related to Pickers invoked from the Editor's gutter |
| EDITOR_PICKER = 255; |
| |
| // Event type used when raw_project_ids set |
| PROJECT_IDS = 256; |
| |
| // Event related to Compose MultiPreview |
| COMPOSE_MULTI_PREVIEW = 257; |
| |
| // Event related to a LiveEdit action |
| LIVE_EDIT_EVENT = 258; |
| |
| // User pressed stop button for configurations that run App Component |
| STOP_EVENT = 259; |
| |
| // App Quality Insights Event |
| APP_QUALITY_INSIGHTS_USAGE = 260; |
| |
| // Google Login plugin event |
| GOOGLE_LOGIN_EVENT = 261; |
| |
| // Event recording mirroring of a device in the Running Devices tool window |
| DEVICE_MIRRORING_SESSION = 262; |
| |
| // Event related to a Fast Preview action |
| FAST_PREVIEW_EVENT = 263; |
| |
| // Event containing a per-component memory usage report |
| MEMORY_USAGE_REPORT_EVENT = 264; |
| |
| // A sync between Android Studio and Gradle was cancelled. |
| GRADLE_SYNC_CANCELLED = 265; |
| |
| // Event containing latency stats for manifest merge run from the IDE |
| MANIFEST_MERGER_STATS = 266; |
| |
| // Event related to the usage of the threading agent |
| THREADING_AGENT_STATS = 267; |
| |
| // Event marking a change of view selected in the Project tool window |
| PROJECT_VIEW_SELECTION_CHANGE_EVENT = 268; |
| |
| // Event related to collection or analysis of client side heap reports |
| HEAP_REPORT_EVENT = 269; |
| |
| // Action taken by user from create diagnostic report dialog |
| CREATE_DIAGNOSTIC_REPORT_ACTION = 270; |
| |
| // Event when the AGP Upgrade Assistant CTA from an old AGP is dismissed |
| UPGRADE_ASSISTANT_CTA_OLD_AGP_DISMISSED = 271; |
| |
| // Event marking interaction with Direct Access |
| DIRECT_ACCESS_USAGE_EVENT = 272; |
| |
| // Event related to the usage of safe mode in Android Studio. |
| SAFE_MODE_STATS_EVENT = 273; |
| |
| // Event related to targetSdkVersion Upgrade Assistant |
| TSDKUA_EVENT = 274; |
| |
| // Event related to IntelliJ new UI state |
| INTELLIJ_NEW_UI_STATE_EVENT = 275; |
| |
| // Event related to kotlin gradle performance |
| KOTLIN_GRADLE_PERFORMANCE_EVENT = 276; |
| |
| // Event tracking user interactions with build output downloads info UI |
| BUILD_OUTPUT_DOWNLOADS_INFO_USER_INTERACTION = 277; |
| |
| // Event recording abnormal termination of the Screen Sharing Agent. |
| DEVICE_MIRRORING_ABNORMAL_AGENT_TERMINATION = 278; |
| |
| // Event related to system health |
| SYSTEM_HEALTH_EVENT = 279; |
| |
| // Event related to compose preview canvas |
| COMPOSE_PREVIEW_CANVAS_EVENT = 280; |
| |
| // Event related to ML based Code Completion |
| SML_COMPLETION_EVENT = 281; |
| |
| // Event related to ML based Code Fixing/Transformation |
| SML_CODE_TRANSFORMATION_EVENT = 282; |
| |
| // Event related to Studio Chat Bot |
| SML_CHATBOT_EVENT = 283; |
| |
| // Configuration settings for ML based features |
| SML_CONFIGURATION_EVENT = 284; |
| |
| // Event raised when user declines kotlin support for a project |
| KOTLIN_SUPPORT_DECLINED_EVENT = 285; |
| |
| // Event raised when user accepted to migrate Gradle JDK to local.properties |
| GRADLE_JDK_MIGRATE_TO_LOCAL_PROPERTIES_DIALOG_ACCEPTED = 286; |
| |
| // Event raised when user declined to migrate Gradle JDK to local.properties |
| GRADLE_JDK_MIGRATE_TO_LOCAL_PROPERTIES_DIALOG_CANCELED = 287; |
| |
| // Event related to screenshots taken of running devices |
| DEVICE_SCREENSHOT_EVENT = 288; |
| |
| // Event related to a notification being displayed to the user |
| EDITOR_NOTIFICATION = 289; |
| |
| // Event related to Compose Preview Lite Mode |
| COMPOSE_PREVIEW_LITE_MODE = 290; |
| |
| // Upgrade Android Studio dialog event |
| UPGRADE_ANDROID_STUDIO_DIALOG = 291; |
| |
| // Event related to the Debugger tool window |
| DEBUGGER_EVENT = 292; |
| |
| // Soong sync event |
| SOONG_SYNC_EVENT = 293; |
| |
| // Event related to the user toggling the new UI state |
| INTELLIJ_NEW_UI_SWITCH = 294; |
| |
| // Event related to essentials mode state changes |
| ESSENTIALS_MODE_EVENT = 295; |
| |
| // Event for links clicked in Lint tooltips. |
| LINT_TOOLTIP_LINK_EVENT = 296; |
| |
| // Event for Studio Bot aiexclude effects |
| SML_AI_EXCLUDE_EVENT = 297; |
| |
| // Event for IDevice interface usage |
| I_DEVICE_USAGE_EVENT = 298; |
| |
| // Event related to merged manifest view usage |
| MANIFEST_PANEL_EVENT = 299; |
| |
| // Event to report Gradle JDK configuration during sync |
| GRADLE_JDK_CONFIGURATION = 300; |
| |
| // Render Security manager event |
| RENDER_SECURITY_MANAGER_EVENT = 301; |
| |
| // Event related to the refresh process of a preview tool |
| PREVIEW_REFRESH_EVENT = 302; |
| |
| // Event related to Wear Health Services tool window |
| WEAR_HEALTH_SERVICES_TOOL_WINDOW_EVENT = 303; |
| |
| // Event for UiSettingsPanel in the Running Devices Tool Window. |
| UI_DEVICE_SETTINGS_EVENT = 304; |
| |
| // Event related to Adblib |
| ADB_USAGE_EVENT = 305; |
| |
| // Event related to geolocation checks for Studio Bot. |
| SML_GEOLOCATION_EVENT = 306; |
| |
| // Event related to Studio Bot completion request errors. |
| SML_COMPLETION_REQUEST_ERROR = 307; |
| |
| // Event fired every time Studio detects a new device (via adb) |
| ADB_DEVICE_CONNECTED = 308; |
| |
| // Event related to screenshot test with Compose Preview. |
| SCREENSHOT_TEST_COMPOSE_PREVIEW = 309; |
| |
| // Event related to test scenario generation. |
| TEST_SCENARIO_EVENT = 310; |
| |
| // ADB server state event |
| ADB_SERVER_STATE = 311; |
| |
| // Firebase management event |
| FIREBASE_MANAGEMENT_EVENT = 312; |
| } |
| |
| // Represents different Performance Monitoring types. |
| enum MonitorType { |
| UNKNOWN_MONITOR_TYPE = 0; |
| CPU = 1; |
| GPU = 2; |
| MEMORY = 3; |
| NETWORK = 4; |
| } |
| |
| // Represents different Performance Profiler Capture types. |
| enum ProfilerCaptureType { |
| UNKNOWN_PROFILER_CAPTURE_TYPE = 0; |
| ALLOCATION = 1; |
| FILE = 2; |
| GFX_TRACE = 3; |
| HEAP = 4; |
| SYSTEM_INFO = 5; |
| VM_TRACE = 6; |
| METHOD_TRACING = 7; |
| LAYOUT_INSPECTOR_SNAPSHOT = 8; |
| HIERARCHY_VIEW = 9; |
| } |
| |
| // Represents the different Run Configurations the debugger supports. |
| enum RunConfigurationType { |
| UNKNOWN_RUN_CONFIGURATION_TYPE = 0; |
| ANDROID = 1; |
| ANDROID_NATIVE = 2; |
| ANDROID_TEST = 3; |
| } |
| |
| // Represents the different debugger types supported. |
| enum DebuggerType { |
| UNKNOWN_DEBUGGER_TYPE = 0; |
| JAVA = 1; |
| HYBRID = 2; |
| NATIVE = 3; |
| } |
| |
| // Represents the different Google Developer Services that can be |
| // (semi-)automatically integrated into Android Applications. |
| enum DeveloperServiceKind { |
| UNKNOWN_DEVELOPER_SERVICE_KIND = 0; |
| GOOGLE_CLOUD_MESSAGING = 1; |
| AD_MOB = 2; |
| GOOGLE_SIGN_IN = 3; |
| GOOGLE_ANALYTICS = 4; |
| FIREBASE = 5; |
| REALTIME_DATABASE = 6; |
| AUTHENTICATION = 7; |
| CRASH_REPORTING = 8; |
| NOTIFICATIONS = 9; |
| REMOTE_CONFIG = 10; |
| STORAGE = 11; |
| APP_INVITES = 12; |
| DYNAMIC_LINKS = 13; |
| } |
| |
| // The various templates the template engine could be asked to render. |
| enum TemplateRenderer { |
| UNKNOWN_TEMPLATE_RENDERER = 0; |
| CUSTOM_TEMPLATE_RENDERER = 1; |
| ANDROID_MODULE = 2; |
| ANDROID_PROJECT = 3; |
| EMPTY_ACTIVITY = 4; |
| BLANK_ACTIVITY = 5; |
| LAYOUT_XML_FILE = 6; |
| FRAGMENT_BLANK = 7; |
| NAVIGATION_DRAWER_ACTIVITY = 8; |
| VALUES_XML_FILE = 9; |
| GOOGLE_MAPS_ACTIVITY = 10; |
| LOGIN_ACTIVITY = 11; |
| ASSETS_FOLDER = 12; |
| TABBED_ACTIVITY = 13; |
| SCROLLING_ACTIVITY = 14; |
| FULLSCREEN_ACTIVITY = 15; |
| SERVICE = 16; |
| JAVA_LIBRARY = 17; // corresponds to "Java or Kotlin Library" |
| SETTINGS_ACTIVITY = 18; |
| FRAGMENT_LIST = 19; |
| MASTER_DETAIL_FLOW = 20; |
| ANDROID_WEAR_MODULE = 21; |
| BROADCAST_RECEIVER = 22; |
| AIDL_FILE = 23; |
| INTENT_SERVICE = 24; |
| JNI_FOLDER = 25; |
| JAVA_FOLDER = 26; |
| CUSTOM_VIEW = 27; |
| ANDROID_TV_MODULE = 28; |
| GOOGLE_ADMOBS_ADS_ACTIVITY = 29; |
| ALWAYS_ON_WEAR_ACTIVITY = 30 [deprecated = true]; |
| RES_FOLDER = 31; |
| ANDROID_TV_ACTIVITY = 32; |
| BLANK_WEAR_ACTIVITY = 33; |
| BASIC_ACTIVITIY = 34; |
| APP_WIDGET = 35; |
| ANDROID_INSTANT_APP_PROJECT = 36 [deprecated = true]; |
| ANDROID_INSTANT_APP_MODULE = 37 [deprecated = true]; |
| ANDROID_INSTANT_APP_BUNDLE_PROJECT = 38 [deprecated = true]; |
| ANDROID_INSTANT_APP_DYNAMIC_MODULE = 39 [deprecated = true]; |
| BENCHMARK_LIBRARY_MODULE = 40; |
| FRAGMENT_FULLSCREEN = 41; |
| FRAGMENT_GOOGLE_ADMOB_ADS = 42; |
| FRAGMENT_GOOGLE_MAPS = 43; |
| FRAGMENT_LOGIN = 44; |
| FRAGMENT_MODAL_BOTTOM_SHEET = 45; |
| FRAGMENT_SCROLL = 46; |
| FRAGMENT_SETTINGS = 47; |
| FRAGMENT_VIEWMODEL = 48; |
| COMPOSE_EMPTY_ACTIVITY = 49; |
| ANDROID_LIBRARY = 50; |
| DYNAMIC_FEATURE_MODULE = 51; |
| INSTANT_DYNAMIC_FEATURE_MODULE = 52; |
| AUTOMOTIVE_MODULE = 53; |
| THINGS_MODULE = 54 [deprecated = true]; |
| AUTOMOTIVE_MEDIA_SERVICE = 55; |
| AUTOMOTIVE_MESSAGING_SERVICE = 56; |
| THINGS_ACTIVITY = 57 [deprecated = true]; |
| WATCH_GOOGLE_MAPS_ACTIVITY = 58; |
| WATCH_FACE = 59; |
| ML_MODEL_BINDING_IMPORT_WIZARD = 60; |
| ML_MODEL_BINDING_FEATURE_OFF_NOTIFICATION = 61; |
| ANDROID_NATIVE_MODULE = 62; |
| RESPONSIVE_ACTIVITY = 63; |
| MACROBENCHMARK_LIBRARY_MODULE = 64; |
| GOOGLE_PAY_ACTIVITY = 65; |
| WEAR_OS_COMPOSE_ACTIVITY = 66; |
| GOOGLE_WALLET_ACTIVITY = 67; |
| BASELINE_PROFILES_MODULE = 68; |
| EXPERIMENTAL_ACTIVITY = 69; |
| KOTLIN_MULTIPLATFORM_LIBRARY_MODULE = 70; |
| } |
| |
| // Wizard Templates Usage (New Project, New Module and New Component) |
| message TemplatesUsage { |
| // Rendered template component (eg Activity, Fragment, Service, etc) |
| optional TemplateComponent template_component = 1; |
| // Module used to generate code. Can be an existing or a new one. |
| optional TemplateModule template_module = 2; |
| // Project used to generate code. Can be an existing or a new one. |
| optional TemplateProject template_project = 3; |
| // Kotlin support information |
| optional KotlinSupport kotlin_support = 4; |
| |
| // The various template components (eg Activities, Fragments, Services, etc) |
| // the template engine could be asked to render, and what UI context that |
| // was used by the user to make the request (eg menu, New Project Wizard, |
| // etc) |
| message TemplateComponent { |
| // The different template component (eg Activity, Fragment, Service, etc) |
| // the template engine could be asked to render |
| optional TemplateType template_type = 1; |
| |
| // The UI context used by the user to make the request (eg menu, |
| // New Project Wizard, etc) |
| optional WizardUiContext wizard_ui_context = 2; |
| |
| // The different template components (eg Activities, Fragments, Services, |
| // etc) the template engine could be asked to render |
| // Next ID: 63 |
| enum TemplateType { |
| UNKNOWN_TEMPLATE = 0; |
| CUSTOM_TEMPLATE = 1; |
| NO_ACTIVITY = 2; |
| EMPTY_ACTIVITY = 3; |
| BASIC_ACTIVITY = 4; |
| NAVIGATION_DRAWER_ACTIVITY = 5; |
| LOGIN_ACTIVITY = 6; |
| TABBED_ACTIVITY = 7; |
| SCROLLING_ACTIVITY = 8; |
| FULLSCREEN_ACTIVITY = 9; |
| SETTINGS_ACTIVITY = 10; |
| PRIMARY_DETAIL_FLOW_ACTIVITY = 11; |
| COMPOSE_EMPTY_ACTIVITY = 12; |
| WEAR_GOOGLE_MAPS_ACTIVITY = 13; |
| WEAR_FACE_ACTIVITY = 14; |
| BLANK_WEAR_ACTIVITY = 15; |
| GOOGLE_MAPS_ACTIVITY = 16; |
| GOOGLE_ADMOBS_ADS_ACTIVITY = 17; |
| ANDROID_TV_EMPTY_ACTIVITY = 18; |
| THINGS_EMPTY_ACTIVITY = 19 [deprecated = true]; |
| VIEW_MODEL_ACTIVITY = 20; |
| BOTTOM_NAVIGATION_ACTIVITY = 21; |
| CPP_EMPTY_ACTIVITY = 22; |
| RESPONSIVE_ACTIVITY = 57; |
| GOOGLE_PAY_ACTIVITY = 58; |
| CPP_GAME_ACTIVITY = 60; |
| GOOGLE_WALLET_ACTIVITY = 61; |
| |
| FRAGMENT_LIST = 23; |
| FRAGMENT_BLANK = 24; |
| FRAGMENT_FULLSCREEN = 25; |
| FRAGMENT_GOOGLE_ADMOB_ADS = 26; |
| FRAGMENT_GOOGLE_MAPS = 27; |
| FRAGMENT_LOGIN = 28; |
| FRAGMENT_MODAL_BOTTOM_SHEET = 29; |
| FRAGMENT_SCROLL = 30; |
| FRAGMENT_SETTINGS = 31; |
| FRAGMENT_VIEW_MODEL = 32; |
| AUTOMOTIVE_MEDIA_SERVICE = 33; |
| AUTOMOTIVE_MESSAGING_SERVICE = 34; |
| |
| ASSETS_FOLDER = 35; |
| JNI_FOLDER = 36; |
| JAVA_FOLDER = 37; |
| RES_FOLDER = 38; |
| AIDL_FOLDER = 39; |
| FONT_FOLDER = 40; |
| RAW_RESOURCES_FOLDER = 41; |
| JAVA_RESOURCES_FOLDER = 42; |
| XML_RESOURCES_FOLDER = 43; |
| RENDER_SCRIPT_FOLDER = 44; |
| |
| AIDL_FILE = 45; |
| ANDROID_MANIFEST_FILE = 46; |
| APP_ACTIONS_XML_FILE = 47 [deprecated = true]; |
| LAYOUT_XML_FILE = 48; |
| VALUES_XML_FILE = 49; |
| SHORTCUTS_XML_FILE = 59; |
| |
| CUSTOM_VIEW = 50; |
| BROADCAST_RECEIVER = 51; |
| INTENT_SERVICE = 52; |
| APP_WIDGET = 53; |
| SERVICE = 54; |
| SLICE_PROVIDER = 55; |
| CONTENT_PROVIDER = 56; |
| EXPERIMENTAL_ACTIVITY = 62; |
| } |
| |
| // The UI context used by the user to make the Template render request |
| enum WizardUiContext { |
| UNKNOWN_UI_CONTEXT = 0; |
| NEW_PROJECT = 1; |
| NEW_MODULE = 2; |
| MENU_GALLERY = 3; |
| ACTIVITY_GALLERY = 4; |
| FRAGMENT_GALLERY = 5; |
| GENERATE_RECYCLER = 6; |
| } |
| } |
| |
| // Module used to generate code. Can be an existing or a new one. |
| message TemplateModule { |
| // The different Module Types that can be created. This information |
| // should be reliable to new Modules, but may not be possible to determine |
| // for existing ones. |
| optional ModuleType module_type = 1; |
| // Android Min SDK. |
| optional uint32 min_sdk = 2; |
| // Java bytecode level - Used for Android libraries |
| optional BytecodeLevel bytecode_level = 3; |
| |
| // All different Module Types that can be created. |
| enum ModuleType { |
| UNKNOWN = 0; |
| NOT_APPLICABLE = 1; |
| PHONE_TABLET = 2; |
| ANDROID_LIBRARY = 3; |
| DYNAMIC_FEATURE = 4; |
| INSTANT_DYNAMIC_FEATURE = 5; |
| AUTOMOTIVE = 6; |
| WEAR_OS = 7; |
| ANDROID_TV = 8; |
| ANDROID_THINGS = 9 [deprecated = true]; |
| IMPORT_GRADLE = 10; |
| IMPORT_ECLIPSE = 11; |
| IMPORT_JAR_AAR = 12; |
| JAVA_OR_KOTLIN_LIBRARY = 13; |
| BENCHMARK_LIBRARY = 14; |
| BASELINE_PROFILES = 15; |
| KOTLIN_MULTIPLATFORM_LIBRARY = 16; |
| } |
| |
| // Java byte code level |
| enum BytecodeLevel { |
| LEVEL_6 = 0; |
| LEVEL_7 = 1; |
| LEVEL_8 = 2; |
| } |
| } |
| |
| // Project used to generate code. Can be an existing or a new one. |
| message TemplateProject { |
| // True for old AppCompat projects. |
| optional bool uses_legacy_support = 1; |
| // Whether or not the project uses Kotlin build files ("build.gradle.kts") |
| optional bool uses_build_gradle_kts = 2; |
| } |
| } |
| |
| // Reasons Gradle sync failed. |
| enum GradleSyncFailure { |
| UNKNOWN_GRADLE_FAILURE = 0; |
| CONNECTION_DENIED = 1; |
| CLASS_NOT_FOUND = 2; |
| DSL_METHOD_NOT_FOUND = 3; |
| FAILED_TO_PARSE_SDK = 4; |
| METHOD_NOT_FOUND = 5; |
| MISSING_ANDROID_PLATFORM = 6; |
| MISSING_ANDROID_SUPPORT_REPO = 7; |
| MISSING_BUILD_TOOLS = 8; |
| OUT_OF_MEMORY = 9; |
| SDK_NOT_FOUND = 10; |
| UNKNOWN_HOST = 11; |
| UNSUPPORTED_ANDROID_MODEL_VERSION = 12; |
| UNSUPPORTED_GRADLE_VERSION = 13; |
| CANNOT_BE_CAST_TO = 14; |
| BROKEN_PIPE = 15; |
| CANNOT_OPEN_ZIP_FILE = 16; |
| OBJECT_STREAM_ERROR = 17; |
| NDK_INTEGRATION_DEPRECATED = 18; |
| SDK_BUILD_TOOLS_TOO_LOW = 19; |
| CACHED_DEPENDENCY_NOT_FOUND = 20; |
| UNEXPECTED_ERROR = 21; |
| GRADLE2_REQUIRED = 22; |
| CORRUPT_GRADLE_DEPENDENCY = 23; |
| INTERNET_CONNECTION_ERROR = 24; |
| // Failure when Studio does not support too old AGP. |
| OLD_ANDROID_PLUGIN = 25; |
| MISSING_CMAKE = 26; |
| NDK_NOT_CONFIGURED = 27; |
| FAILED_TO_INSTALL_NDK_BUNDLE = 28; |
| UNSUPPORTED_MODEL_VERSION = 29; |
| DAEMON_CONTEXT_MISMATCH = 30; |
| JAVA_HEAP_ERROR = 31; |
| JDK8_REQUIRED = 32; |
| GRADLE_DISTRIBUTION_INSTALL_ERROR = 33; |
| DISTRIBUTIONSHA256SUM_FOUND_IN_WRAPPER = 34; |
| GRADLE_JVM_NOT_COMPATIBLE_WITH_AGP = 35; |
| // Failure because older Studio does not support newer AGP. |
| ANDROID_PLUGIN_TOO_NEW = 36; |
| // Failure because Studio and AGP preview versions differ. |
| ANDROID_PLUGIN_VERSION_INCOMPATIBLE = 37; |
| // Failure because of multiple AGP versions detected in projects. |
| MULTIPLE_ANDROID_PLUGIN_VERSIONS = 38; |
| ANDROID_SYNC_NO_VALID_NATIVE_ABI_FOUND = 39; |
| ANDROID_SYNC_NO_VARIANTS_FOUND = 40; |
| ANDROID_SYNC_JDK_IMPORT_CHECK = 41; |
| // Next 2 are health check values helping to detect that some reasons remain |
| // unreported properly. Ideally counts of these should be next to 0. Report |
| // this when no specific value was reported but build issue was generated. |
| BUILD_ISSUE_CREATED_UNKNOWN_FAILURE = 42; |
| // Same as above but we also see it was generated by Android Studio code. |
| ANDROID_BUILD_ISSUE_CREATED_UNKNOWN_FAILURE = 43; |
| KTS_COMPILATION_ERROR = 44; |
| GROOVY_COMPILATION_ERROR = 45; |
| JAVA_COMPILATION_ERROR = 46; |
| INVALID_TOML_DEFINITION = 47; |
| } |
| |
| // IDE brand containing the android plugin |
| enum IdeBrand { |
| UNKNOWN_IDE_BRAND = 0; |
| ANDROID_STUDIO = 1; |
| ANDROID_STUDIO_WITH_BLAZE = 2; |
| INTELLIJ = 3; |
| // For the Toolkit preview build released at Google IO 2019 |
| ANDROID_STUDIO_TOOLKIT_2019_IO_PREVIEW = 4; |
| |
| GAME_TOOLS = 5; |
| |
| AGDE = 6; |
| // Android Studio for Platform (ASfP) - Public |
| ANDROID_STUDIO_FOR_PLATFORM = 7; |
| // Android Studio for Platform (ASfP) - Internal |
| ANDROID_STUDIO_FOR_PLATFORM_INTERNAL = 8; |
| } |
| |
| // Gradle sync issue type. |
| enum GradleSyncIssueType { |
| UNKNOWN_GRADLE_SYNC_ISSUE_TYPE = 0; |
| |
| TYPE_PLUGIN_OBSOLETE = 1; |
| TYPE_UNRESOLVED_DEPENDENCY = 2; |
| TYPE_DEPENDENCY_IS_APK = 3; |
| TYPE_DEPENDENCY_IS_APKLIB = 4; |
| TYPE_NON_JAR_LOCAL_DEP = 5; |
| TYPE_NON_JAR_PACKAGE_DEP = 6; |
| TYPE_NON_JAR_PROVIDED_DEP = 7; |
| TYPE_JAR_DEPEND_ON_AAR = 8; |
| |
| // Mismatch dependency version between tested and test app. Data is dep |
| // coordinate without the version (groupId:artifactId) |
| TYPE_MISMATCH_DEP = 9; |
| |
| TYPE_OPTIONAL_LIB_NOT_FOUND = 10; |
| |
| TYPE_JACK_IS_NOT_SUPPORTED = 11; |
| |
| TYPE_GRADLE_TOO_OLD = 12; |
| |
| TYPE_BUILD_TOOLS_TOO_LOW = 13; |
| |
| // Found dependency that's the maven published android.jar. Data is the |
| // maven artifact coordinates. |
| TYPE_DEPENDENCY_MAVEN_ANDROID = 14; |
| |
| // Found dependency that is known to be inside android.jar. Data is maven |
| // artifact coordinates. |
| TYPE_DEPENDENCY_INTERNAL_CONFLICT = 15; |
| |
| // Errors configuring NativeConfigValues for individual individual variants |
| TYPE_EXTERNAL_NATIVE_BUILD_CONFIGURATION = 16; |
| |
| // Errors configuring NativeConfigValues. There was a process exception. |
| // Data contains STDERR which should be interpreted by Android Studio. |
| TYPE_EXTERNAL_NATIVE_BUILD_PROCESS_EXCEPTION = 17; |
| |
| // Cannot use Java 8 Language features without Jack. |
| TYPE_JACK_REQUIRED_FOR_JAVA_8_LANGUAGE_FEATURES = 18; |
| |
| // A wearApp configuration was resolved and found more than one apk. Data is |
| // the configuration name. |
| TYPE_DEPENDENCY_WEAR_APK_TOO_MANY = 19; |
| |
| // A wearApp configuration was resolved and found an apk even though |
| // unbundled mode is on. |
| TYPE_DEPENDENCY_WEAR_APK_WITH_UNBUNDLED = 20; |
| |
| TYPE_JAR_DEPEND_ON_ATOM = 21; |
| |
| TYPE_AAR_DEPEND_ON_ATOM = 22; |
| |
| TYPE_ATOM_DEPENDENCY_PROVIDED = 23; |
| |
| // Indicates that a required SDK package was not installed. The data field |
| // contains the sdklib package ID of the missing package that the user |
| // should install. |
| TYPE_MISSING_SDK_PACKAGE = 24; |
| |
| // Indicates that the plugin requires a newer version of studio. Minimum |
| // version is passed in the data. |
| TYPE_STUDIO_TOO_OLD = 25; |
| |
| // Indicates that the module contains flavors but that no dimensions have |
| // been named. data is empty. |
| TYPE_UNNAMED_FLAVOR_DIMENSION = 26; |
| |
| // An incompatible plugin is used. |
| TYPE_INCOMPATIBLE_PLUGIN = 27; |
| |
| // Indicates that the project uses a deprecated DSL. |
| TYPE_DEPRECATED_DSL = 28; |
| |
| // Indicates that the project uses a deprecated configuration. |
| // This type is now replaced with TYPE_USING_DEPRECATED_CONFIGURATION |
| // because of an indexing issue in the past |
| // (see http://issuetracker.google.com/138278313). |
| TYPE_DEPRECATED_CONFIGURATION = 29 [deprecated = true]; |
| |
| // Indicates that the project uses a deprecated DSL value. |
| // This type is now replaced with TYPE_USING_DEPRECATED_DSL_VALUE |
| // because of an indexing issue in the past |
| // (see http://issuetracker.google.com/138278313). |
| TYPE_DEPRECATED_DSLVALUE = 30 [deprecated = true]; |
| |
| // Indicates that the project contains the min sdk in the android manifest |
| // file. |
| TYPE_MIN_SDK_VERSION_IN_MANIFEST = 31; |
| |
| // Indicates that the project contains the target sdk in the android |
| // manifest file. |
| TYPE_TARGET_SDK_VERSION_IN_MANIFEST = 32; |
| |
| // Indicated that an experimental gradle project option is used. |
| TYPE_UNSUPPORTED_PROJECT_OPTION_USE = 33; |
| |
| // Indicates that building the configuration rules for this project requires |
| // parsing the manifest file. |
| TYPE_MANIFEST_PARSED_DURING_CONFIGURATION = 34; |
| |
| // Indicates that the version of a third-party Gradle plugin (not the |
| // Android Gradle plugin) is not supported and needs to be updated. |
| TYPE_THIRD_PARTY_GRADLE_PLUGIN_TOO_OLD = 35; |
| |
| // Indicates that the signing configuration is declared in the |
| // dynamic-feature gradle file. This should only be declared in the |
| // application module, as dynamic-features use the base module's signing |
| // configuration, and this will be ignored. |
| TYPE_SIGNING_CONFIG_DECLARED_IN_DYNAMIC_FEATURE = 36; |
| |
| // Indicates that the SDK is missing or invalid, this can either be set in |
| // the ANDROID_SDK_ROOT environment variable or the projects |
| // local.properties files. |
| TYPE_SDK_NOT_SET = 37; |
| |
| // Indicates that the user has specified multiple default build types. |
| TYPE_AMBIGUOUS_BUILD_TYPE_DEFAULT = 38; |
| |
| // Indicates that the user has specified multiple default product flavors. |
| TYPE_AMBIGUOUS_PRODUCT_FLAVOR_DEFAULT = 39; |
| |
| // Indicates that the compileSdkVersion is missing. |
| TYPE_COMPILE_SDK_VERSION_NOT_SET = 40; |
| |
| // Indicates that the `android.useAndroidX` property must be enabled but is |
| // currently disabled. |
| TYPE_ANDROID_X_PROPERTY_NOT_ENABLED = 41; |
| |
| // Indicates that the project uses a deprecated configuration. |
| TYPE_USING_DEPRECATED_CONFIGURATION = 42; |
| |
| // Indicates that the project uses a deprecated DSL value. |
| TYPE_USING_DEPRECATED_DSL_VALUE = 43; |
| |
| // Generic build file issues with file/line number information |
| TYPE_BUILD_FILE_ISSUE = 44; |
| |
| // dynamic feature declared in base module does not exist |
| TYPE_UNKNOWN_FEATURE = 45; |
| |
| // Declared source sets is not actually used by a variant |
| TYPE_UNKNOWN_SOURCE_SET = 46; |
| |
| // Retro lambda plugin is present instead of using D8/R8 |
| TYPE_RETRO_LAMBDA_PRESENT = 47; |
| |
| TYPE_RES_SHRINKER_WITH_APP_BUNDLE = 48; |
| |
| TYPE_RES_SHRINKER_WITH_LIBRARY_MODULE = 49; |
| |
| TYPE_INVALID_JAVA8_FLAGS = 50; |
| |
| TYPE_MISSING_JAVA8_FLAG = 51; |
| |
| TYPE_EDIT_LOCKED_DSL_VALUE = 52; |
| |
| TYPE_MISSING_ANDROID_MANIFEST = 53; |
| |
| // JCenter Maven is deprecated and it should not be used in build scripts. |
| TYPE_JCENTER_IS_DEPRECATED = 54; |
| |
| // Java version used by AGP is too low. |
| TYPE_AGP_USED_JAVA_VERSION_TOO_LOW = 55; |
| |
| // An AGP upgrade is recommended to use this compile sdk version. |
| TYPE_COMPILE_SDK_VERSION_TOO_HIGH = 56; |
| |
| // A higher compileSdk is required for compilation. |
| TYPE_COMPILE_SDK_VERSION_TOO_LOW = 57; |
| |
| // Trying to read/write to a variant api property that will not be used as |
| // the feature using it is disabled. |
| TYPE_ACCESSING_DISABLED_FEATURE_VARIANT_API = 58; |
| |
| // Using the variant API to set the application ID to a dynamic value |
| TYPE_APPLICATION_ID_MUST_NOT_BE_DYNAMIC = 59; |
| |
| // Using the removed API. The support for the API was removed |
| // but API and associated types were left intact to not fail sync with |
| // ClassNotFoundException which would be confusing to users. |
| TYPE_REMOVED_API = 60; |
| |
| // KMP projects with java plugin creates incorrect sourceSets in IDE |
| TYPE_KMP_INCORRECT_PLATFORM_SOURCE_SET = 61; |
| |
| // Empty dimension results in no variant in IDE |
| TYPE_EMPTY_FLAVOR_DIMENSION = 62; |
| |
| // A sync issue type for exceptions that were converted to a sync issue. |
| TYPE_EXCEPTION = 63; |
| |
| // Indicates that the namespace is missing. |
| TYPE_NAMESPACE_NOT_SET = 64; |
| |
| // Inconsistent usage of build feature setting with regards to other DSL |
| // Settings or plugins applied |
| TYPE_INCONSISTENT_BUILD_FEATURE_SETTING = 65; |
| |
| // NOTE: When adding a new type here, increment the index by 1. This index |
| // may not be consistent with the corresponding value in the Android Gradle |
| // plugin (e.g., it could be higher by 1), because of an indexing issue in |
| // the past (see http://issuetracker.google.com/138278313). |
| } |
| |
| // Various quick-fixes that are offered to resolve sync issues. |
| enum GradleSyncQuickFix { |
| UNKNOWN_GRADLE_SYNC_QUICK_FIX = 0; |
| ADD_GOOGLE_MAVEN_REPOSITORY_HYPERLINK = 1; |
| BUILD_PROJECT_HYPERLINK = 2; |
| CREATE_GRADLE_WRAPPER_HYPERLINK = 3; |
| DISABLE_OFFLINE_MODE_HYPERLINK = 4; |
| DOWNLOAD_ANDROID_STUDIO_HYPERLINK = 5; |
| DOWNLOAD_JDK8_HYPERLINK = 6; |
| ENABLE_EMBEDDED_REPO_HYPERLINK = 7; |
| FILE_BUG_HYPERLINK = 8; |
| FIX_ANDROID_GRADLE_PLUGIN_VERSION_HYPERLINK = 9; |
| FIX_BUILD_TOOLS_VERSION_HYPERLINK = 10; |
| FIX_GRADLE_VERSION_IN_WRAPPER_HYPERLINK = 11; |
| INSTALL_ARTIFACT_HYPERLINK = 12; |
| INSTALL_BUILD_TOOLS_HYPERLINK = 13; |
| INSTALL_C_MAKE_HYPERLINK = 14; |
| INSTALL_NDK_HYPERLINK = 15; |
| INSTALL_PLATFORM_HYPERLINK = 16; |
| INSTALL_REPOSITORY_HYPERLINK = 17; |
| INSTALL_SDK_PACKAGE_HYPERLINK = 18; |
| INSTALL_SDK_TOOLS_HYPERLINK = 19; |
| OPEN_ANDROID_SDK_MANAGER_HYPERLINK = 20; |
| OPEN_BUILD_FILE_HYPERLINK = 21; |
| OPEN_FILE_HYPERLINK = 22; |
| OPEN_GRADLE_SETTINGS_HYPERLINK = 23; |
| OPEN_HTTP_SETTINGS_HYPERLINK = 24; |
| OPEN_PLUGIN_BUILD_FILE_HYPERLINK = 25; |
| OPEN_PROJECT_STRUCTURE_HYPERLINK = 26; |
| OPEN_URL_HYPERLINK = 27; |
| REMOVE_SDK_FROM_MANIFEST_HYPERLINK = 28; |
| SEARCH_IN_BUILD_FILES_HYPERLINK = 29; |
| SELECT_JDK_FROM_FILE_SYSTEM_HYPERLINK = 30; |
| SET_SDK_DIR_HYPERLINK = 31; |
| SET_USE_DEPRECATED_NDK_HYPERLINK = 32; |
| SHOW_DEPENDENCY_IN_PROJECT_STRUCTURE_HYPERLINK = 33; |
| SHOW_LOG_HYPERLINK = 34; |
| SHOW_SYNC_ISSUES_DETAILS_HYPERLINK = 35; |
| STOP_GRADLE_DAEMONS_HYPERLINK = 36; |
| SYNC_PROJECT_WITH_EXTRA_COMMAND_LINE_OPTIONS_HYPERLINK = 37; |
| TOGGLE_OFFLINE_MODE_HYPERLINK = 38; |
| UPDATE_PLUGIN_HYPERLINK = 39; |
| UPGRADE_APPENGINE_PLUGIN_VERSION_HYPERLINK = 40; |
| USE_CURRENTLY_RUNNING_JDK_HYPERLINK = 41; |
| USE_EMBEDDED_JDK_HYPERLINK = 42; |
| SET_NDK_DIR_HYPERLINK = 43; |
| SET_CMAKE_DIR_HYPERLINK = 44; |
| DELETE_FILE_HYPERLINK = 45; |
| REMOVE_DISTRIBUTIONSHA256SUM_FROM_WRAPPER_HYPERLINK = 46; |
| CONFIRM_DISTRIBUTIONSHA256SUM_FROM_WRAPPER_HYPERLINK = 47; |
| ENABLE_ANDROIDX_HYPERLINK = 48; |
| REMOVE_JCENTER_HYPERLINK = 49; |
| OPEN_UPGRADE_ASSISTANT_HYPERLINK = 50; |
| SUPPRESS_UNSUPPORTED_SDK_HYPERLINK = 51; |
| } |
| } |
| |
| // Describes a product, e.g. Android Studio or Emulator. |
| message ProductDetails { |
| // The product this event relates to. |
| optional ProductKind product = 1; |
| // The build ID of Android Studio. |
| optional string build = 2; // e.g. AI-141.2178183 |
| // The version of the product. |
| optional string version = 3; // e.g. 2.0.0.11 |
| // Historical: never used as it was not providing enough info. Use channel |
| // instead as it distinguishes between different kinds of preview releases. |
| optional bool preview = 4 [deprecated = true]; |
| // The CPU architecture the product is running on. |
| optional CpuArchitecture os_architecture = 5; |
| // The state in the software lifecycle of this product. |
| optional SoftwareLifeCycleChannel channel = 6; |
| // Set when ProductKind = STUDIO, the look and feel of the product. |
| optional IdeTheme theme = 7; |
| // Optional list of strings identifying experiments turned on for |
| // the installation of Android Studio this log is sent for. |
| // experiment_id Strings are generated by the Android Studio team and do not |
| // contain user data. |
| repeated string experiment_id = 8; |
| // The changelist used to generate the server flags for this installation |
| optional int64 server_flags_changelist = 9; |
| // Various states in the software life cycle this software could be in. |
| enum SoftwareLifeCycleChannel { |
| UNKNOWN_LIFE_CYCLE_CHANNEL = 0; |
| CANARY = 1; |
| DEV = 2; |
| BETA = 3; |
| STABLE = 4; |
| } |
| |
| // Describes the various Products related to Android Studio. |
| enum ProductKind { |
| UNKNOWN_PRODUCT = 0; |
| STUDIO = 1; |
| EMULATOR = 2; |
| GRADLE = 3; |
| DDMS = 4; |
| STUDIO_PATCH_UPDATER = 5; |
| VS_PLUGIN = 6; |
| GAME_TOOLS = 7; |
| } |
| |
| // Chip the software is running on. |
| enum CpuArchitecture { |
| UNKNOWN_CPU_ARCHITECTURE = 0; |
| X86 = 1; |
| X86_64 = 2; |
| ARM = 3; |
| X86_ON_ARM = 4; |
| } |
| |
| // The current theme set for Android Studio |
| enum IdeTheme { |
| UNKNOWN_THEME = 0; |
| DARCULA = 1; |
| LIGHT = 2; |
| LIGHT_MAC_NATIVE = 3; |
| LIGHT_WIN_NATIVE = 4; |
| GTK = 5; |
| HIGH_CONTRAST = 6; |
| CUSTOM = 7; |
| DARK = 8; |
| LIGHT_WITH_LIGHT_HEADER = 9; |
| } |
| } |
| |
| // Describes a emulator or physical Android Device. |
| message DeviceInfo { |
| // serial number of the device, salted & sha256ed on the client. |
| optional string anonymized_serial_number = 1; |
| |
| // Tags used to build the android version on this device. |
| // e.g. 'release-keys' or 'test-keys' or 'A100_V001' |
| optional string build_tags = 2; |
| |
| // Type of build this device is running. |
| // e.g. 'user' or 'userdebug' or 'eng' or 'alphabuild' |
| optional string build_type = 3; |
| |
| // Android version e.g. '5.1.1' |
| optional string build_version_release = 4; |
| |
| // Historic: doesn't support api levels for code names such as 'N'. |
| optional int32 build_api_level = 5 [deprecated = true]; |
| |
| // ABI of the device, e.g. 'armeabi-v7a' or 'x86' |
| optional ApplicationBinaryInterface cpu_abi = 6; |
| |
| // Device manufacturer, e.g. 'Motorola' or 'Samsung' |
| optional string manufacturer = 7; |
| |
| // Device model, e.g. 'Nexus 5' or 'GT-I9500'. |
| optional string model = 8; |
| |
| // What kind of device is this? Physicial/Emulator/Cloud etc... |
| optional DeviceType device_type = 9; |
| |
| // android api level e.g. '23' or 'N' |
| optional string build_api_level_full = 10; |
| |
| // Describes the type of mDNS connection (if any) |
| optional MdnsConnectionType mdns_connection_type = 11; |
| |
| // Set of characteristics obtained from "ro.build.characteristics" property |
| repeated string characteristics = 12; |
| |
| // ID of device provisioner plugin that created the device |
| optional string device_provisioner_id = 13; |
| |
| // A unique identifier of the connection session, i.e. a contiguous time |
| // period when the device was connected to Studio. The format and semantic |
| // meaning (if any) of the id is defined by the device provisioner plugin. |
| optional string connection_id = 14; |
| |
| // Describes tthe ABI of the device/emulator. |
| enum ApplicationBinaryInterface { |
| UNKNOWN_ABI = 0; |
| ARME_ABI_V7A = 1; |
| X86_ABI = 2; |
| ARM64_V8A_ABI = 3; |
| X86_64_ABI = 4; |
| ARME_ABI = 5; |
| MIPS_ABI = 6; |
| MIPS_R2_ABI = 7; |
| ARME_ABI_V6L = 8; |
| ARME_ABI_V6J = 9; |
| } |
| |
| // Describes the kind of device being deployed/tested on. |
| enum DeviceType { |
| UNKNOWN_DEVICE_TYPE = 0; |
| LOCAL_PHYSICAL = 1; |
| LOCAL_EMULATOR = 2; |
| CLOUD_EMULATOR = 3; |
| CLOUD_PHYSICAL = 4; |
| } |
| |
| // Describes the type of mDNS connection (if any) |
| enum MdnsConnectionType { |
| // Default value when the field has not been set. |
| UNKNOWN_MDNS_CONNECTION_TYPE = 0; |
| // The device connected *without* using mDNS. This is most likely USB, |
| // emulator or legacy TCP. |
| MDNS_NONE = 1; |
| // The device connected through mDNS, unencrypted. This should be very rare, |
| // as this is typically a connection from Android TV and WearOS when adb is |
| // started with ADB_MDNS_AUTO_CONNECT=1. |
| MDNS_AUTO_CONNECT_UNENCRYPTED = 2; |
| // The device connected through mDNS, using TLS. This most likely implies a |
| // Wi-Fi connection from a physical device (i.e. phone). |
| MDNS_AUTO_CONNECT_TLS = 3; |
| } |
| } |
| |
| message LldbSessionStartDetails { |
| // A UUID used to relate start and end of a native debug session. |
| optional string debug_session_id = 1; |
| // Debugger type for this session |
| optional AndroidStudioEvent.DebuggerType debugger_type = 2; |
| // Run configuration that was used to start this session. |
| optional AndroidStudioEvent.RunConfigurationType run_configuration_type = 3; |
| // True if debugger_type was chosen via the Auto debugger type. |
| optional bool auto_debugger = 4; |
| // Device on which the debuggable app is running. |
| optional DeviceInfo device_info = 5; |
| // Version of the native debugger. |
| optional string lldb_version = 6; |
| // Type of starter used to start this session. |
| optional StarterType starter_type = 7; |
| |
| // Describes session starter implementations. |
| enum StarterType { |
| UNKNOWN_STARTER_TYPE = 0; |
| ROOT_SHELL_STARTER_TYPE = 1; |
| RUN_AS_SHELL_STARTER_TYPE = 2; |
| INJECTOR_STARTER_TYPE = 3; |
| } |
| } |
| |
| message LldbSessionEndDetails { |
| // A UUID used to relate start and end of a native debug session. |
| optional string debug_session_id = 1; |
| // If the session ended with a failure, the related message. |
| // e.g. 'failed to get reply to handshake packet' |
| optional string failure_message = 2; |
| // Number of times the program was stopped by the debugger. |
| // Proxy for use of the session to compute error rates. |
| optional uint64 stops = 3; |
| // Number of errors encountered during the session. |
| // Includes both fatal and non-fatal errors. |
| optional uint64 errors = 4; |
| } |
| |
| // ML Model Binding feature metrics. |
| message MlModelBindingEvent { |
| // The detailed type of this event. |
| optional EventType event_type = 1; |
| // Related ML models information. |
| repeated ModelMetadata model_metadatas = 2; |
| // Set only when the event contains failure. |
| optional ErrorCode error_code = 3; |
| |
| enum EventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| // Import model from the model import wizard. |
| MODEL_IMPORT_FROM_WIZARD = 1; |
| // Move model from non-ml folder to ml folder via the "Move File" button |
| // in the notification banner. |
| MODEL_IMPORT_FROM_MOVE_FILE_BUTTON = 2; |
| // Open the model viewer. |
| MODEL_VIEWER_OPEN = 3; |
| // Generates light classes for model. |
| MODEL_API_GEN = 4; |
| } |
| |
| message ModelMetadata { |
| // Model file size in bytes. |
| optional uint64 file_size = 1; |
| // Model content hash that we use to identify popular public models. |
| optional string file_hash = 2; |
| // Whether or not the model has valid model format. |
| optional bool is_valid_model = 3; |
| // Whether or not the model has metadata included. |
| optional bool has_metadata = 4; |
| } |
| |
| enum ErrorCode { |
| UNKNOWN_ERROR_CODE = 0; |
| // The module's resource package name could not be determined. |
| MODULE_PACKAGE_NAME_NOT_FOUND = 1; |
| } |
| } |
| |
| message StudioExceptionDetails { |
| // hash of the exception stack trace |
| optional string hash = 1; |
| // summary of the exception stack trace |
| optional string summary = 2; |
| // number of crashes seen with this stack trace |
| optional uint32 count = 3; |
| } |
| |
| // Metrics on crashes in Android Studio. |
| message StudioCrash { |
| // number of actions since last crash report. |
| optional int64 actions = 1; |
| // number of exceptions since last crash report. |
| optional int64 exceptions = 2; |
| // number of crashes since last crash report. |
| optional int64 crashes = 3; |
| // number of exceptions from plugins bundled with Android Studio. |
| optional int64 bundled_plugin_exceptions = 4; |
| // number of exceptions from plugins not bundled with Android Studio. |
| optional int64 non_bundled_plugin_exceptions = 5; |
| // details on each exception |
| repeated StudioExceptionDetails details = 6; |
| } |
| |
| // Metrics for Icebox invocations. |
| message EmulatorIcebox { |
| // Message for starting an icebox command. |
| message StartIcebox { |
| // Maximum number of snapshots set by users. -1 for infinite snapshots; |
| optional int32 max_snapshot_number = 1; |
| } |
| // Message for taking a snapshot. |
| message TakeSnapshot { |
| // The snapshot. |
| optional EmulatorSnapshot snapshot = 1; |
| } |
| // Message for finishing an icebox command. |
| message FinishIcebox { |
| // Maximum number of snapshots set by users. -1 for infinite snapshots; |
| optional int32 max_snapshot_number = 1; |
| // Actual number of snapshots taken. |
| optional uint32 actual_snapshot_number = 2; |
| } |
| // Kind of command of this message. |
| oneof kind { |
| StartIcebox start_icebox = 1; |
| TakeSnapshot take_snapshot = 2; |
| FinishIcebox finish_icebox = 3; |
| } |
| } |
| |
| // Emulator guest image's GL info. |
| message EmulatorGuestGlInfo { |
| // GL Driver vendor. |
| optional string vendor = 1; |
| // GL Driver name. |
| optional string renderer = 2; |
| // GL Driver version number. |
| optional string version = 3; |
| } |
| |
| // Emulator: Host GPU info. |
| message EmulatorGpuInfo { |
| // Make of the Graphics card. |
| optional string make = 1; |
| // Model of the Graphics card. |
| optional string model = 2; |
| // Device id of the Graphics card. |
| optional string device_id = 3; |
| // Revision of the graphics card. |
| optional string revision_id = 4; |
| // Version of the graphics card driver. |
| optional string version = 5; |
| // Name of the graphics card driver. |
| optional string renderer = 6; |
| } |
| |
| // Set of emulator feature flags to report ones used during current session. |
| message EmulatorFeatures { |
| enum EmulatorLaunchType { |
| UNKNOWN_EMULATOR_LAUNCH_TYPE = 0; |
| CONTAINER = 1; |
| FUCHSIA = 2; |
| } |
| optional bool gps = 1; |
| optional bool sensors = 2; |
| optional bool virtualscene_config = 3; |
| // Use launch_type with "CONTAINER" instead. |
| optional bool container_launch = 4 [deprecated = true]; |
| optional EmulatorLaunchType launch_type = 5; |
| } |
| |
| // A description of a single file from an AVD. |
| message EmulatorAvdFile { |
| enum EmulatorAvdFileLocation { |
| UNKNOWN_EMULATOR_AVD_FILE_LOCATION = 0; |
| STANDARD = 1; |
| CUSTOM = 2; |
| } |
| |
| enum EmulatorAvdFileKind { |
| UNKNOWN_EMULATOR_AVD_FILE_KIND = 0; |
| KERNEL = 1; |
| SYSTEM = 2; |
| RAMDISK = 3; |
| } |
| |
| // Kind of the file this report is about. |
| optional EmulatorAvdFileKind kind = 1; |
| // Location of the file |
| optional EmulatorAvdFileLocation location = 2; |
| // Size |
| optional int64 size = 3; |
| // Creation datetime, as a UTC unix timestamp |
| optional int64 creation_timestamp = 4; |
| } |
| |
| // A description of an AVD Emulator has loaded. |
| message EmulatorAvdInfo { |
| enum EmulatorAvdImageKind { |
| UNKNOWN_EMULATOR_AVD_IMAGE_KIND = 0; |
| AOSP = 1; |
| GOOGLE = 2; |
| PLAY_STORE_KIND = 3; |
| AOSP_ATD = 4; |
| GOOGLE_ATD = 5; |
| } |
| // Other AVD properties that can combine with EmulatorAvdImageKind. |
| enum EmulatorAvdProperty { |
| UNKNOWN_EMULATOR_AVD_FLAG = 0; |
| PLAY_STORE_AVD = 1; |
| PHONE_AVD = 2; |
| TV_AVD = 3; |
| WEAR_AVD = 4; |
| ANDROIDAUTO_AVD = 5; |
| THING_AVD = 6; |
| TABLET_AVD = 7; |
| LAPTOP_AVD = 8; |
| DESKTOP_AVD = 9; |
| CHROMEOS = 10; |
| DEV_2024_AVD = 11; |
| // Next tag: 12 |
| } |
| enum EmulatorDeviceName { |
| UNKNOWN_EMULATOR_DEVICE_NAME = 0; |
| RESIZABLE = 1; |
| FOLDABLE_7_6_IN = 2; |
| SMALL_PHONE = 3; |
| MEDIUM_PHONE = 4; |
| MEDIUM_TABLET = 5; |
| PIXEL_C = 6; |
| PIXEL = 7; |
| PIXEL_XL = 8; |
| PIXEL_2 = 9; |
| PIXEL_2_XL = 10; |
| PIXEL_3 = 11; |
| PIXEL_3_XL = 12; |
| PIXEL_3A = 13; |
| PIXEL_3A_XL = 14; |
| PIXEL_4 = 15; |
| PIXEL_4_XL = 16; |
| PIXEL_4A = 17; |
| PIXEL_5 = 18; |
| PIXEL_6 = 19; |
| PIXEL_6_PRO = 20; |
| PIXEL_6A = 21; |
| PIXEL_7_PRO = 22; |
| PIXEL_7 = 23; |
| PIXEL_FOLD = 24; |
| PIXEL_TABLET = 25; |
| AUTOMOTIVE_1024P_LANDSCAPE = 26; |
| DESKTOP_SMALL = 27; |
| DESKTOP_MEDIUM = 28; |
| DESKTOP_LARGE = 29; |
| TV_4K = 30; |
| TV_1080P = 31; |
| TV_720P = 32; |
| WEAROS_LARGE_ROUND = 33; |
| WEAROS_SMALL_ROUND = 34; |
| WEAROS_RECT = 35; |
| WEAROS_SQUARE = 36; |
| PIXEL_7A = 37; |
| PIXEL_8 = 38; |
| PIXEL_8_PRO = 39; |
| PIXEL_8A = 40; |
| } |
| // Name of the AVD. Deprecated as it could potentially contain PII. |
| optional string name = 1 [deprecated = true]; |
| // Api level (23 = M, 24 = N, ...) |
| optional int64 api_level = 2; |
| // CPU architecture. |
| optional EmulatorDetails.GuestCpuArchitecture arch = 3; |
| // When was this AVD created, UTC Unix timestamp. |
| optional int64 creation_timestamp = 4; |
| // A build-id string from build.prop, something like 'sdk_google_phone 1231231 |
| // 10-11-2012'. |
| optional string build_id = 5; |
| // Unix build UTC timestamp. |
| optional int64 build_timestamp = 6; |
| // Kind of the image (e.g. pure AOSP, with Google APIs, etc.). |
| optional EmulatorAvdImageKind image_kind = 7; |
| // A collection of files in the AVD |
| // (usually 3 entries: kernel, system & ramdisk). |
| repeated EmulatorAvdFile files = 8; |
| // Collection of other AVD properties, mostly relating to flavor |
| // (TV vs phone vs Auto, etc) |
| repeated EmulatorAvdProperty properties = 9; |
| // Device name of the AVD (for example, PIXEL_2) |
| optional EmulatorDeviceName device_name = 10; |
| } |
| |
| // State of emulator feature flags, including |
| // which flags attempted to enable vs resulting set |
| // of enabled flags. |
| message EmulatorFeatureFlagState { |
| enum EmulatorFeatureFlag { |
| EMULATOR_FEATURE_FLAG_UNSPECIFIED = 0; |
| GL_PIPE_CHECKSUM = 1; |
| GRALLOC_SYNC = 2; |
| ENCRYPT_USER_DATA = 3; |
| INTEL_PERFORMANCE_MONITORING_UNIT = 4; |
| GL_ASYNC_SWAP = 5; |
| GLDMA = 6; |
| GLES_DYNAMIC_VERSION = 7; |
| FORCE_ANGLE = 8; |
| FORCE_SWIFTSHADER = 9; |
| WIFI = 10; |
| PLAY_STORE_IMAGE = 11; |
| LOGCAT_PIPE = 12; |
| // Hypervisor "allowed" flags (different from actual using) |
| HYPERV = 13; |
| HVF = 14; |
| KVM = 15; |
| HAXM = 16; |
| FAST_SNAPSHOT_V1 = 17; |
| SCREEN_RECORDING = 18; |
| VIRTUAL_SCENE = 19; |
| SYSTEM_AS_ROOT = 20; |
| DEPRECATED_IGNORE_HOST_OPENGL_ERRORS = 21 [deprecated = true]; |
| GENERIC_SNAPSHOTS_UI = 22; |
| ALLOW_SNAPSHOT_MIGRATION = 23; |
| DEPRECATED_GENERIC_INCREMENTAL_SNAPSHOT = 24 [deprecated = true]; |
| WINDOWS_ON_DEMAND_SNAPSHOT_LOAD = 25; |
| WINDOWS_HYPERVISOR_PLATFORM = 26; |
| KERNEL_DEVICE_TREE_BLOB_SUPPORT = 27; |
| LOCATION_UI_V2 = 28; |
| GENERIC_INCREMENTAL_SNAPSHOT = 29; |
| SNAPSHOT_ADB = 30; |
| OFFWORLD = 31; |
| OFFWORLD_DISABLE_SECURITY = 32; |
| QUICKBOOT_FILE_BACKED = 33; |
| REFCOUNT_PIPE = 34; |
| GLDMA2 = 35; |
| HOST_COMPOSITION_V1 = 36; |
| ON_DEMAND_SNAPSHOT_LOAD = 37; |
| WIFI_CONFIGURABLE = 38; |
| GL_DIRECT_MEM = 39; |
| VIDEO_PLAYBACK = 40; |
| VULKAN = 41; |
| MACRO_UI = 42; |
| CAR_VHAL_TABLE = 43; |
| DYNAMIC_PARTITION = 44; |
| IP_DISCONNECT_ON_LOAD = 45; |
| VULKAN_SNAPSHOTS = 46; |
| VIRTIO_INPUT = 47; |
| MULTI_DISPLAY = 48; |
| VULKAN_NULL_OPTIONAL_STRINGS = 49; |
| DYNAMIC_MEDIA_PROFILE = 50; |
| YUV420_888_to_NV21 = 51; |
| YUV_Cache = 52; |
| KEYCODE_FORWARDING = 53; |
| VULKAN_IGNORED_HANDLES = 54; |
| VIRTIO_GPU_NEXT = 55; |
| MAC80211HWSIM_USERSPACE_MANAGED = 56; |
| HAS_SHARED_SLOTS_HOST_MEMORY_ALLOCATOR = 57; |
| CAR_VHAL_REPLAY = 58; |
| CAR_ASSIST_BUTTON = 59; |
| HARDWARE_DECODER = 60; |
| NO_DELAY_CLOSE_COLOR_BUFFER = 61; |
| NO_DEVICE_FRAME = 62; |
| VIRTIO_GPU_NATIVE_SYNC = 63; |
| VIRTIO_WIFI = 64; |
| VULKAN_SHADER_FLOAT16_INT8 = 65; |
| CAR_ROTARY = 66; |
| MODEM_SIMULATOR = 67; |
| TV_REMOTE = 68; |
| NATIVE_TEXTURE_DECOMPRESSION = 69; |
| BPTC_TEXTURE_SUPPORT = 70; |
| GUEST_USES_ANGLE = 71; |
| VIRTIO_VSOCK_PIPE = 72; |
| S3TC_TEXTURE_SUPPORT = 73; |
| VIRTIO_MOUSE = 74; |
| VIRTCONSOLE_LOGCAT = 75; |
| VULKAN_QUEUE_SUBMIT_WITH_COMMANDS = 76; |
| VULKAN_BATCHED_DESCRIPTOR_SET_UPDATE = 77; |
| MINIGBM = 78; |
| NO_DRAW = 79; |
| GNSS_GRPC_V1 = 80; |
| MIGRATABLE_SNAPSHOT_SAVE = 81; |
| ANDROIDBOOT_PROPS = 82; |
| DEVICESKINOVERLAY = 83; |
| ANDROIDBOOT_PROPS2 = 84; |
| BLUETOOTH_EMULATION = 85; |
| DEVICESTATE_ON_BOOT = 86; |
| HWC_MULTI_CONFIGS = 87; |
| ASYNC_COMPOSE_SUPPORT = 88; |
| VIRTIO_SND_CARD = 89; |
| VIRTIO_TABLET = 90; |
| RGTC_TEXTURE_SUPPORT = 91 [deprecated = true]; |
| VULKAN_NATIVE_SWAPCHAIN = 92; |
| VIRTIO_GPU_FENCE_CONTEXTS = 93; |
| VSOCK_SNAPSHOT_LOAD_FIXED_B231345789 = 94; |
| VULKAN_ASTC_LDR_EMULATION = 95; |
| VULKAN_YCBCR_EMULATION = 96; |
| VULKAN_ETC2_EMULATION = 97; |
| EXTERNAL_BLOB = 98; |
| DOWNLOADABLE_SNAPSHOT = 99; |
| SYSTEM_BLOB = 100; |
| NETSIMWEBUI = 101; |
| NETSIMCLIUI = 102; |
| WIFIPACKETSTREAM = 103; |
| SUPPORT_PIXEL_FOLD = 104; |
| DEVICE_KEYBOARD_HAS_ASSIST_KEY = 105; |
| VULKAN_ALLOCATE_DEVICE_MEMORY_ONLY = 106; |
| VULKAN_ALLOCATE_HOST_MEMORY = 107; |
| DEVICE_KEYBOARD_QT_RAW_INPUT = 108; |
| UWB = 109; |
| UX_TEST_2024 = 110; |
| // Next tag: 111 |
| } |
| // Which features were enabled by default or through the server-side config. |
| repeated EmulatorFeatureFlag attempted_enabled_feature_flags = 1; |
| // Which features were enabled through user override. |
| repeated EmulatorFeatureFlag user_overridden_enabled_features = 2; |
| // Which features were disabled through user override. |
| repeated EmulatorFeatureFlag user_overridden_disabled_features = 3; |
| // Which features ended up being enabled overall. |
| repeated EmulatorFeatureFlag resulting_enabled_features = 4; |
| // Next tag: 5 |
| } |
| |
| // RAM usage info for the emulator, in bytes. |
| message EmulatorMemoryUsage { |
| optional uint64 resident_memory = 1; |
| optional uint64 resident_memory_max = 2; |
| optional uint64 virtual_memory = 3; |
| optional uint64 virtual_memory_max = 4; |
| optional uint64 total_phys_memory = 5; |
| optional uint64 total_page_file = 6; |
| optional uint64 total_guest_memory = 7; |
| } |
| |
| // An enum representing all possible snapshot properties (bit flags). |
| enum EmulatorSnapshotFlags { |
| // Default, no special properties. |
| SNAPSHOT_FLAGS_NONE = 0; |
| // RAM is compressed in this snapshot. |
| SNAPSHOT_FLAGS_RAM_COMPRESSED_BIT = 1; |
| // Textures are compressed in this snapshot. |
| SNAPSHOT_FLAGS_TEXTURES_COMPRESSED_BIT = 2; |
| // Hard disk drive was used. |
| SNAPSHOT_FLAGS_HDD_BIT = 3; |
| } |
| |
| // Generic snapshot save states. Distinguished |
| // from Quickboot save states. |
| enum EmulatorSnapshotSaveState { |
| // Successful saving. |
| EMULATOR_SNAPSHOT_SAVE_SUCCEEDED_NORMAL = 0; |
| // Generic failure when saving state. |
| EMULATOR_SNAPSHOT_SAVE_FAILED = 1; |
| // Saving skipped: not supported in current configuration. |
| EMULATOR_SNAPSHOT_SAVE_SKIPPED_UNSUPPORTED = 2; |
| // Saving skipped: Not booted yet. |
| EMULATOR_SNAPSHOT_SAVE_SKIPPED_NOT_BOOTED = 3; |
| // Saving skipped: No snapshot name given. |
| EMULATOR_SNAPSHOT_SAVE_SKIPPED_NO_SNAPSHOT = 4; |
| // Saving skipped: Disk under pressure. |
| EMULATOR_SNAPSHOT_SAVE_SKIPPED_DISK_PRESSURE = 5; |
| // Next tag: 6 |
| } |
| |
| // Generic snapshot load states. Distinguished |
| // from Quickboot load states. |
| enum EmulatorSnapshotLoadState { |
| // Successful load. |
| EMULATOR_SNAPSHOT_LOAD_SUCCEEDED_NORMAL = 0; |
| // Generic failure when loading state. |
| EMULATOR_SNAPSHOT_LOAD_FAILED = 1; |
| // Loading snapshots not supported in current configuration. |
| EMULATOR_SNAPSHOT_LOAD_SKIPPED_UNSUPPORTED = 2; |
| // Loading snapshot failed because it doesn't exist. |
| EMULATOR_SNAPSHOT_LOAD_NO_SNAPSHOT = 3; |
| // Loading snapshot failed because the snapshot is too old. |
| EMULATOR_SNAPSHOT_LOAD_OLD_SNAPSHOT = 4; |
| // The snapshot load hung. |
| EMULATOR_SNAPSHOT_LOAD_HUNG = 5; |
| } |
| |
| // Detailed lists of snapshot operation failure reasons. |
| // Shared between load and save operations. |
| enum EmulatorSnapshotFailureReason { |
| EMULATOR_SNAPSHOT_FAILURE_REASON_UNSPECIFIED = 0; |
| |
| EMULATOR_SNAPSHOT_FAILURE_REASON_CORRUPTED_DATA = 1; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_NO_SNAPSHOT_PB = 2; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_BAD_SNAPSHOT_PB = 3; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_INCOMPATIBLE_VERSION = 4; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_NO_RAM_FILE = 5; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_NO_TEXTURES_FILE = 6; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_SNAPSHOTS_NOT_SUPPORTED = 7; |
| |
| // Next unrecoverable error here: 8 |
| |
| EMULATOR_SNAPSHOT_FAILURE_REASON_UNRECOVERABLE_ERROR_LIMIT = 10000; |
| |
| EMULATOR_SNAPSHOT_FAILURE_REASON_NO_SNAPSHOT_IN_IMAGE = 10001; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_CONFIG_MISMATCH_HOST_HYPERVISOR = 10002; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_CONFIG_MISMATCH_HOST_GPU = 10003; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_CONFIG_MISMATCH_RENDERER = 10004; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_CONFIG_MISMATCH_FEATURES = 10005; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_CONFIG_MISMATCH_AVD = 10006; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_SYSTEM_IMAGE_CHANGED = 10007; |
| |
| // Next validation error here: here: 10008 |
| |
| EMULATOR_SNAPSHOT_FAILURE_REASON_VALIDATION_ERROR_LIMIT = 20000; |
| |
| EMULATOR_SNAPSHOT_FAILURE_REASON_INTERNAL_ERROR = 20001; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_EMULATION_ENGINE_FAILED = 20002; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_RAM_FAILED = 20003; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_TEXTURES_FAILED = 20004; |
| EMULATOR_SNAPSHOT_FAILURE_REASON_ADB_OFFLINE = 20005; |
| |
| // Next other kind of error here: 20006 |
| |
| EMULATOR_SNAPSHOT_FAILURE_REASON_IN_PROGRESS_LIMIT = 30000; |
| |
| // Next new type of error here: 30001 |
| } |
| |
| // Emulator snapshot description. |
| message EmulatorSnapshot { |
| // Anonymized snapshot name (SHA256 + salted). |
| optional string name = 1; |
| // A combination of EmulatorSnapshotFlags describing the snapshot. |
| optional int32 flags = 2; |
| // Total size on disk, in bytes. |
| optional int64 size_bytes = 3; |
| // Snapshot save/load states. |
| optional EmulatorSnapshotSaveState save_state = 4; |
| optional EmulatorSnapshotLoadState load_state = 5; |
| // Detailed reason for non-success of snapshot load. |
| optional EmulatorSnapshotFailureReason load_failure_reason = 6; |
| // Detailed reason for non-success of snapshot save. |
| optional EmulatorSnapshotFailureReason save_failure_reason = 7; |
| // Whether or not it was lazy loaded. |
| optional bool lazy_loaded = 8; |
| // Whether or not it was incrementally saved. |
| optional bool incrementally_saved = 9; |
| // Size of RAM (possibly incl. incremental / compression) |
| optional int64 ram_size_bytes = 10; |
| // Size of textures (possibly incl. incremental / compression) |
| optional int64 textures_size_bytes = 11; |
| // Duration of load / save (total). |
| optional uint64 load_duration_ms = 12; |
| optional uint64 save_duration_ms = 13; |
| // Duration of load / save (ram). |
| optional uint64 ram_load_duration_ms = 14; |
| optional uint64 ram_save_duration_ms = 15; |
| // Duration of load / save (textures). |
| optional uint64 textures_load_duration_ms = 16; |
| optional uint64 textures_save_duration_ms = 17; |
| // Next tag: 18 |
| } |
| |
| // Description of emulator's quickboot load. |
| message EmulatorQuickbootLoad { |
| // List of possible states of a load operation. |
| enum EmulatorQuickbootLoadState { |
| // Quickboot succeeded. |
| EMULATOR_QUICKBOOT_LOAD_SUCCEEDED = 0; |
| // There was no snapshot for a quickboot load. |
| EMULATOR_QUICKBOOT_LOAD_NO_SNAPSHOT = 1; |
| // Generic failure during load. |
| EMULATOR_QUICKBOOT_LOAD_FAILED = 2; |
| // Guest hung after loading a quickboot snapshot. |
| EMULATOR_QUICKBOOT_LOAD_HUNG = 3; |
| // Performed a cold boot because of feature control settings. |
| EMULATOR_QUICKBOOT_LOAD_COLD_FEATURE = 4; |
| // Performed a cold boot because of command line flag. |
| EMULATOR_QUICKBOOT_LOAD_COLD_CMDLINE = 5; |
| // Performed a cold boot because of AVD configuration. |
| EMULATOR_QUICKBOOT_LOAD_COLD_AVD = 6; |
| // Performed a cold boot because quickboot is not supported in the current |
| // configuration. |
| EMULATOR_QUICKBOOT_LOAD_COLD_UNSUPPORTED = 7; |
| // Specified snapshot is too old for loading, fallback to cold boot. |
| EMULATOR_QUICKBOOT_LOAD_COLD_OLD_SNAPSHOT = 8; |
| } |
| |
| // The state of the quickboot load operation. |
| optional EmulatorQuickbootLoadState state = 1; |
| // How long it took, milliseconds. |
| optional uint64 duration_ms = 2; |
| // Information about loaded snapshot. |
| optional EmulatorSnapshot snapshot = 3; |
| // Flag is set when on demand RAM loading was enabled for the load. |
| optional bool on_demand_ram_enabled = 4; |
| // ADB connection retries. |
| optional uint32 adb_connection_retries = 6; |
| // Next tag: 7 |
| } |
| |
| // Description of emulator's quickboot saving. |
| message EmulatorQuickbootSave { |
| // List of possible states of a save operation. |
| enum EmulatorQuickbootSaveState { |
| // Successful saving. |
| EMULATOR_QUICKBOOT_SAVE_SUCCEEDED = 0; |
| // Generic failure when saving state. |
| EMULATOR_QUICKBOOT_SAVE_FAILED = 1; |
| // Saving disabled: feature control. |
| EMULATOR_QUICKBOOT_SAVE_DISABLED_FEATURE = 2; |
| // Saving disabled: command line argument. |
| EMULATOR_QUICKBOOT_SAVE_DISABLED_CMDLINE = 3; |
| // Saving disabled: AVD configuration. |
| EMULATOR_QUICKBOOT_SAVE_DISABLED_AVD = 4; |
| // Saving skipped: not supported in current configuration. |
| EMULATOR_QUICKBOOT_SAVE_SKIPPED_UNSUPPORTED = 5; |
| // Saving skipped: too low guest uptime. |
| EMULATOR_QUICKBOOT_SAVE_SKIPPED_LOW_UPTIME = 6; |
| // Saving skipped: Used the UI to skip saving. |
| EMULATOR_QUICKBOOT_SAVE_DISABLED_UI = 7; |
| // Saving skipped: Not booted yet. |
| EMULATOR_QUICKBOOT_SAVE_SKIPPED_NOT_BOOTED = 8; |
| } |
| // The state of the quickboot save operation. |
| optional EmulatorQuickbootSaveState state = 1; |
| // How long it took, milliseconds. |
| optional uint64 duration_ms = 2; |
| // Information about the saved snapshot. |
| optional EmulatorSnapshot snapshot = 3; |
| // What was the guest session uptime at the time of saving. |
| optional uint64 sesion_uptime_ms = 4; |
| } |
| |
| // Track whether a GLES1 command is used or not |
| message EmulatorGLEScmUsages { |
| // Has the client create any GLES1 contexts |
| optional bool is_used = 1; |
| // Track glLight{f,fv,x,xv} command calls |
| optional bool light = 2; |
| // Track glTexGen{f,fv,x,xv,i,iv}OES command calls |
| optional bool tex_gen = 3; |
| } |
| |
| // Track whether a GLES3.0 command is used or not |
| message EmulatorGLESv30Usages { |
| // Has the client create any GLES3 contexts |
| optional bool is_used = 1; |
| // Track glFenceSync command calls |
| optional bool fence_sync = 2; |
| // Track glFramebufferTextureLayer command calls |
| optional bool framebuffer_texture_layer = 3; |
| // Track glRenderbufferStorageMultisample command calls |
| optional bool renderbuffer_storage_multisample = 4; |
| // Track glGenTransformFeedbacks command calls |
| optional bool gen_transform_feedbacks = 5; |
| // Track glBeginQuery command calls |
| optional bool begin_query = 6; |
| } |
| |
| // Track whether a GLES command is used or not |
| message EmulatorGLESUsages { |
| // GLES 1 usage report |
| optional EmulatorGLEScmUsages gles_1_usages = 1; |
| // GLES 3.0 usage report |
| optional EmulatorGLESv30Usages gles_3_0_usages = 2; |
| } |
| |
| // Per-session counts of snapshot UI interactions. |
| message EmulatorSnapshotUICounts { |
| // Quickboot selection for exit behavior |
| optional uint32 quickboot_selection_yes = 1; |
| optional uint32 quickboot_selection_no = 2; |
| optional uint32 quickboot_selection_ask = 3; |
| // Next for quickboot selection: 4 |
| |
| // Ask dialog |
| optional uint32 quickboot_ask_canceled = 10; |
| optional uint32 quickboot_ask_yes = 11; |
| optional uint32 quickboot_ask_no = 12; |
| optional uint32 quickboot_ask_total_time_ms = 13; |
| // Next for ask dialog: 14 |
| |
| // Quickboot "save now" metrics |
| optional uint32 quickboot_save_now = 100; |
| // Next for "save now": 101 |
| |
| // Generic snapshot dialog |
| optional uint32 generic_save = 1000; |
| optional uint32 generic_load = 1001; |
| optional uint32 generic_delete = 1002; |
| optional uint32 generic_clone = 1003; |
| optional uint32 generic_edit = 1004; |
| optional uint32 generic_edited_name = 1005; |
| optional uint32 generic_edited_description = 1006; |
| optional uint32 generic_export = 1007; |
| optional uint32 generic_import = 1008; |
| optional uint32 generic_flat_view = 1009; |
| optional uint32 generic_tree_view = 1010; |
| optional uint32 generic_total_time_flat_view_ms = 1011; |
| optional uint32 generic_total_time_tree_view_ms = 1012; |
| optional uint32 generic_total_time_ms = 1013; |
| // Next for generic snapshot dialog: 1014 |
| } |
| |
| // Metrics on camera usage. |
| message EmulatorCameraSession { |
| // List of possible camera types. |
| enum EmulatorCameraType { |
| // Unspecified camera source. |
| EMULATOR_CAMERA_TYPE_UNSPECIFIED = 0; |
| // Camera source is the host's webcam. |
| EMULATOR_CAMERA_TYPE_WEBCAM = 1; |
| // Camera source is the virtual scene camera. |
| EMULATOR_CAMERA_TYPE_VIRTUAL_SCENE = 2; |
| // Camera source is the video playback camera. |
| EMULATOR_CAMERA_TYPE_VIDEO_PLAYBACK = 3; |
| } |
| |
| // List of possible camera directions. |
| enum EmulatorCameraDirection { |
| // Unspecified direction. |
| EMULATOR_CAMERA_DIRECTION_UNSPECIFIED = 0; |
| // Back-facing camera. |
| EMULATOR_CAMERA_DIRECTION_BACK = 1; |
| // Front-facing camera. |
| EMULATOR_CAMERA_DIRECTION_FRONT = 2; |
| } |
| |
| // Camera start result, successful values are positive, failures are negative. |
| enum EmulatorCameraStartResult { |
| // Camera was started successfully. |
| EMULATOR_CAMERA_START_SUCCESS = 0; |
| // The camera was already started. |
| EMULATOR_CAMERA_START_ALREADY_STARTED = 1; |
| |
| // Failures. |
| // Camera start failed with an unspecified error. |
| EMULATOR_CAMERA_START_FAILED = -1; |
| // The camera was already started, but the parameters don't match. |
| EMULATOR_CAMERA_START_PARAMETER_MISMATCH = -2; |
| // The requested pixel format is unknown. |
| EMULATOR_CAMERA_START_UNKNOWN_PIXEL_FORMAT = -3; |
| // No pixel conversion available. |
| EMULATOR_CAMERA_START_NO_PIXEL_CONVERSION = -4; |
| // Out of memory when starting the camera. |
| EMULATOR_CAMERA_START_OUT_OF_MEMORY = -5; |
| } |
| |
| // The camera source used for the camera session. |
| optional EmulatorCameraType type = 1; |
| // The camera direction. |
| optional EmulatorCameraDirection direction = 2; |
| |
| // Width of the camera frame in pixels. |
| optional uint32 width = 3; |
| // Height of the camera frame in pixels. |
| optional uint32 height = 4; |
| // FOURCC pixel format requested. |
| optional fixed32 pixel_format = 5; |
| |
| // Camera start result. |
| optional EmulatorCameraStartResult start_result = 6; |
| // How long the camera session took to initialize. |
| optional uint64 startup_time_ms = 7; |
| |
| // How long the session was running, in milliseconds. |
| optional uint64 duration_ms = 8; |
| // Average framerate of the camera. |
| optional double average_framerate = 9; |
| |
| // set when type = EMULATOR_CAMERA_TYPE_VIRTUAL_SCENE |
| // Name of the virtual scene that is loaded. |
| optional string virtual_scene_name = 10; |
| } |
| |
| // Metrics for virtual scene camera sessions. |
| message EmulatorVirtualSceneSession { |
| // How long the session was running, in milliseconds. |
| optional uint64 duration_ms = 1; |
| |
| // Minimum sensor update delay in milliseconds. |
| optional uint32 min_sensor_delay_ms = 2; |
| // Total tap count when the camera is running. |
| optional uint32 tap_count = 3; |
| // The number of times the orientation changed during the session. |
| optional uint32 orientation_change_count = 4; |
| // Whether the virtual sensors window was visible at any point during the |
| // session. |
| optional bool virtual_sensors_visible = 5; |
| // How many interactions were performed on the virtual sensors page. |
| optional uint32 virtual_sensors_interaction_count = 6; |
| |
| // Invocation count of WASD/Mouselook hotkey. |
| optional uint32 hotkey_invoke_count = 7; |
| // Total time the user was in WASD/Mouselook mode during this session. |
| optional uint64 hotkey_duration_ms = 8; |
| // Taps shortly after a hotkey invoke, to determine how much the user |
| // alternates between modes to tap. |
| optional uint32 taps_after_hotkey_invoke = 9; |
| // Total rotation performed in the virtual scene. |
| optional double total_rotation_radians = 10; |
| // Total translation performed in the virtual scene. |
| optional double total_translation_meters = 11; |
| } |
| |
| // Per-session metrics for automation/macros. |
| message EmulatorAutomation { |
| // List of possible preset macros played. |
| enum EmulatorAutomationPresetMacro { |
| // Reset position. |
| EMULATOR_AUTOMATION_PRESET_MACRO_RESET = 0; |
| // Track horizontal plane. |
| EMULATOR_AUTOMATION_PRESET_MACRO_TRACK_HORIZONTAL = 1; |
| // Track vertical plane. |
| EMULATOR_AUTOMATION_PRESET_MACRO_TRACK_VERTICAL = 2; |
| // Walk to image room. |
| EMULATOR_AUTOMATION_PRESET_MACRO_IMAGE_ROOM = 3; |
| } |
| // Total sum of time of macros playing -> Sum(Stop-Play). |
| optional uint64 total_duration_ms = 1; |
| // Total amount of times macros played. |
| optional uint64 macro_playback_count = 2; |
| // Total amount of times previews replayed. |
| optional uint64 preview_replay_count = 3; |
| // Played preset-macros. |
| repeated EmulatorAutomationPresetMacro played_preset_macro = 4; |
| // Total amount of macros recorded. |
| optional uint64 record_macro_count = 5; |
| // Total amount of macros deleted. |
| optional uint64 delete_macro_count = 6; |
| // Total amount of macros edited. |
| optional uint64 edit_macro_count = 7; |
| } |
| |
| // Metrics for multi-display details |
| message EmulatorMultiDisplay { |
| // Count for add/modify/delete displays |
| optional uint32 apply_count = 1; |
| // Max displays created |
| optional uint32 max_displays = 2; |
| } |
| |
| // Metrics for resizable display details |
| message EmulatorResizableDisplay { |
| // Counts for different display size types |
| optional uint32 display_phone_count = 1; |
| optional uint32 display_foldable_count = 2; |
| optional uint32 display_tablet_count = 3; |
| optional uint32 display_desktop_count = 4; |
| } |
| |
| // Metrics for LocationV2 |
| message EmulatorLocationV2 { |
| // Count for "Set Location" button |
| optional uint32 set_loc_count = 1; |
| // Count for "Play route" button |
| optional uint32 play_route_count = 2; |
| } |
| |
| // Metrics for streaming screenshots. |
| message EmulatorStreamScreenshot { |
| // Size of a single screenshot in bytes, w * h * bpp |
| optional uint32 size = 1; |
| // This gives us an idea of delivery delay we are experiencing |
| // from the emulators perspective, and frames delivered. |
| optional PercentileEstimator delivery_delay = 2; |
| // # of frames generated by the emulator. max(delivery_delay.count) <= frames |
| optional uint32 frames = 3; |
| } |
| |
| // Metrics for grpc invocations. |
| message EmulatorGrpc { |
| enum GrpcConnection { |
| // Unknown type of connection. |
| UNKNOWN_GRPC_CONNECTION = 0; |
| // An incoming call to emulator |
| SERVER = 1; |
| // Emulator making an outgoing call |
| CLIENT = 2; |
| } |
| |
| // CRC32 digest of the fully-specified method name. |
| optional uint32 call_id = 1; |
| // Number of requests |
| optional uint32 requests = 2; |
| // Number of requests for which the response was not Status::OK |
| optional uint32 failures = 3; |
| // Sum of received message size, if streaming |
| optional PercentileEstimator rcv_bytes_estimate = 4; |
| // Sum of sent message size, if streaming |
| optional PercentileEstimator snd_bytes_estimate = 5; |
| // Duration of the total request time in milliseconds. |
| optional PercentileEstimator duration = 6; |
| // Number of messages received |
| optional PercentileEstimator rcv = 7; |
| // Number of messages send |
| optional PercentileEstimator snd = 8; |
| // Type of connection |
| optional GrpcConnection type = 9; |
| } |
| |
| // Metrics related to the Emulator. |
| message EmulatorDetails { |
| // Cpu architecture of the guest. |
| optional GuestCpuArchitecture guest_arch = 1; |
| // cpu time spent in kernel mode in milliseconds since last metrics report. |
| optional int64 system_time = 2; |
| // cpu time spent in user mode in milliseconds since last metrics report. |
| optional int64 user_time = 3; |
| // number of crashes since last metrics report. |
| optional int64 crashes = 4; |
| // real time in milliseconds since last metrics report. |
| optional int64 wall_time = 5; |
| // True iff a crash occurred while process started its exit routines. |
| optional bool exit_started = 6; |
| // The API level of the running guest image. |
| optional int64 guest_api_level = 7; |
| // The value of guest gpu option (ro.kernel.qemu.gles) |
| optional bool guest_gpu_enabled = 8; |
| // True if we were able to correctly initialize opengl on the host. |
| optional bool is_opengl_alive = 10; |
| // Connectivity from adb of the running emulator instance. |
| optional EmulatorAdbLiveness adb_liveness = 11; |
| // Information about the gl implementation in the guest image. |
| optional EmulatorGuestGlInfo guest_gl = 12; |
| // Information about the host GPUs (one per GPU). |
| repeated EmulatorGpuInfo host_gpu = 13; |
| // The "phase" of an emulator session where crash happened. |
| optional EmulatorSessionPhase session_phase = 14; |
| // The emulator core version (e.g. QEMU engine's version). |
| optional string core_version = 15; |
| // Renderer of the current emulator session. |
| optional EmulatorRenderer renderer = 16; |
| // Flags for the used UI features. |
| optional EmulatorFeatures used_features = 17; |
| // Information about the currently loaded AVD. |
| optional EmulatorAvdInfo avd_info = 18; |
| // State tracking emulator feature flag enable/disable. |
| optional EmulatorFeatureFlagState feature_flag_state = 19; |
| // Hypervisor used in current session. |
| optional EmulatorHypervisor hypervisor = 20; |
| // Information about quickboot status of the current session. |
| optional EmulatorQuickbootLoad quickboot_load = 21; |
| optional EmulatorQuickbootSave quickboot_save = 22; |
| // Track GLES command usages |
| optional EmulatorGLESUsages gles_usages = 23; |
| // Metrics on all generic emulator snapshot saves and loads. |
| repeated EmulatorSnapshot snapshot_loads = 24; |
| repeated EmulatorSnapshot snapshot_saves = 25; |
| // Metrics on all snapshot UI. |
| optional EmulatorSnapshotUICounts snapshot_ui_counts = 26; |
| // Metrics on camera usage. |
| optional EmulatorCameraSession camera = 27; |
| // Metrics for virtual scene camera sessions. |
| optional EmulatorVirtualSceneSession virtual_scene = 28; |
| // Metrics for emulator boot status and time. |
| optional EmulatorBootInfo boot_info = 29; |
| // Metrics for automation/macros. |
| optional EmulatorAutomation automation = 30; |
| // Metrics for multi-display |
| optional EmulatorMultiDisplay multi_display = 31; |
| // Metrics for gRPC invocation |
| optional EmulatorGrpc grpc = 32; |
| // Metrics for LocationUiV2 |
| optional EmulatorLocationV2 location_v2 = 33; |
| // Metrics for streamScreenshot |
| optional EmulatorStreamScreenshot screenshot = 34; |
| // Metrics for Icebox |
| repeated EmulatorIcebox icebox = 35; |
| // Metrics for resizable display |
| optional EmulatorResizableDisplay resizable_display = 36; |
| // Process ID of the emulator wrapper process. |
| optional int32 emu_pid = 37; |
| // Process ID of the child qemu process that does the real job. |
| optional int32 qemu_pid = 38; |
| // Vulkan backend. |
| optional VulkanIcd vulkan_icd = 39; |
| // Next tag: 40 |
| |
| // Emulator instance liveness as determined via adb connectivity. |
| enum EmulatorAdbLiveness { |
| UNKNOWN_EMULATOR_ADB_LIVENESS = 0; |
| FAILURE_NO_ADB = 1; |
| ADB_ONLINE = 2; |
| FAILURE_ADB_SERVER_DEAD = 3; |
| FAILURE_EMULATOR_DEAD = 4; |
| } |
| |
| // In What phase of the lifetime of the Emulator were the metrics reported. |
| enum EmulatorSessionPhase { |
| UNKNOWN_EMULATOR_SESSION_PHASE = 0; |
| // The custom emulator launcher is running. |
| LAUNCHER = 1; |
| // Final emulator target is parsing command line arguments. |
| PARSE_OPTIONS = 2; |
| // Initialization - general. |
| INIT_GENERAL = 3; |
| // Initializing GPU |
| INIT_GPU = 4; |
| // Initializing hardware acceleration. |
| INIT_ACCEL = 5; |
| // Main use case -- init done, emulator is up. |
| RUNNING_GENERAL = 6; |
| // Exiting |
| EXIT_GENERAL = 7; |
| } |
| |
| // Chip the emulator is emulating for. |
| enum GuestCpuArchitecture { |
| UNKNOWN_GUEST_CPU_ARCHITECTURE = 0; |
| X86 = 1; |
| X86_64 = 2; |
| ARM = 3; |
| ARM_64 = 4; |
| MIPS = 5; |
| MIPS_64 = 6; |
| } |
| |
| // Rendering method emulator uses for the reporter session. |
| enum EmulatorRenderer { |
| UNKNOWN_EMULATOR_RENDERER = 0; |
| HOST = 1; |
| OFF = 2; |
| GUEST = 3; |
| MESA = 4; |
| SWIFTSHADER = 5; |
| ANGLE = 6; |
| ANGLE9 = 7; |
| SWIFTSHADER_INDIRECT = 8; |
| ANGLE_INDIRECT = 9; |
| ANGLE9_INDIRECT = 10; |
| ERROR_IN_EMULATOR_RENDERER = 255; |
| } |
| |
| // Hypervisor in use for the session. |
| enum EmulatorHypervisor { |
| UNKNOWN_HYPERVISOR = 0; |
| NO_HYPERVISOR = 1; |
| KVM = 2; // KVM |
| HAXM = 3; // Intel HAXM |
| HVF = 4; // Apple Hypervisor.Framework |
| HYPERV = 5; // Microsoft Hyper-V |
| AEHD = 6; // Android Emulator hypervisor driver |
| // Next tag: 7 |
| } |
| |
| // Vulkan backend |
| enum VulkanIcd { |
| UNKNOWN_VK = 0; |
| HARDWARE_VK = 1; |
| SWIFTSHADER_VK = 2; // Swiftshader software renderer |
| MOLTEN_VK = 3; // Mac only |
| } |
| } |
| |
| // Describes a user clicking on some part of the Emulator UI. |
| message EmulatorUiEvent { |
| // Id of the UI element, baked in the emulator binary. |
| optional string element_id = 1; |
| // The type of UI event |
| optional EmulatorUiEventType type = 2; |
| // The current context of the event. |
| optional EmulatorUiEventContext context = 3; |
| // This value is an opaque numeric type. The exact schema of the UI metrics |
| // is not specific here. e.g., |value| may represent a boolean, a "count", or |
| // an index into the list of items in a drop down menu. |
| optional int64 value = 4; |
| |
| // Tracks the type of the emulator UI Event. |
| enum EmulatorUiEventType { |
| UNKONWN_EMULATOR_UI_EVENT_TYPE = 0; |
| BUTTON_PRESS = 1; |
| // Generated when a user action changes the value of certain field from |
| // its default value. |
| OPTION_SET_TO_NON_DEFAULT = 2; |
| // Generated to report the index of an option selected by the user in a |
| // drop-down menu / radio button etc. |
| OPTION_SELECTED = 3; |
| // Generated on event processing end, |value| is time in microseconds. |
| // Is only sent if the processing time is considered 'long' in the emulator, |
| // which is determined in the emulator code itself. |
| LONG_PROCESSING_TIME_US = 4; |
| } |
| |
| // Tracks the context of the Emulator UI. |
| enum EmulatorUiEventContext { |
| UNKNOWN_EMULATOR_UI_EVENT_CONTEXT = 0; |
| EXTENDED_WINDOW_OPEN = 1; |
| EXTENDED_DISPLAYS_TAB = 2; |
| EXTENDED_CELLULAR_TAB = 3; |
| EXTENDED_BATTERY_TAB = 4; |
| EXTENDED_CAMERA_TAB = 5; |
| EXTENDED_TELEPHONY_TAB = 6; |
| EXTENDED_MIC_TAB = 7; |
| EXTENDED_FINGER_TAB = 8; |
| EXTENDED_SENSORS_TAB = 9; |
| EXTENDED_BUG_TAB = 10; |
| EXTENDED_SNAPSHOT_TAB = 11; |
| EXTENDED_RECORD_TAB = 12; |
| EXTENDED_SETTINGS_TAB = 13; |
| EXTENDED_HELP_TAB = 14; |
| } |
| } |
| |
| message EmulatorPercentileEstimator { |
| // Type of the performance metric. |
| optional EmulatorPerformanceMetric metric = 1; |
| // Per-metric type context, e.g. UI element name if this is an event handling |
| // time. Not set if there's no context for the specific metric type. |
| optional string context = 2; |
| // Estimator for metric. |
| optional PercentileEstimator estimator = 3; |
| |
| // Metric types that can be monitored. |
| enum EmulatorPerformanceMetric { |
| UI_EVENT_HANDLING_TIME_US = 0; |
| } |
| } |
| |
| // Tracking CPU usage for some operation |
| message CpuTimeSlice { |
| optional uint64 wall_time_us = 1; |
| optional uint64 user_time_us = 2; |
| optional uint64 system_time_us = 3; |
| } |
| |
| // Tracking OpenGL/Vulkan resource usage |
| message VulkanResourceUsage { |
| optional uint64 total_host_visible_memory_allocation_bytes = 1; |
| optional uint64 total_device_local_memory_allocation_bytes = 2; |
| optional uint32 total_instances = 3; |
| } |
| |
| message GraphicsResourceUsage { |
| // common betweek OpenGL and Vulkan |
| optional uint32 colorbuffer_count = 1; |
| optional uint32 shader_count = 2; |
| optional uint32 renderthread_count = 3; |
| optional uint64 colorbuffer_total_allocation_bytes = 4; |
| // Vulkan |
| optional VulkanResourceUsage vulkan_resource_usage = 5; |
| } |
| |
| // Emulator resource usage statistics |
| message EmulatorResourceUsage { |
| // Run condition, if applicable |
| enum RunCondition { |
| RUN_CONDITION_DEFAULT = 0; |
| RUN_CONDITION_IDLE = 1; |
| RUN_CONDITION_TEST = 2; |
| RUN_CONDITION_DEPLOY = 3; |
| } |
| // Estimations of what is taking CPU in the guest |
| enum GuestCpuUsageSource { |
| GUEST_CPU_USAGE_DEFAULT = 0; |
| GUEST_CPU_USAGE_PLAY_SERVICES = 1; |
| GUEST_CPU_USAGE_SURFACEFLINGER = 2; |
| GUEST_CPU_USAGE_AUDIO_SERVICE = 3; |
| GUEST_CPU_USAGE_SENSOR_SERVICE = 4; |
| GUEST_CPU_USAGE_CHROME = 5; |
| GUEST_CPU_USAGE_OTHER = 6; |
| } |
| optional RunCondition run_condition = 1; |
| optional CpuTimeSlice main_loop_slice = 2; |
| repeated CpuTimeSlice vcpu_slices = 3; |
| repeated CpuTimeSlice guest_cpu_slices = 4; |
| repeated GuestCpuUsageSource top_guest_cpu_usage_sources = 5; |
| optional EmulatorMemoryUsage memory_usage = 6; |
| optional GraphicsResourceUsage graphics_resource_usage = 7; |
| } |
| |
| // Emulator latency statistics |
| message EmulatorLatencyStats { |
| // An enum that attempts to account for the source of |
| // high latencies and hangs in the emulator. |
| enum EmulatorLatencySource { |
| EMULATOR_LATENCY_SOURCE_DEFAULT = 0; |
| EMULATOR_LATENCY_SOURCE_NETWORK = 1; |
| EMULATOR_LATENCY_SOURCE_BLOCK_DEVICE = 2; |
| EMULATOR_LATENCY_SOURCE_PIPE_CAMERA = 3; |
| EMULATOR_LATENCY_SOURCE_PIPE_OPENGL = 4; |
| EMULATOR_LATENCY_SOURCE_PIPE_OPERATION = 5; |
| EMULATOR_LATENCY_SOURCE_PCI_DEVICE = 6; |
| EMULATOR_LATENCY_SOURCE_MMIO = 7; |
| EMULATOR_LATENCY_SOURCE_UI_EVENT_HOST_ONLY = 8; |
| EMULATOR_LATENCY_SOURCE_UI_EVENT_TO_GUEST = 9; |
| EMULATOR_LATENCY_INPUT_QUEUE_FULL = 10; |
| } |
| optional EmulatorLatencySource latency_source = 1; |
| // if vcpu mmio access was involved, this holds the MMIO address. |
| optional uint64 vcpu_handling_mmio_address = 2; |
| // Number of loops where the input queue was full. |
| optional uint32 input_queue_full_loops = 8; |
| // Time stats for the latency in microseconds. |
| optional uint64 latency_max_us = 3; |
| optional uint64 latency_99_9_us = 4; |
| optional uint64 latency_99_us = 5; |
| optional uint64 latency_90_us = 6; |
| optional uint64 latency_50_us = 7; |
| } |
| |
| // Estimations of percentiles of time spent on Emulator operations. |
| message EmulatorPerformanceStats { |
| // Collection of estimations of performance metrics. |
| repeated EmulatorPercentileEstimator estimator = 1; |
| // Emulator memory usage over time. (Deprecated) |
| repeated EmulatorMemoryUsage memory_usage = 2 [deprecated = true]; |
| // Process uptime when this was captured. Relative to when |
| // the emulator process was launched---this is not a timestamp. |
| optional uint64 process_uptime_us = 3; |
| // Resource usage and latency stats. |
| optional EmulatorResourceUsage resource_usage = 4; |
| optional EmulatorLatencyStats latency_stats = 5; |
| // Guest system uptime when this was captured. Relative to when |
| // the Android system image is started---this is not a timestamp. |
| optional uint64 guest_uptime_us = 6; |
| } |
| |
| // Details about a single Gradle run. |
| message GradleBuildDetails { |
| // Version of our Gradle plugin supporting android builds. e.g. '2.0-beta1' |
| optional string android_plugin_version = 1; |
| // Version of the open source Gradle application used. |
| optional string gradle_version = 2; |
| // indicates whether the user has instant run enabled in settings |
| optional bool user_enabled_ir = 3; |
| // indicates whether the IDE thinks whether this plugin version supports IR |
| optional bool model_supports_ir = 4; |
| // indicates whether the current variant supports IR, but this can be changed |
| // without a notification |
| optional bool variant_supports_ir = 5; |
| // per library metrics. |
| repeated GradleLibrary libraries = 6; |
| // per module metrics. |
| repeated GradleModule modules = 7; |
| // per android module metrics. |
| repeated GradleAndroidModule android_modules = 8; |
| // per native android module metrics |
| repeated GradleNativeAndroidModule native_android_modules = 9; |
| // The app_id is the id for the user's android app |
| // which we salt on the client (28 day rotation) then sha256 |
| // so it is anonymized and is unique per user, but has a 1-N relation. |
| optional string app_id = 10; |
| |
| // The number of modules in the project (In the case of a build system that |
| // produces different modules for tests and production code, these modules are |
| // counted as one). |
| optional int64 module_count = 11; |
| |
| // The number of distinct external dependencies in this project. |
| optional int64 lib_count = 12; |
| } |
| |
| // Per library Gradle metrics. |
| message GradleLibrary { |
| // Number of jar dependencies in this library. |
| optional int64 jar_dependency_count = 1; |
| // Number of aar dependencies in this library. |
| optional int64 aar_dependency_count = 2; |
| } |
| |
| // Per module Gradle metrics. |
| message GradleModule { |
| // Total number of modules in this app. |
| optional int64 total_module_count = 1; |
| // Number of aar modules in this app. |
| optional int64 app_module_count = 2; |
| // Number of library modules in this app. |
| optional int64 lib_module_count = 3; |
| // Number of dynamic feature modules in this app. |
| optional int64 dynamic_feature_module_count = 4; |
| // Number of android test modules in this app. |
| optional int64 test_module_count = 5; |
| // Number of kotlin multiplatform modules in this app. |
| optional int64 kotlin_multiplatform_module_count = 6; |
| } |
| |
| // Per Android module Gradle metrics. |
| message GradleAndroidModule { |
| // Client-side salted, sha256 of the application id |
| // the app_id is the id for the user's android app |
| // which we salt with a client unique salt and then sha256 |
| // so it is anonymized and is unique per user, but has a 1-N relation. |
| optional string app_id = 1; |
| // Client-side salted, sha256 of the module name. |
| optional string module_name = 2; |
| // True if this module is a library. |
| optional bool is_library = 3; |
| // Number of different build types for this module. |
| optional int64 build_type_count = 4; |
| // Number of different flavor types for this module. |
| optional int64 flavor_count = 5; |
| // Number of different flavor dimensions for this module. |
| optional int64 flavor_dimension = 6; |
| // Number of signing configurations for this module. |
| optional int64 signing_config_count = 7; |
| // Hardware specified as required in the manifest. Only logging the types |
| // from the allow-list. E.g. "android.hardware.type.watch". |
| optional string required_hardware = 8; |
| } |
| |
| // per "native" (C++) android module Gradle metrics. |
| message GradleNativeAndroidModule { |
| // Client-side salted, sha256 of the application id |
| // the app_id is the id for the user's android app |
| // which we salt with a client unique salt and then sha256 |
| // so it is anonymized and is unique per user, but has a 1-N relation. |
| optional string app_id = 1; |
| // Client-side salted, sha256 of the module name. |
| optional string module_name = 2; |
| // True if this module is a library. |
| optional NativeBuildSystemType build_system_type = 3; |
| // the ndk version being used by this module |
| optional string ndk_version = 4; |
| |
| // The various native build systems we support to be used from Gradle. |
| enum NativeBuildSystemType { |
| UNKNOWN_NATIVE_BUILD_SYSTEM_TYPE = 0; |
| // The Gradle experimental plugin |
| GRADLE_EXPERIMENTAL = 1; |
| // The compilation part of NDK builds (Android's native build system). |
| NDK_COMPILE = 2; |
| // full NDK builds (Android's native build system). |
| NDK_BUILD = 3; |
| // CMake is a very common C++ build system. |
| CMAKE = 4; |
| // Custom build system that uses Ninja as back end. |
| NINJA = 5; |
| } |
| } |
| |
| // Metrics related to editing CMake files. |
| message CMakeEditingEvent { |
| enum CMakeEditingEventKind { |
| UNKNOWN_CMAKE_EDITING_EVENT = 0; |
| // Set when syntax highlighting for CMake is first used. |
| SYNTAX_HIGHLIGHTING = 1; |
| // Set when code completion is first used. |
| CODE_COMPLETION = 2; |
| } |
| optional CMakeEditingEventKind kind = 1; |
| // The amount of time taken for the event to complete in milliseconds. |
| optional int64 event_duration_ms = 2; |
| } |
| |
| message JniInspectionEvent { |
| enum JniInspectionType { |
| UNKNOWN_JNI_INSPECTION_EVENT = 0; |
| // Set when the "missing function" inspection quickfix is used. |
| MISSING_FUNCTION_INSPECTION_EVENT = 1; |
| // Set when the "extern C" inspection quickfix is used. |
| EXTERN_C_INSPECTION_EVENT = 2; |
| // Set when the "parameters" inspection quickfix is used. |
| PARAMETERS_INSPECTION_EVENT = 3; |
| // Set when the OnLoad / OnUnload inspection quickfix is used. |
| ONLOAD_INSPECTION_EVENT = 4; |
| // Set when the FindMethod inspection quickfix is used. |
| FIND_METHOD_INSPECTION_EVENT = 5; |
| // Set when the FindField inspection quickfix is used. |
| FIND_FIELD_INSPECTION_EVENT = 6; |
| // Set when the FindClass inspection quickfix is used. |
| FIND_CLASS_INSPECTION_EVENT = 7; |
| // Set when the RegisterNatives inspection quickfix is used. |
| REGISTER_NATIVES_INSPECTION_EVENT = 8; |
| // Set when the CallMethod inspection quickfix is used. |
| CALL_METHOD_INSPECTION_EVENT = 9; |
| // Set when the GetField inspection quickfix is used. |
| GET_FIELD_INSPECTION_EVENT = 10; |
| // Set when the SetField inspection quickfix is used. |
| SET_FIELD_INSPECTION_EVENT = 11; |
| // Set when FindClass completion is accepted. |
| FIND_CLASS_COMPLETION_EVENT = 12; |
| // Set when GetMethodID completion is accepted. |
| GET_METHOD_ID_COMPLETION_EVENT = 13; |
| // Set when GetFieldID completion is accepted. |
| GET_FIELD_ID_COMPLETION_EVENT = 14; |
| // Set when JNI function stub completion is accepted. |
| JNI_FUNCTION_STUB_COMPLETION_EVENT = 15; |
| // Set when RegisterNatives completion is accepted. |
| REGISTER_NATIVES_COMPLETION_EVENT = 16; |
| // Set when KotlinInternalExternalFunctionInspction is used. |
| KOTLIN_INTERNAL_EXTERNAL_FUNCTION_INSPECTION_EVENT = 17; |
| } |
| |
| optional JniInspectionType type = 1; |
| |
| // The category of this JNI inspection event. This indicates why the event is |
| // sent from user's Android Studio. |
| enum EventCategory { |
| UNKNOWN_EVENT_CATEGORY = 0; |
| // The user has "used" this inspectoin, e.g., applied a quickfix from an |
| // inspection or accepted the completion suggestion. |
| USAGE_EVENT = 1; |
| // Performance information for a given inspection or completion event. This |
| // is sent when the inspection or completion feature logic has finished |
| // computation. |
| PERFORMANCE_EVENT = 2; |
| } |
| |
| // Indicates why this event is reported. If this event is not set (by old |
| // version of Android Studio), it means USAGE_EVENT. |
| optional EventCategory event_category = 2; |
| |
| message PerformanceEvent { |
| // The time it takes for the IDE to execute the logic for the JNI inspection |
| // or completion. |
| optional uint32 delay_ms = 1; |
| } |
| |
| // Performance metrics for the inspection or completion event. This field |
| // should only be set if `event_category` is `PERFORMANCE_EVENT`. |
| optional PerformanceEvent performance_event = 3; |
| } |
| |
| // Metrics related to C++ header file view in Android Project |
| message CppHeadersViewEvent { |
| enum CppHeadersViewEventType { |
| UNKNOWN_CPP_HEADERS_VIEW_EVENT = 0; |
| // Set when the user opens the top include node |
| OPEN_TOP_INCLUDES_NODE = 1; |
| } |
| // Metrics related to enhanced C++ header files view enabled by |
| // under ENABLE_ENHANCED_NATIVE_HEADER_SUPPORT flag |
| optional CppHeadersViewEventType type = 1; |
| // The amount of time taken for the event to complete in milliseconds. |
| optional int64 event_duration_ms = 2; |
| // The count of the immediate children of the node that was opened by |
| // the user. |
| optional int32 node_immediate_children = 3; |
| } |
| |
| // Metrics on InstantRun usage. |
| message InstantRun { |
| // What kind of Instant Run deployment was chosen. |
| optional InstantRunDeploymentKind deployment_kind = 1; |
| // Historical, we had two enums tracking this, this one was never used. |
| // what was the reason for chosing that kind of deployment from the gradle |
| // side. |
| optional InstantRunBuildCause instant_run_build_cause = 3 [deprecated = true]; |
| // time the InstantRun enabled took in milliseconds. |
| optional int64 build_time = 4; |
| // The session id is a UUID within a single run of Android Studio |
| // tracking multiple HOT_SWAP & DEX builds in the same |
| // IR session (starting at FULL_APK and ending before FULL_APK). |
| optional string session_id = 5; |
| // what was the reason for chosing that kind of deployment from the IDE |
| // side. |
| optional InstantRunIdeBuildCause ide_build_cause = 6; |
| // what was the reason for chosing that kind of deployment from the Gradle |
| // side. |
| optional InstantRunStatus.VerifierStatus gradle_build_cause = 7; |
| |
| // What Instant Run Deployment was used |
| enum InstantRunDeploymentKind { |
| UNKNOWN_INSTANT_RUN_DEPLOYMENT_KIND = 0; |
| LEGACY = 1; |
| FULL_APK = 2; |
| SPLIT_APK = 3; |
| DEX = 4; |
| HOT_SWAP = 5; |
| WARM_SWAP = 6; |
| NO_CHANGES = 7; |
| } |
| |
| // Historical, use InstantRunStatus.VerifierStatus instead. |
| // The different reasons Instant Run had to do a full build. |
| enum InstantRunBuildCause { |
| UNKNOWN_INSTANT_RUN_BUILD_CAUSE = 0; |
| COMPATIBLE = 1; |
| MANIFEST_CHANGE = 2; |
| FIELD_TYPE_CHANGE = 3; |
| FIELD_REMOVED = 4; |
| FIELD_ADDED = 5; |
| METHOD_DELETED = 6; |
| METHOD_ADDED = 7; |
| CLASS_ADDED = 8; |
| STATIC_INITIALIZER_CHANGE = 9; |
| CLASS_ANNOTATION_CHANGE = 10; |
| RESOURCE_CHANGE = 11; |
| IMPLEMENTS_INTERFACE_CHANGE = 12; |
| R_CLASS_CHANGE = 13; |
| PARENT_CLASS_CHANGE = 14; |
| METHOD_ANNOTATION_CHANGE = 15; |
| API_LEVEL_UNSUPPORTED = 16; |
| REFLECTION_USED = 17; |
| } |
| |
| // The different reasons InstantRun chose the build mode it did from the IDE's |
| // perspective. |
| enum InstantRunIdeBuildCause { |
| // reasons for clean build |
| UNKNOWN_INSTANT_RUN_IDE_BUILD_CAUSE = 0; |
| NO_DEVICE = 1; |
| APP_NOT_INSTALLED = 2; |
| MISMATCHING_TIMESTAMPS = 3; |
| USER_REQUESTED_CLEAN_BUILD = 4; |
| |
| // reasons for full build |
| API_TOO_LOW_FOR_INSTANT_RUN = 5; |
| // first installation in this Android Studio session |
| FIRST_INSTALLATION_TO_DEVICE = 6; |
| MANIFEST_RESOURCE_CHANGED = 7; |
| FREEZE_SWAP_REQUIRES_API21 = 8; |
| FREEZE_SWAP_REQUIRES_WORKING_RUN_AS = 9; |
| |
| // reasons for forced cold swap build |
| APP_NOT_RUNNING = 10; |
| APP_USES_MULTIPLE_PROCESSES = 11; |
| INCREMENTAL_BUILD = 12; |
| NO_INSTANT_RUN = 13; |
| ANDROID_TV_UNSUPPORTED = 14; |
| // user pressed Run, only Run was enabled |
| USER_REQUESTED_COLDSWAP = 15; |
| // both Run and Hotswap were enabled, user chose Run |
| USER_CHOSE_TO_COLDSWAP = 16; |
| } |
| } |
| |
| // describes Metrics on Metrics. |
| message MetaMetrics { |
| // number of times connecting to the clearcut server failed since |
| // the last successful upload. |
| optional int32 failed_connections = 1; |
| // number of bytes used to send metrics in the last upload. |
| optional int64 bytes_sent_in_last_upload = 2; |
| // number of times the clearcut server failed with an http error since |
| // the last successful upload. |
| optional int32 failed_server_replies = 3; |
| } |
| |
| // Describes a set of tests run. |
| message TestRun { |
| // Describes how tests where invoked. |
| optional TestInvocationType test_invocation_type = 1; |
| |
| // Total number of tests that ran. |
| optional int32 number_of_tests_executed = 2; |
| |
| // What kind of test is run. |
| optional TestKind test_kind = 3; |
| |
| // Whether the test run finished successfully (regardless of results) or |
| // tooling error happened. |
| optional bool crashed = 4; |
| |
| // Set when test_invocation_type = GRADLE or ANDROID_STUDIO_THROUGH_GRADLE |
| optional string gradle_version = 5; // e.g. '2.10' |
| |
| // Did the user/project enable code coverage on this test run? |
| optional bool code_coverage_enabled = 6; |
| |
| // Provides details on commonly used test libraries. |
| optional TestLibraries test_libraries = 7; |
| |
| // Only set when test_kind=INSTRUMENTATION_TEST |
| optional TestExecution test_execution = 8; |
| |
| // Whether the feature Automatic Snapshot on Test Failure is enabled. |
| // Currently only set when test_invocation_type = |
| // ANDROID_STUDIO_THROUGH_GRADLE. |
| optional AutomaticSnapshotOnFailure automatic_snapshot_on_failure = 9; |
| |
| // Only set when test_kind=PREVIEW_SCREENSHOT_TEST |
| optional PreviewScreenshotRun preview_screenshot_run = 10; |
| |
| // Describes how tests where invoked. |
| enum TestInvocationType { |
| UNKNOWN_TEST_INVOCATION_TYPE = 0; |
| // Tests were run from the command-line. |
| GRADLE_TEST = 1; |
| // Tests were run by Android Studio run configurations logic. |
| ANDROID_STUDIO_TEST = 2; |
| // Tests were run by Gradle, but invoked through AS UI. |
| ANDROID_STUDIO_THROUGH_GRADLE_TEST = 3; |
| } |
| |
| // What kind of test is run. |
| enum TestKind { |
| UNKNOWN_TEST_KIND = 0; |
| UNIT_TEST = 1; |
| INSTRUMENTATION_TEST = 2; |
| PREVIEW_SCREENSHOT_TEST = 3; |
| } |
| |
| // How instrumentation tests will be run |
| enum TestExecution { |
| UNKNOWN_TEST_EXECUTION = 0; |
| HOST = 1; |
| ANDROID_TEST_ORCHESTRATOR = 2; |
| NITROGEN = 3; |
| } |
| |
| // Configuration for automatic snapshot for test failures. |
| message AutomaticSnapshotOnFailure { |
| enum Enabled { |
| UNSPECIFIED = 0; |
| |
| // AutomaticSnapshotOnFailure is enabled by RunConfiguration in Android |
| // Studio. |
| ENABLED_BY_RUN_CONFIGURATION = 1; |
| |
| // AutomaticSnapshotOnFailure is disabled by RunConfiguration in Android |
| // Studio. |
| DISABLED_BY_RUN_CONFIGURATION = 2; |
| |
| // Use value from Gradle DSL. |
| USE_VALUE_IN_GRADLE_DSL = 3; |
| } |
| optional Enabled enabled = 1; |
| } |
| |
| message PreviewScreenshotRun { |
| // Deprecated: use TestRun.number_of_tests_executed. |
| optional int32 screenshot_count = 1 [deprecated = true]; |
| |
| // Deprecated: use GradleBuildProfileSpan. |
| optional int64 total_run_time_ms = 2 [deprecated = true]; |
| |
| // Deprecated: use GradleBuildProfileSpan. |
| optional int64 discovery_run_time_ms = 3 [deprecated = true]; |
| |
| // Deprecated: use GradleBuildProfileSpan. |
| optional int64 rendering_run_time_ms = 4 [deprecated = true]; |
| } |
| } |
| |
| // Provides details on commonly used test libraries. |
| // Each string field of this message holds the exact version of the given |
| // library (e.g. "1.0.0") that the field name represents. The field is populated |
| // only if this project uses the given library. |
| // Next ID: 44 |
| message TestLibraries { |
| // "com.android.support.test:runner". |
| optional string test_support_library_version = 1; |
| // "com.android.support.test:orchestrator". |
| optional string test_support_orchestrator_version = 22; |
| // "com.android.support.test:rules". |
| optional string test_support_rules_version = 23; |
| |
| // "com.android.support.test.espresso:espresso-core". |
| optional string test_support_espresso_version = 25; |
| // "com.android.support.test.espresso:espresso-contrib". |
| optional string test_support_espresso_contrib_version = 26; |
| // "com.android.support.test.espresso:espresso-web". |
| optional string test_support_espresso_web_version = 27; |
| // "com.android.support.test.espresso:espresso-intents". |
| optional string test_support_espresso_intents_version = 28; |
| // "com.android.support.test.espresso:espresso-idling-resource". |
| optional string test_support_espresso_idling_resource_version = 29; |
| // "com.android.support.test.espresso:espresso-accessibility". |
| optional string test_support_espresso_accessibility_version = 30; |
| |
| // "androidx.test:core". |
| optional string test_core_version = 12; |
| // "androidx.test:core-ktx". |
| optional string test_core_ktx_version = 13; |
| // "androidx.test:runner". |
| optional string test_runner_version = 24; |
| // "androidx.test:orchestrator". |
| optional string test_orchestrator_version = 10; |
| // "androidx.test:rules". |
| optional string test_rules_version = 11; |
| // "androidx.test.ext:junit". |
| optional string test_ext_junit_version = 14; |
| // "androidx.test.ext:junit-ktx". |
| optional string test_ext_junit_ktx_version = 15; |
| // "androidx.test.ext:truth". |
| optional string test_ext_truth_version = 16; |
| |
| // "androidx.test.espresso:espresso-core" |
| optional string espresso_version = 2; |
| // "androidx.test.espresso:espresso-contrib" |
| optional string espresso_contrib_version = 5; |
| // "androidx.test.espresso:espresso-web" |
| optional string espresso_web_version = 6; |
| // "androidx.test.espresso:espresso-intents" |
| optional string espresso_intents_version = 7; |
| // "androidx.test.espresso:espresso-idling-resource" |
| optional string espresso_idling_resource_version = 8; |
| // "androidx.test.espresso:espresso-accessibility" |
| optional string espresso_accessibility_version = 9; |
| // "androidx.test.espresso:espresso-device" |
| optional string espresso_device_version = 41; |
| |
| // "androidx.test.services:storage" |
| optional string test_services_storage_version = 42; |
| // "androidx.test.services:test-services" |
| optional string test_services_test_services_version = 43; |
| |
| // "androidx.fragment:fragment-testing". |
| optional string fragment_testing_version = 17; |
| |
| // "androidx.benchmark:benchmark-common". |
| optional string benchmark_common_version = 20; |
| // "androidx.benchmark:benchmark-junit4". |
| optional string benchmark_junit4_version = 21; |
| // "androidx.benchmark:benchmark-macro". |
| optional string benchmark_macro_version = 31; |
| // "androidx.benchmark:benchmark-macro-junit4". |
| optional string benchmark_macro_junit4_version = 32; |
| |
| // "androidx.compose.ui:ui-test". |
| optional string compose_ui_test_version = 38; |
| // "androidx.compose.ui:ui-test-junit4". |
| optional string compose_ui_test_junit4_version = 39; |
| // "androidx.compose.ui:ui-test-manifest". |
| optional string compose_ui_test_manifest_version = 40; |
| |
| // "org.robolectric:robolectric". |
| optional string robolectric_version = 3; |
| |
| // "org.mockito:mockito-core". |
| optional string mockito_version = 4; |
| |
| // "junit:junit" |
| optional string junit_version = 18; |
| |
| // "com.google.truth:truth". |
| optional string truth_version = 19; |
| |
| // "org.testng:testng" |
| optional string test_ng_version = 33; |
| |
| // "org.junit.platform:junit-platform-launcher" |
| optional string junit_platform_launcher_version = 34; |
| |
| // "org.junit.platform:junit-platform-runner" |
| optional string junit_platform_runner_version = 35; |
| |
| // "org.junit.jupiter:junit-jupiter" |
| optional string junit_jupiter_version = 36; |
| |
| // "org.junit.vintage:junit-vintage-engine" |
| optional string junit_vintage_engine_version = 37; |
| } |
| |
| // Describes the status of various Hypervisors |
| message Hypervisor { |
| optional HyperVState hyper_v_state = 1; |
| |
| // Status of the Hyper-V hypervisor. |
| enum HyperVState { |
| UNKNOWN_HYPERV_STATE = 0; // Have no idea |
| HYPERV_ABSENT = 1; // No hyper-V found |
| HYPERV_INSTALLED = 2; // Hyper-V is installed but not running |
| HYPERV_RUNNING = 3; // Hyper-V is up and running |
| HYPERV_CHECK_ERROR = 4; // Failed to detect status (emulator-check error) |
| } |
| } |
| |
| // Describes the status of the machine running the emulator. |
| message EmulatorHost { |
| // CPU manufacturer of the host, used as certain hypervisors are limited |
| // to a certain manufacturer. |
| optional string cpu_manufacturer = 1; // AMD, INTEL, ... |
| |
| // Does the host support virtualization technology |
| optional bool virt_support = 2; |
| |
| // Is the host itself running inside a virtual machine. |
| optional bool running_in_vm = 3; |
| |
| // May differ from os_architecture field as it is calculated differently, |
| // trying to compensate the JVM bittness. |
| optional int64 os_bit_count = 4; |
| // CPU model, family, stepping, as stored in the EAX register |
| // after issuing CPUID instruction with EAX=1: |
| // 31 27 23 19 15 11 7 3 0 |
| // 0000 yyyy yyyy xxxx 00tt ffff mmmm ssss |
| optional uint32 cpuid_stepping = 5; // s: [3:0] stepping (CPU version) |
| optional uint32 cpuid_model = 6; // m: [7:4] model (CPU model) |
| optional uint32 cpuid_family = 7; // f: [11:8] family (CPU make) |
| optional uint32 cpuid_type = 8; // t: [13:12] CPU type |
| optional uint32 cpuid_extmodel = 9; // x: [19:16] extended model |
| optional uint32 cpuid_extfamily = 10; // y: [27:20] extended family |
| } |
| |
| // Detailed profiling information for the gradle build. |
| message GradleBuildProfile { |
| // Version of the open source Gradle application used. |
| // e.g. "2.14" or "3.0-20160617000025+0000" |
| optional string gradle_version = 2; |
| |
| // The value of the "os.name" system property. |
| // e.g. "Linux" |
| optional string os_name = 6; |
| // The value of the "os.version" system property. |
| // e.g. "3.13.0-86-generic" |
| optional string os_version = 7; |
| // The value of the "java.version" system property. |
| // e.g. "1.8.0_40-ea" |
| optional string java_version = 8; |
| // The value of the "java.vm.version" system property. |
| // e.g. "25.40-b25" |
| optional string java_vm_version = 9; |
| |
| // The value of Runtime.getRuntime().maxMemory() |
| optional int64 max_memory = 10; |
| |
| // The total time taken for this build in milliseconds. |
| // This does not include Gradle's startup (before plugin apply) or shutdown |
| // (after BuildListener#buildFinished(BuildResult) called. |
| optional int64 build_time = 11; |
| |
| // The number of garbage collections during this build |
| // Historical: Used in Android Gradle Plugin 2.2.x, circa 2016-10 |
| optional int64 gc_count = 12 [deprecated = true]; |
| |
| // The time spent garbage collecting during this build. |
| // Historical: Used in Android Gradle Plugin 2.2.x, circa 2016-10 |
| optional int64 gc_time = 13 [deprecated = true]; |
| |
| // The projects that make up this multi-project build. |
| repeated GradleBuildProject project = 14; |
| |
| // Samples of the memory state of the daemon during the build. |
| repeated GradleBuildMemorySample memory_sample = 15; |
| |
| // The fine-grained execution spans which record granular timings. |
| repeated GradleBuildProfileSpan span = 16; |
| |
| // For instant run builds: the resulting instant run build info. |
| optional InstantRunStatus instant_run_status = 17; |
| |
| // Client-side salted, sha256 of the root project path. |
| // This exists to allow multiple instant run builds in one project by one |
| // user to be correlated. |
| // |
| // The salt is rotated every 28 days, so it is not a permanent pseudonymous |
| // identifier. It is anonymized and is unique per user, but has a 1-N |
| // relation. |
| optional string project_id = 18; |
| |
| // the project id as used in the playstore, e.g. |
| // 'com.google.android.apps.maps'. This is sensitive information and |
| // thus restricted to "raw" sawmill access. This data is only available in |
| // and for PWG approved scenarios. |
| // This is repeated, as a gradle build may include multiple apps, either |
| // by variants or by multiple 'app' subprojects. |
| repeated string raw_project_id = 19; |
| |
| // If at least one module has enableCompose set to true |
| optional bool compose_enabled = 20; |
| |
| // If Gradle configuration caching is enabled. |
| optional bool configuration_caching_enabled = 21; |
| |
| // If Gradle parallel task execution is enabled. |
| optional bool parallel_task_execution = 22; |
| } |
| |
| message GradleBuildProject { |
| // Identifier, local to the containing AndroidStudioEvent, for the project. |
| // Can be used to correlate spans (GradleBuildProfileSpan) with this |
| // project for this build only. Is created by sequentially |
| // numbering projects as they are encountered. |
| // Is not stable across build invocations. |
| optional int64 id = 1; |
| |
| // Version of our Android Gradle plugin supporting android builds. |
| // e.g. '2.0-beta1' |
| // For the experimental plugin this is the gradle-core version. |
| optional string android_plugin_version = 2; |
| |
| // Which Android Gradle plugin is used. |
| optional PluginType android_plugin = 3; |
| // Which plugin generation is used. |
| optional PluginGeneration plugin_generation = 4; |
| |
| // The build tools version used, e.g. '24.0.0 rc2' |
| optional string build_tools_version = 5; |
| |
| // Statistics about the project build. |
| // Will be used to characterize and bucket projects for subgroup analysis. |
| optional GradleBuildProjectMetrics metrics = 6; |
| |
| // The variants in this project |
| repeated GradleBuildVariant variant = 7; |
| |
| // For instantApps, the number of dependent atoms. |
| optional int64 atoms = 8; |
| |
| // The compile SDK. |
| // Stored in the form of a target hash |
| // e.g. "android-25" or "The Vendor Inc.:My Addon:10" |
| optional string compile_sdk = 9; |
| |
| // The split config as defined by the user in the DSL. |
| optional GradleBuildSplits splits = 10; |
| |
| // Version of the Kotlin Gradle plugin used, if any. |
| // e.g. '1.1.3' |
| optional string kotlin_plugin_version = 11; |
| |
| // The project options as set by the user or by studio. |
| optional GradleProjectOptionsSettings options = 12; |
| |
| // All of the gradle plugins applied to this project |
| repeated GradlePlugin plugin = 13; |
| |
| // The version of the firebase performance plugin applied to the project |
| // e.g. '1.3.0' |
| optional string firebase_performance_plugin_version = 14; |
| |
| // If enableCompose is set to true |
| optional bool compose_enabled = 15; |
| |
| // All of the gradle plugin names applied to this project, |
| // these are class names of the plugins, not free form names |
| // deprecated, use applied_plugins instead |
| repeated string plugin_names = 16 [deprecated = true]; |
| |
| // Record all of the task class names applied to the project |
| // e.g an example is ORG_GRADLE_API_TASKS_WRAPPER_WRAPPER_DECORATED |
| repeated string task_names = 17; |
| |
| // Records use of APIs used at the sub-project level |
| optional ProjectApiUse project_api_use = 18; |
| |
| // All the gradle plugins applied to this project. |
| repeated GradlePluginData applied_plugins = 19; |
| |
| // Java compilation options |
| optional CompileOptions compile_options = 20; |
| |
| // The NDK version |
| optional string ndk_version = 21; |
| |
| enum PluginType { |
| UNKNOWN_PLUGIN_TYPE = 0; |
| // The 'com.android.application' or 'com.android.model.application' plugins. |
| APPLICATION = 1; |
| // The 'com.android.library' or 'com.android.model.library' plugins. |
| LIBRARY = 2; |
| // The 'com.android.test' plugin. |
| TEST = 3; |
| // The 'com.android.atom' plugin. |
| ATOM = 4; |
| // The 'com.android.instantapp' plugin. |
| INSTANTAPP = 5; |
| // The 'com.android.feature' plugin. |
| FEATURE = 6; |
| // The 'com.android.dynamic-feature' plugin. |
| DYNAMIC_FEATURE = 7; |
| // The 'com.android.fused-library' plugin |
| FUSED_LIBRARIES = 8; |
| // the 'com.android.privacy-sandbox-sdk' plugin |
| PRIVACY_SANDBOX_SDK = 9; |
| // The 'com.android.kotlin.multiplatform.library' plugin |
| KOTLIN_MULTIPLATFORM_ANDROID_LIBRARY = 10; |
| } |
| |
| enum PluginGeneration { |
| UNKNOWN_PLUGIN_GENERATION = 0; |
| // The 'com.android.[application,library,test,atom,instantapp] plugins. |
| FIRST = 1; |
| // The 'com.android.model.[application,library]' plugins |
| COMPONENT_MODEL = 2; |
| } |
| |
| enum GradlePlugin { |
| UNKNOWN_GRADLE_PLUGIN = 0; |
| ORG_GRADLE_API_PLUGINS_HELPTASKSPLUGIN = 1; |
| COM_ANDROID_BUILD_GRADLE_API_ANDROIDBASEPLUGIN = 2; |
| COM_ANDROID_BUILD_API_PLUGIN_ANDROIDBASEPLUGIN = 3; |
| ORG_GRADLE_LANGUAGE_BASE_PLUGINS_LIFECYCLEBASEPLUGIN = 4; |
| ORG_GRADLE_API_PLUGINS_BASEPLUGIN = 5; |
| ORG_GRADLE_API_PLUGINS_REPORTINGBASEPLUGIN = 6; |
| ORG_GRADLE_PLATFORM_BASE_PLUGINS_COMPONENTBASEPLUGIN = 7; |
| ORG_GRADLE_LANGUAGE_BASE_PLUGINS_LANGUAGEBASEPLUGIN = 8; |
| ORG_GRADLE_PLATFORM_BASE_PLUGINS_BINARYBASEPLUGIN = 9; |
| ORG_GRADLE_API_PLUGINS_JAVABASEPLUGIN = 10; |
| COM_ANDROID_BUILD_GRADLE_APPPLUGIN = 11; |
| COM_ANDROID_BUILD_API_PLUGIN_APPPLUGIN = 12; |
| ORG_JETBRAINS_KOTLIN_GRADLE_PLUGIN_KOTLINANDROIDPLUGINWRAPPER = 13; |
| COM_GOOGLE_GMS_GOOGLESERVICES_GOOGLESERVICESPLUGIN = 14; |
| ORG_GRADLE_API_PLUGINS_ANDROIDMAVENPLUGIN = 15; |
| ORG_GRADLE_API_PLUGINS_JAVAPLUGIN = 16; |
| ORG_GRADLE_API_PLUGINS_MAVENPLUGIN = 17; |
| ORG_GRADLE_API_PLUGINS_QUALITY_CHECKSTYLEPLUGIN = 18; |
| ORG_GRADLE_API_PLUGINS_QUALITY_FINDBUGSPLUGIN = 19; |
| ORG_GRADLE_API_PLUGINS_QUALITY_JDEPEND = 20; |
| ORG_GRADLE_API_PLUGINS_QUALITY_PMDPLUGIN = 21; |
| ORG_GRADLE_API_PUBLISH_MAVEN_PLUGINS_MAVENPUBLISHPLUGIN = 22; |
| ORG_GRADLE_PLUGINS_SIGNING_SIGNINGPLUGIN = 23; |
| ORG_GRADLE_TESTING_JACOCO_PLUGINS_JACOCOPLUGIN = 24; |
| COM_GOOGLE_AR_SCENEFORM_PLUGIN_SCENEFORMPLUGIN = 25; |
| COM_GOOGLE_ANDROID_GMS_STRICTVERSIONMATCHERPLUGIN = 26; |
| COM_GOOGLE_FIREBASE_PERF_PLUGIN_FIREBASEPERFPLUGIN = 27; |
| COM_GOOGLE_FIREBASE_CRASH_PLUGIN_FIREBASECRASHPLUGIN = 28; |
| COM_GOOGLE_GMS_OSS_LICENSES_PLUGIN_OSSLICENSESPLUGIN = 29; |
| ORG_GOLANG_MOBILE_GOBINDPLUGIN = 30; |
| BUTTERKNIFE_PLUGIN_BUTTERKNIFEPLUGIN = 31; |
| COM_DICEDMELON_GRADLE_JACOCO_ANDROID_JACOCOANDROIDPLUGIN = 32; |
| COM_GETKEEPSAFE_DEXCOUNT_DEXMETHODCOUNTPLUGIN = 33; |
| COM_GITHUB_BENMANES_GRADLE_VERSIONS_VERSIONSPLUGIN = 34; |
| COM_JAKEWHARTON_SDKMANAGER_SDKMANAGERPLUGIN = 35; |
| COM_JFROG_BINTRAY_GRADLE_BINTRAYPLUGIN = 36; |
| COM_NEENBEDANKT_GRADLE_ANDROIDAPT_ANDROIDAPTPLUGIN = 37; |
| COM_NOVODA_GRADLE_RELEASE_RELEASEPLUGIN = 38; |
| DE_TRIPLET_GRADLE_PLAY_PLAYPUBLISHERPLUGIN = 39; |
| HUGO_WEAVING_PLUGIN_HUGOPLUGIN = 40; |
| IO_REALM_GRADLE_REALM = 41; |
| ME_TATARKA_RETROLAMBDAPLUGIN = 42; |
| ORG_JETBRAINS_KOTLIN_GRADLE_INTERNAL_ANDROIDEXTENSIONSSUBPLUGININDICATOR = |
| 43; |
| ORG_JETBRAINS_KOTLIN_GRADLE_INTERNAL_KAPT3GRADLESUBPLUGIN = 44; |
| ORG_KT3K_GRADLE_PLUGIN_COVERALLSPLUGIN = 45; |
| COM_CRASHLYTICS_TOOLS_GRADLE_CRASHLYTICSPLUGIN = 46; |
| COM_ANDROID_BUILD_GRADLE_DYNAMICFEATUREPLUGIN = 47; |
| COM_ANDROID_BUILD_GRADLE_FEATUREPLUGIN = 48; |
| COM_ANDROID_BUILD_GRADLE_INSTANTAPPPLUGIN = 49; |
| COM_ANDROID_BUILD_GRADLE_INTERNAL_PLUGINS_STRUCTUREPLUGIN = 50; |
| COM_ANDROID_BUILD_GRADLE_LIBRARYPLUGIN = 51; |
| COM_ANDROID_BUILD_GRADLE_LINTPLUGIN = 52; |
| COM_ANDROID_BUILD_GRADLE_REPORTINGPLUGIN = 53; |
| COM_ANDROID_BUILD_GRADLE_TESTPLUGIN = 54; |
| ORG_GRADLE_BUILDINIT_PLUGINS_BUILDINITPLUGIN = 55; |
| ORG_GRADLE_BUILDINIT_PLUGINS_WRAPPERPLUGIN = 56; |
| COM_ANDROID_BUILD_GRADLE_INTERNAL_PLUGINS_APPPLUGIN = 57; |
| COM_ANDROID_BUILD_GRADLE_INTERNAL_PLUGINS_LIBRARYPLUGIN = 58; |
| COM_ANDROID_BUILD_GRADLE_INTERNAL_PLUGINS_DYNAMICFEATUREPLUGIN = 59; |
| COM_ANDROID_BUILD_GRADLE_INTERNAL_PLUGINS_REPORTINGPLUGIN = 60; |
| COM_ANDROID_BUILD_GRADLE_INTERNAL_PLUGINS_TESTPLUGIN = 61; |
| COM_ANDROID_BUILD_GRADLE_INTERNAL_PLUGINS_VERSIONCHECKPLUGIN = 62; |
| PROGUARD_GRADLE_PROGUARDPLUGIN = 63; |
| } |
| |
| // Java compilation options |
| message CompileOptions { |
| // Major version of the Java source code (e.g., 8) |
| optional int32 source_compatibility = 1; |
| |
| // Major version of the generated Java bytecode (e.g., 8) |
| optional int32 target_compatibility = 2; |
| |
| // Major language version of the Java toolchain if it is used (e.g., 17) |
| optional int32 toolchain_language_version = 3; |
| } |
| } |
| |
| // Data of a gradle plugin. |
| message GradlePluginData { |
| // The name of the plugin class. e.g. com.android.build.gradle.LintPlugin |
| optional string class_name = 1; |
| |
| // The name of the jar containing the plugin class, will be on the form: |
| // artifactId-version. e.g. "kotlin-gradle-plugin-1.5.30" |
| optional string jar_name = 2; |
| } |
| |
| // Records use of APIs used at the gradle project level |
| message ProjectApiUse { |
| // Whether the device provider API is used in this project. |
| optional bool builder_test_api_device_provider = 1; |
| |
| // Whether the test server API is used in this project. |
| optional bool builder_test_api_test_server = 2; |
| } |
| |
| // Configuration flags for the gradle plugin. |
| // |
| // These are set by studio when invoking the gradle plugin, or manually by the |
| // end user. |
| // |
| // The Android Gradle Plugin will only report options that are explicitly set. |
| // See tools/analytics-library/protos/src/main/proto/analytics_enums.proto for |
| // the enums for these option classes. |
| message GradleProjectOptionsSettings { |
| // Boolean options that are explicitly set. |
| // Note that boolean options have defaults. This is not captured here, |
| // only what is overridden either manually by the developer or by studio. |
| // A reference to the proto enum in android git, see BooleanOption in |
| // tools/analytics-library/protos/src/main/proto/analytics_enums.proto |
| // Boolean options that are explicitly set to true. |
| repeated int32 true_boolean_options = 1; |
| // Boolean options that are explicitly set to false. |
| // (see above description of true_boolean_options) |
| repeated int32 false_boolean_options = 2; |
| |
| // Optional boolean options that are explicitly set. |
| // A reference to the proto enum in android git, see OptionalBooleanOption in |
| // tools/analytics-library/protos/src/main/proto/analytics_enums.proto |
| // Optional boolean options that are explicitly set to true. |
| repeated int32 true_optional_boolean_options = 3; |
| // Optional boolean options that are explicitly set to false. |
| // (see above description of true_optional_boolean_options) |
| repeated int32 false_optional_boolean_options = 4; |
| |
| // Integer option values that are explicitly set, with their values. |
| // Contains a reference to the proto enum in android git, see IntegerOption in |
| // tools/analytics-library/protos/src/main/proto/analytics_enums.proto |
| repeated GradleIntegerOptionEntry integer_option_values = 5; |
| |
| // Long options that are explicitly set. Values are not included. |
| // A reference to the proto enum in android git, see LongOption in |
| // tools/analytics-library/protos/src/main/proto/analytics_enums.proto |
| repeated int32 long_options = 6; |
| |
| // String options that are explicitly set. Values are not recorded as they |
| // could include arbitrary information. |
| // A reference to the proto enum in android git, see StringOption in |
| // tools/analytics-library/protos/src/main/proto/analytics_enums.proto |
| repeated int32 string_options = 7; |
| |
| // Module property keys (experimental properties) that are explicitly set. |
| // A reference to the proto enum in android git, see ModulePropertyKeys in |
| // tools/analytics-library/protos/src/main/proto/analytics_enums.proto |
| repeated int32 module_property_keys = 8; |
| } |
| |
| // An explicitly set integer option in the gradle plugin, with its value. |
| message GradleIntegerOptionEntry { |
| // The integer option, set by studio or the user. |
| // A reference to the proto enum in android git, see IntegerOption in |
| // tools/analytics-library/protos/src/main/proto/analytics_enums.proto |
| optional int32 integer_option = 1; |
| // The value set by the user for this integer option. |
| // Integer options are of one of two forms, and do not identify users. |
| // 1. Software and protocol versions, such as the build target device API |
| // level, or the type of model requested by studio. |
| // 2. Performance tuning settings, such as test shard counts, thread pool |
| // sizes and buffer sizes. |
| optional int32 integer_option_value = 2; |
| } |
| |
| message GradleBuildSplits { |
| // Are density splits enabled? |
| optional bool density_enabled = 1; |
| // Is automatic discovery based on the merged resources enabled? |
| // Only set if density splits are enabled. |
| // Deprecated as of AS3.3 (b/111291762) |
| optional bool density_auto = 2 [deprecated = true]; |
| // Injected compatible screens manifest values. |
| // Only populated if language splits are enabled. |
| // e.g. NORMAL, LARGE, XLARGE |
| repeated CompatibleScreenSize density_compatible_screens = 3; |
| // Densities that the application will be split on. |
| // Only populated if density splits are enabled. |
| // e.g. 480, 560, 640 |
| // See |
| // https://android.googlesource.com/platform/tools/base/+/studio-master-dev/layoutlib-api/src/main/java/com/android/resources/Density.java |
| // for a comprehensive list of possible values. |
| repeated int32 density_values = 4; |
| |
| // Are language splits enabled? |
| optional bool language_enabled = 5; |
| // Is automatic discovery based on the merged resources enabled? |
| // Only set if language splits are enabled. |
| // Deprecated as of AS3.3 (b/111291762) |
| optional bool language_auto = 6 [deprecated = true]; |
| // Language and region codes that the application will be split on. |
| // Only populated if language splits are enabled. |
| // e.g. 'fr,fr-rBE', 'fr-rCA', 'en' |
| repeated string language_includes = 7; |
| |
| // Are ABI splits enabled? |
| optional bool abi_enabled = 8; |
| // Will a universal APK be generated? |
| // Only set if abi splits are enabled. |
| optional bool abi_enable_universal_apk = 9; |
| // ABIs that the application will be split on. |
| // Only populated if abi splits are enabled. |
| // e.g. 'x86', 'armeabi-v7a' |
| repeated DeviceInfo.ApplicationBinaryInterface abi_filters = 10; |
| |
| enum CompatibleScreenSize { |
| UNKNOWN_SCREEN_SIZE = 0; |
| SMALL = 1; |
| NORMAL = 2; |
| LARGE = 3; |
| XLARGE = 4; |
| } |
| } |
| |
| message GradleBuildProjectMetrics { |
| // The time taken to collect these metrics |
| optional int64 metrics_time_ns = 1; |
| |
| // The size of the APK built, if relevant. |
| optional int64 apk_size = 2; |
| |
| // The size of the resources_ap included in that apk. |
| optional int64 resources_ap_size = 3; |
| } |
| |
| message GradleBuildVariant { |
| // Identifier, local to this AndroidStudioEvent, for the variant. |
| // Can be used to correlate spans (GradleBuildProfileSpan) with this |
| // project for this build only. Is created by sequentially |
| // numbering variants as they are created. |
| // Is not stable across build invocations. |
| optional int64 id = 1; |
| |
| // Whether the variant is debuggable. |
| optional bool is_debug = 2; |
| |
| // Whether the variant is compiled using jack |
| optional bool use_jack = 3; |
| |
| // Whether the variant is minified |
| optional bool minify_enabled = 4; |
| |
| // Is multidex enabled for the variant |
| optional bool use_multidex = 5; |
| |
| // Is legacy (pre-api 19) multidex enabled for the variant. |
| // Only can true if use_multidex is also true. |
| optional bool use_legacy_multidex = 6; |
| |
| // The type of variant. |
| optional VariantType variant_type = 7; |
| // For test variants, the tested variant id. (See GradleBuildVariant.id) |
| optional int64 tested_id = 8; |
| |
| // List of proguard flags used in this build variant. |
| // NOTE this is a string as the proguard flags can be changed |
| // based on which release of proguard is being used and is outside of our |
| // control. See https://www.guardsquare.com/en/proguard/manual/usage |
| // for current list. This property only will contain the "-<flag>" without |
| // the arguments passed to that flag. |
| repeated string proguard_flags = 9; |
| |
| // Java annotation processors used in this build variant. |
| // Uses the Gradle compact format: package:module:version |
| repeated AnnotationProcessorInfo annotation_processors = 10; |
| |
| // If Java 8 language support is enabled, which tools provides it. |
| optional Java8LangSupport java8_lang_support = 11; |
| |
| // The various device api versions of this variant. |
| // Minimum supported. |
| optional ApiVersion min_sdk_version = 12; |
| // Target sdk version. |
| optional ApiVersion target_sdk_version = 13; |
| // The maximum sdk version |
| optional ApiVersion max_sdk_version = 14; |
| optional DexBuilderTool dex_builder = 15; |
| optional DexMergerTool dex_merger = 16; |
| optional CodeShrinkerTool code_shrinker = 17; |
| // The method used to run instrumentation tests for this variant. |
| optional TestRun.TestExecution test_execution = 18; |
| // The underlying native project system. |
| optional GradleNativeAndroidModule.NativeBuildSystemType |
| native_build_system_type = 19; |
| // The CMake version number if this is a CMake-based build. |
| optional string native_cmake_version = 20; |
| // Per-ABI native build info. |
| repeated NativeBuildConfigInfo native_build_config = 21; |
| |
| // Whether annotation processing could be run incrementally |
| optional bool is_annotation_processing_incremental = 22; |
| |
| // Whether this variant (a base module or dynamic feature) is marked as |
| // instant enabled in its manifest (Google Play Instant / Instant Apps) |
| optional bool is_instant_enabled = 23; |
| |
| // Whether coreLibraryDesugaring is enabled for the variant |
| optional bool core_library_desugaring_enabled = 24; |
| |
| // container for variant api accesses if the variant api was used. |
| optional VariantApiUsage variant_api_access = 25; |
| |
| // Kotlin-specific options in build files |
| optional KotlinOptions kotlin_options = 26; |
| |
| // List of registered classes transforms |
| repeated AsmClassesTransformRegistration asm_classes_transforms = 27; |
| |
| // List of updates to the frames computation mode |
| repeated AsmFramesComputationModeUpdate frames_computation_mode_updates = 28; |
| |
| // Native diagnostic codes logged while processing this variant. For a list |
| // of possible values, see |
| // /tools/base/common/src/main/java/com/android/utils/cxx/CxxDiagnosticCode.kt |
| repeated int32 cxx_diagnostic_codes = 29 [packed = true]; |
| |
| // whether this variant has unit tests enabled |
| optional bool has_unit_test = 30; |
| |
| // whether this variant has android tests enabled |
| optional bool has_android_test = 31; |
| |
| // whether this variant has test fixtures enabled |
| optional bool has_test_fixtures = 32; |
| |
| // information about the privacy sandbox SDKs this project consumes |
| optional PrivacySandboxDependenciesInfo privacy_sandbox_dependencies_info = |
| 33; |
| |
| // The nature of this variant. |
| // The test variants have an associated tested variant. |
| // See com.android.builder.core.VariantType |
| enum VariantType { |
| // For building an APK. |
| APPLICATION = 0; |
| // For building an AAR. |
| LIBRARY = 1; |
| // For building an android test APK. |
| ANDROID_TEST = 2; |
| // For building unit tests to run locally. |
| UNIT_TEST = 3; |
| // For building an atombundle. |
| ATOM = 4; |
| // For building an IAPK. |
| INSTANTAPP = 5; |
| // For building a split APK. |
| FEATURE = 6; |
| // For building an optional APK. |
| OPTIONAL_APK = 7; |
| // For building a test APK |
| TEST_APK = 8; |
| // For a java library (java or java-library plugin, for the standalone lint |
| // plugin) |
| JAVA_LIBRARY = 9; |
| // For test fixtures components. |
| TEST_FIXTURES = 10; |
| // main artifact of the privacy sandbox sdk bundle plugin |
| PRIVACY_SANDBOX_SDK = 11; |
| // Main variant of the kotlin multiplatform android library plugin |
| KOTLIN_MULTIPLATFORM_ANDROID_LIBRARY = 12; |
| // Test component for host side screenshot testing |
| SCREENSHOT_TEST = 13; |
| } |
| |
| // Different tools that provide Java 8 language usage. |
| enum Java8LangSupport { |
| // the built-in support in the plugin |
| INTERNAL = 0; |
| // Retrolambda plugin |
| RETROLAMBDA = 1; |
| // Dexguard plugin |
| DEXGUARD = 2; |
| // Jack compiler |
| JACK = 3; |
| // D8 compiler |
| D8 = 4; |
| // R8 compiler |
| R8_DESUGARING = 5; |
| } |
| |
| // Tools that can used to build dex |
| enum DexBuilderTool { |
| UNKNOWN_DEX_BUILDER_TOOL = 0; |
| DX_DEXER = 1; |
| D8_DEXER = 2; |
| } |
| |
| // Tools that can be used to merge dex files |
| enum DexMergerTool { |
| UNKNOWN_DEX_MERGER_TOOL = 0; |
| DX_MERGER = 1; |
| D8_MERGER = 2; |
| } |
| |
| // The tool used for code shrinking |
| enum CodeShrinkerTool { |
| UNKNOWN_CODE_SHRINKER = 0; |
| PROGUARD = 1; |
| ANDROID_GRADLE_SHRINKER = 2; |
| R8 = 3; |
| } |
| |
| // Per-variant information about native build |
| message NativeBuildConfigInfo { |
| // Whether the Json generation phase was successful, up-to-date, or failed |
| optional GenerationOutcome outcome = 1; |
| // The ABI that generation is run for |
| optional DeviceInfo.ApplicationBinaryInterface abi = 2; |
| // The Platform API version that generation phase chose |
| optional int32 platform_api_version = 3; |
| // Whether or not this was a debuggable build |
| optional bool debuggable = 4; |
| // Time at the start of generation |
| optional int64 generation_start_ms = 5; |
| // Duration of Json generation |
| optional int64 generation_duration_ms = 6; |
| // Information about individual libraries |
| repeated NativeLibraryInfo libraries = 7; |
| |
| enum GenerationOutcome { |
| UNKNOWN_GENERATION_OUTCOME = 0; |
| FAILED = 1; |
| SUCCESS_BUILT = 2; |
| SUCCESS_UP_TO_DATE = 3; |
| } |
| } |
| |
| // Per-variant-per-library information about native build |
| message NativeLibraryInfo { |
| optional int32 source_file_count = 1; |
| |
| // Whether or not the compiler flags contain -glldb |
| optional bool has_glldb_flag = 2; |
| } |
| |
| message KotlinOptions { |
| // if IR backend is enabled |
| optional bool use_ir = 1; |
| |
| // Language version (e.g., "2.0") |
| optional string language_version = 2; |
| } |
| |
| // Information collected when assigning IDs to each Privacy |
| // Sandbox SDK this variant depends on |
| message PrivacySandboxDependenciesInfo { |
| // The Privacy Sandbox SDKs this variant depends on |
| repeated RuntimeEnabledSdk sdk = 1; |
| |
| // Privacy sandbox SDKs can only be published via Google Play, this |
| // corresponds to runtime_enabled_sdk_config.proto which is the reference |
| // pushed as part of this app's app |
| // bundle to Google Play to allow the SDK dependency to be matched to the |
| // device. |
| message RuntimeEnabledSdk { |
| // Package name of the runtime-enabled SDK. |
| optional string package_name = 1; |
| // Major version of the runtime-enabled SDK. |
| optional int32 version_major = 2; |
| // Minor version of the runtime-enabled SDK. |
| optional int32 version_minor = 3; |
| // Patch version of the runtime-enabled SDK. |
| // The dependency on a specific patch version is a build-time soft |
| // dependency, that ensures reproducibility of local builds; it does not |
| // imply that all |
| // app stores will honour it when delivering apps to end-users. For |
| // instance, some stores may just honour the dependency on a specific |
| // major and minor, |
| // while serve the latest available patch for the given major.minor |
| // version of the SDK. |
| optional int32 build_time_version_patch = 4; |
| } |
| } |
| } |
| |
| message AnnotationProcessorInfo { |
| // The user's original spec, e.g. 'org.immutables:value:2.4.4' |
| // Often, though not always, in the form 'package:name:version'. |
| optional string spec = 1; |
| |
| // How the processor was included in the build file. |
| optional InclusionType inclusion_type = 2; |
| |
| // Whether the annotation processor is |
| // incremental(isolating/aggregating/dynamic) |
| optional bool is_incremental = 3; |
| |
| enum InclusionType { |
| // The old apt way of including them. |
| APT = 0; |
| // Implicit on the compile classpath. |
| COMPILE_CLASSPATH = 1; |
| // The new annotationProcessor way to include them. |
| ANNOTATION_PROCESSOR = 2; |
| // From KSP |
| KSP = 3; |
| } |
| } |
| |
| // An android API version, for min, compile, max and target sdk versions. |
| // E.g. for Nougat 7.1 this is api_level=25, codename unset. |
| // For O-preview this is api_level=25, codename="O". |
| message ApiVersion { |
| optional int64 api_level = 1; |
| optional string codename = 2; |
| } |
| |
| message GradleBuildMemorySample { |
| // Garbage collection time since the current daemon started. |
| // Historical: Used in Android Gradle Plugin 2.2.x, circa 2016-10 |
| // Replaced by JavaProcessStats. |
| optional int64 gc_time_ms = 1 [deprecated = true]; |
| |
| // Garbage collection count since the current daemon started. |
| // Historical: Used in Android Gradle Plugin 2.2.x, circa 2016-10. |
| // Replaced by JavaProcessStats. |
| optional int64 gc_count = 2 [deprecated = true]; |
| |
| // Time that the memory stats were collected. |
| optional int64 timestamp = 3; |
| |
| // More detailed stats on the current running java process. |
| optional JavaProcessStats java_process_stats = 4; |
| } |
| |
| // A single execution span from a build. |
| // For example, a task execution or creation of some tasks for a variant. |
| message GradleBuildProfileSpan { |
| // Identifier for this span, created by sequentially allocating IDs to spans |
| // as they start. Used only for the parent-child relationship of spans, to |
| // show execution that is part of another span. |
| // Not stable or meaningful across builds. |
| optional int64 id = 1; |
| |
| // For nested spans: the id for containing span. |
| // See GradleBuildProfileSpan.id. |
| optional int64 parent_id = 2; |
| |
| // The start time of this event |
| optional int64 start_time_in_ms = 3; |
| |
| // The duration of this event. May be zero. |
| optional int64 duration_in_ms = 4; |
| |
| // The type of event recorded |
| optional ExecutionType type = 5; |
| |
| // More informations about the execution of TransformTasks. |
| // Only used when executionType is TASK_TRANSFORM_PREPARATION or |
| // TASK_TRANSFORM. |
| optional GradleTransformExecution transform = 6; |
| |
| // More informations about the execution of Tasks. |
| // Only used when executionType is TASK_EXECUTION |
| optional GradleTaskExecution task = 9; |
| |
| // Session id of the GradleBuildProject that this span is part of. |
| // The ID is not stable nor meaningful over multiple GradleBuildProfile. |
| // See GradleBuildProfile.id |
| optional int64 project = 7; |
| |
| // Session id of the GradleBuildVariant that this span is part of. |
| // The ID is not stable nor meaningful over multiple GradleBuildProfile. |
| // See GradleBuildVariant.id |
| optional int64 variant = 8; |
| |
| // Thread that this execution occurs on. |
| // Generated by sequentially numbering java threads that do work that is |
| // recorded. |
| // Will not be populated for async recorded events, |
| // such as from the task execution listener. |
| optional int64 thread_id = 10; |
| |
| // The type of execution. |
| // This was originally com.android.builder.profile.ExecutionType. |
| enum ExecutionType { |
| SOME_RANDOM_PROCESSING = 1; |
| BASE_PLUGIN_PROJECT_CONFIGURE = 2; |
| BASE_PLUGIN_PROJECT_BASE_EXTENSION_CREATION = 3; |
| BASE_PLUGIN_PROJECT_TASKS_CREATION = 4; |
| BASE_PLUGIN_BUILD_FINISHED = 5; |
| TASK_MANAGER_CREATE_TASKS = 6; |
| BASE_PLUGIN_CREATE_ANDROID_TASKS = 7; |
| VARIANT_MANAGER_CREATE_ANDROID_TASKS = 8; |
| VARIANT_MANAGER_CREATE_TASKS_FOR_VARIANT = 9; |
| VARIANT_MANAGER_CREATE_LINT_TASKS = 10; |
| VARIANT_MANAGER_CREATE_TESTS_TASKS = 11; |
| VARIANT_MANAGER_CREATE_VARIANTS = 12; |
| RESOLVE_DEPENDENCIES = 13; |
| // span for task execution as reported by Gradle, that's including Gradle's |
| // pre and post task activities. |
| TASK_EXECUTION = 14; |
| WORKER_EXECUTION = 15; |
| THREAD_EXECUTION = 16; |
| ARTIFACT_TRANSFORM = 17; |
| INITIAL_METADATA = 100 [deprecated = true]; |
| FINAL_METADATA = 101 [deprecated = true]; |
| GENERAL_CONFIG = 102; |
| VARIANT_CONFIG = 103; |
| VARIANT_MANAGER_EXTERNAL_NATIVE_CONFIG_VALUES = 104; |
| APK_METRICS = 105; |
| |
| // span for task execution excluding Gradle's pre and post task activities. |
| TASK_EXECUTION_ALL_PHASES = 200; |
| // generic span types for task implementation. Phases are sequential sub |
| // parts of the task implementation that can help determine the performance |
| // of sub parts of the task implementation. |
| // For instance a task spans can look like : |
| // |
| // <---------------------- TASK_EXECUTION -------------------> |
| // <--PRE--><------- TASK_EXECUTION_ALL_PHASES ----><--POST--> |
| // <---PHASE_1---><-PHASE_2-><--PHASE_3---> |
| // |
| TASK_EXECUTION_PHASE_1 = 201; |
| TASK_EXECUTION_PHASE_2 = 202; |
| TASK_EXECUTION_PHASE_3 = 203; |
| TASK_EXECUTION_PHASE_4 = 204; |
| TASK_EXECUTION_PHASE_5 = 205; |
| TASK_EXECUTION_PHASE_6 = 206; |
| TASK_EXECUTION_PHASE_7 = 207; |
| TASK_EXECUTION_PHASE_8 = 208; |
| TASK_EXECUTION_PHASE_9 = 209; |
| // span for gradle overhead before task execution |
| GRADLE_PRE_TASK_SPAN = 298; |
| // span for gradle overhead after task execution |
| GRADLE_POST_TASK_SPAN = 299; |
| |
| // ApplicationTaskManager per variant tasks. |
| APP_TASK_MANAGER_CREATE_MERGE_MANIFEST_TASK = 1000 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_GENERATE_RES_VALUES_TASK = 1001 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_CREATE_RENDERSCRIPT_TASK = 1002 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_MERGE_RESOURCES_TASK = 1003 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_MERGE_ASSETS_TASK = 1004 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_BUILD_CONFIG_TASK = 1005 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_PROCESS_RES_TASK = 1006 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_AIDL_TASK = 1007 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_COMPILE_TASK = 1008 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_NDK_TASK = 1009 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_SPLIT_TASK = 1010 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_PACKAGING_TASK = 1011 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_PREPROCESS_RESOURCES_TASK = 1012 |
| [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_BACKPORT_RESOURCES_TASK = 1013 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_LINT_TASK = 1014 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_MERGE_JNILIBS_FOLDERS_TASK = 1015 |
| [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_SHADER_TASK = 1016 [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_EXTERNAL_NATIVE_BUILD_TASK = 1017 |
| [deprecated = true]; |
| APP_TASK_MANAGER_CREATE_STRIP_NATIVE_LIBRARY_TASK = 1018 |
| [deprecated = true]; |
| |
| // LibraryTaskManager per variant tasks. |
| LIB_TASK_MANAGER_CREATE_MERGE_MANIFEST_TASK = 2000 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_GENERATE_RES_VALUES_TASK = 2001 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_CREATE_RENDERSCRIPT_TASK = 2002 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_MERGE_RESOURCES_TASK = 2003 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_MERGE_ASSETS_TASK = 2004 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_BUILD_CONFIG_TASK = 2005 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_PROCESS_RES_TASK = 2006 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_AIDL_TASK = 2007 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_COMPILE_TASK = 2008 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_NDK_TASK = 2009 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_SPLIT_TASK = 2010 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_PACKAGING_TASK = 2011 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_MERGE_PROGUARD_FILE_TASK = 2012 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_POST_COMPILATION_TASK = 2013 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_PROGUARD_TASK = 2014 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_PACKAGE_LOCAL_JAR = 2015 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_BACKPORT_RESOURCES_TASK = 2016 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_LINT_TASK = 2017 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_SHADER_TASK = 2018 [deprecated = true]; |
| LIB_TASK_MANAGER_CREATE_EXTERNAL_NATIVE_BUILD_TASK = 2019 |
| [deprecated = true]; |
| |
| // Task execution: Deprecated, use TASK_EXECUTION and |
| // GradleTaskExecution#Type instead. |
| // Deprecated July 2016. |
| GENERIC_TASK_EXECUTION = 3000 [deprecated = true]; |
| TASK_AIDL_COMPILE = 3001 [deprecated = true]; |
| TASK_DELETE = 3002 [deprecated = true]; |
| TASK_CHECK_MANIFEST = 3003 [deprecated = true]; |
| TASK_PREPARE_DEPENDENCIES_TASK = 3004 [deprecated = true]; |
| TASK_RENDERSCRIPT_COMPILE = 3005 [deprecated = true]; |
| TASK_GENERATE_BUILD_CONFIG = 3006 [deprecated = true]; |
| TASK_MERGE_ASSETS = 3007 [deprecated = true]; |
| TASK_GENERATE_RES_VALUES = 3008 [deprecated = true]; |
| TASK_MERGE_RESOURCES = 3009 [deprecated = true]; |
| TASK_MERGE_MANIFESTS = 3010 [deprecated = true]; |
| TASK_PROCESS_ANDROID_RESOURCES = 3011 [deprecated = true]; |
| TASK_JAVA_COMPILE = 3012 [deprecated = true]; |
| TASK_NDK_COMPILE = 3013 [deprecated = true]; |
| TASK_PRE_DEX = 3014 [deprecated = true]; |
| TASK_DEX = 3015 [deprecated = true]; |
| TASK_PACKAGE_SPLIT_RES = 3016 [deprecated = true]; |
| TASK_PROCESS_RESOURCES = 3017 [deprecated = true]; |
| TASK_VALIDATE_SIGNING_TASK = 3018 [deprecated = true]; |
| TASK_PACKAGE_APPLICATION = 3019 [deprecated = true]; |
| TASK_SPLIT_ZIP_ALIGN = 3020 [deprecated = true]; |
| TASK_ZIP_ALIGN = 3021 [deprecated = true]; |
| TASK_COPY = 3022 [deprecated = true]; |
| TASK_LINT = 3023 [deprecated = true]; |
| TASK_FILE_VERIFICATION = 3026 [deprecated = true]; |
| TASK_EXTERNAL_NATIVE_BUILD_GENERATE_JSON_PROCESS_PER_ABI = 3027 |
| [deprecated = true]; |
| TASK_EXTERNAL_NATIVE_BUILD_GENERATE_JSON_PROCESS = 3028 [deprecated = true]; |
| |
| // Transform execution |
| TASK_TRANSFORM_PREPARATION = 3024; |
| TASK_TRANSFORM = 3025; |
| |
| // AtomTaskManager per variant tasks. |
| ATOM_TASK_MANAGER_CREATE_MERGE_MANIFEST_TASK = 4000 [deprecated = true]; |
| ATOM_TASK_MANAGER_CREATE_GENERATE_RES_VALUES_TASK = 4001 |
| [deprecated = true]; |
| ATOM_TASK_MANAGER_CREATE_CREATE_RENDERSCRIPT_TASK = 4002 |
| [deprecated = true]; |
| ATOM_TASK_MANAGER_CREATE_MERGE_RESOURCES_TASK = 4003 [deprecated = true]; |
| ATOM_TASK_MANAGER_CREATE_MERGE_ASSETS_TASK = 4004 [deprecated = true]; |
| ATOM_TASK_MANAGER_CREATE_BUILD_CONFIG_TASK = 4005 [deprecated = true]; |
| ATOM_TASK_MANAGER_CREATE_PROCESS_RES_TASK = 4006 [deprecated = true]; |
| ATOM_TASK_MANAGER_CREATE_AIDL_TASK = 4007 [deprecated = true]; |
| ATOM_TASK_MANAGER_CREATE_SHADER_TASK = 4008 [deprecated = true]; |
| ATOM_TASK_MANAGER_CREATE_NDK_TASK = 4009 [deprecated = true]; |
| ATOM_TASK_MANAGER_CREATE_EXTERNAL_NATIVE_BUILD_TASK = 4010 |
| [deprecated = true]; |
| ATOM_TASK_MANAGER_CREATE_MERGE_JNILIBS_FOLDERS_TASK = 4011 |
| [deprecated = true]; |
| ATOM_TASK_MANAGER_CREATE_COMPILE_TASK = 4012 [deprecated = true]; |
| ATOM_TASK_MANAGER_CREATE_BUNDLING_TASK = 4013 [deprecated = true]; |
| ATOM_TASK_MANAGER_CREATE_LINT_TASK = 4014 [deprecated = true]; |
| |
| // InstantAppTaskManager per variant tasks. |
| INSTANTAPP_TASK_MANAGER_CREATE_MERGE_MANIFEST_TASK = 5000 |
| [deprecated = true]; |
| INSTANTAPP_TASK_MANAGER_CREATE_ATOM_PACKAGING_TASKS = 5001 |
| [deprecated = true]; |
| INSTANTAPP_TASK_MANAGER_CREATE_PROCESS_RES_TASK = 5002 [deprecated = true]; |
| INSTANTAPP_TASK_MANAGER_CREATE_PACKAGING_TASK = 5003 [deprecated = true]; |
| |
| // FeatureTaskManager per variant tasks. |
| FEATURE_TASK_MANAGER_CREATE_BASE_TASKS = 6000 [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_NON_BASE_TASKS = 6001 [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_MERGE_MANIFEST_TASK = 6002 [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_GENERATE_RES_VALUES_TASK = 6003 |
| [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_CREATE_RENDERSCRIPT_TASK = 6004 |
| [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_MERGE_RESOURCES_TASK = 6005 [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_MERGE_ASSETS_TASK = 6006 [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_BUILD_CONFIG_TASK = 6007 [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_PROCESS_RES_TASK = 6008 [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_AIDL_TASK = 6009 [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_SHADER_TASK = 6010 [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_NDK_TASK = 6011 [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_EXTERNAL_NATIVE_BUILD_TASK = 6012 |
| [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_MERGE_JNILIBS_FOLDERS_TASK = 6013 |
| [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_COMPILE_TASK = 6014 [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_STRIP_NATIVE_LIBRARY_TASK = 6015 |
| [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_SPLIT_TASK = 6016 [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_PACKAGING_TASK = 6017 [deprecated = true]; |
| FEATURE_TASK_MANAGER_CREATE_LINT_TASK = 6018 [deprecated = true]; |
| } |
| } |
| |
| message GradleTaskExecution { |
| // The task implementing class. |
| // Custom tasks are recorded as UNKNOWN_TASK_TYPE. |
| // This is an enum in android git: |
| // tools/analytics-library/protos/src/main/proto/analytics_enums.proto |
| optional int32 type = 1; |
| |
| // Whether the task did work (TaskState#getDidWork()) |
| // This is not necessarily the inverse of up_to_date: see |
| // https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/TaskState.html#getDidWork() |
| // DEPRECATED since 11/2022 (AGP 8.0). Use task_state instead. |
| optional bool did_work = 2 [deprecated = true]; |
| |
| // Whether the task was skipped (TaskState#getSkipped()) |
| // DEPRECATED since 11/2022 (AGP 8.0). Use task_state instead. |
| optional bool skipped = 3 [deprecated = true]; |
| |
| // Whether the task was up to date (TaskState#getUpToDate()) |
| // DEPRECATED since 11/2022 (AGP 8.0). Use task_state instead. |
| optional bool up_to_date = 4 [deprecated = true]; |
| |
| // Whether the task failed |
| // DEPRECATED since 11/2022 (AGP 8.0). Use task_state instead. |
| optional bool failed = 5 [deprecated = true]; |
| |
| // State of the task during the build |
| optional TaskState task_state = 6; |
| |
| // State of a task during a build, similar to |
| // https://docs.gradle.org/current/javadoc/org/gradle/testkit/runner/TaskOutcome.html |
| enum TaskState { |
| UNKNOWN = 0; |
| UP_TO_DATE = 1; |
| FROM_CACHE = 2; |
| DID_WORK_INCREMENTAL = 3; |
| DID_WORK_NON_INCREMENTAL = 4; |
| SKIPPED = 5; |
| FAILED = 6; |
| } |
| } |
| |
| message GradleTransformExecution { |
| // The transform implementing class. |
| // Custom transforms are recorded as UNKNOWN_TRANSFORM_TYPE. |
| // This is an enum in android git: |
| // tools/analytics-library/protos/src/main/proto/analytics_enums.proto |
| // Historical, was used before adding transform_class_name field |
| optional int32 type = 1 [deprecated = true]; |
| |
| // Whether the transform could be (in the case of TASK_TRANSFORM_PREPARATION) |
| // or was (in the case of TASK_TRANSFORM) incremental. |
| optional bool is_incremental = 2; |
| |
| // Name of the class executing the transform. |
| // Example: ShrinkResourcesTransform |
| optional string transform_class_name = 3; |
| } |
| |
| message InstantRunStatus { |
| // The type of artifacts built in this invocation. |
| // e.g. COLD for when the changes cannot be hot-swapped, either due to the |
| // app not running on the users device or the changes cannot be hot swapped. |
| optional BuildMode build_mode = 1; |
| |
| // The type of deploy that the build can generate artifacts for. |
| optional PatchingPolicy patching_policy = 2; |
| |
| // The result of the verifier run, whether the users change can be hot-swapped |
| // or requires a cold swap or full build is determined by the verifier. |
| optional VerifierStatus verifier_status = 3; |
| |
| // The built artifacts stored in the build info. |
| // Artifacts that were built, but superseeded (e.g. a main APK contains |
| // resources, so the resources do not need to be reported separately) are |
| // not included. |
| repeated InstantRunArtifact artifact = 4; |
| |
| enum BuildMode { |
| UNKNOWN_BUILD_MODE = 0; |
| HOT_WARM = 1; |
| COLD = 2; |
| FULL = 3; |
| } |
| |
| enum PatchingPolicy { |
| UNKNOWN_PATCHING_POLICY = 0; |
| // No Cold swap is possible |
| PRE_LOLLIPOP = 1; |
| // Cold swap done by shipping dex classes to the Instant Run runtime |
| MULTI_DEX = 2; |
| // Cold swap done by reinstalling APK splits. |
| MULTI_APK = 3; |
| // Cold swap done by reinstalling APK splits, resources in separate APK. |
| MULTI_APK_SEPARATE_RESOURCES = 4; |
| } |
| |
| enum VerifierStatus { |
| UNKNOWN_VERIFIER_STATUS = 0; |
| |
| COMPATIBLE = 1; |
| |
| // the verifier did not run successfully. |
| NOT_RUN = 2; |
| |
| // InstantRun disabled on element like a method, class or package. |
| INSTANT_RUN_DISABLED = 3; |
| |
| // Any inability to run the verifier on a file will be tagged as such |
| INSTANT_RUN_FAILURE = 4; |
| |
| // A new class was added. |
| CLASS_ADDED = 5; |
| |
| // changes in the hierarchy |
| PARENT_CLASS_CHANGED = 6; |
| IMPLEMENTED_INTERFACES_CHANGE = 7; |
| |
| // class related changes. |
| CLASS_ANNOTATION_CHANGE = 8; |
| STATIC_INITIALIZER_CHANGE = 9; |
| |
| // changes in constructors, |
| CONSTRUCTOR_SIGNATURE_CHANGE = 10; |
| |
| // changes in method |
| METHOD_SIGNATURE_CHANGE = 11; |
| METHOD_ANNOTATION_CHANGE = 12; |
| METHOD_DELETED = 13; |
| METHOD_ADDED = 14; |
| |
| // changes in fields. |
| FIELD_ADDED = 15; |
| FIELD_REMOVED = 16; |
| // change of field type or kind (static | instance) |
| FIELD_TYPE_CHANGE = 17; |
| |
| R_CLASS_CHANGE = 18; |
| |
| // reflection use |
| REFLECTION_USED = 19; |
| |
| JAVA_RESOURCES_CHANGED = 20; |
| |
| DEPENDENCY_CHANGED = 21; |
| |
| MANIFEST_FILE_CHANGE = 22; |
| |
| // the binary manifest file changed, probably due to references to resources |
| // which ID changed since last build. |
| BINARY_MANIFEST_FILE_CHANGE = 23; |
| |
| COLD_SWAP_REQUESTED = 24; |
| |
| FULL_BUILD_REQUESTED = 25; |
| |
| INITIAL_BUILD = 26; |
| |
| NO_CHANGES = 27; |
| |
| CHANGE_IN_SERIALIZABLE_CLASS_WITHOUT_VERSION_UID = 28; |
| |
| BUILD_NOT_INCREMENTAL = 29; |
| |
| // abstract method became implemented | method with code became abstract. |
| ABSTRACT_METHOD_CHANGE = 30; |
| |
| // a synthetic constructor was changed. |
| SYNTHETIC_CONSTRUCTOR_CHANGE = 31; |
| } |
| } |
| |
| // all types of build can now register artifacts so we can find non InstantRun |
| // related artifact types like full slits and aar. |
| message InstantRunArtifact { |
| optional Type type = 1; |
| |
| enum Type { |
| // Main APK file for 19, and 21 platforms when using |
| // PatchingPolicy.MULTI_DEX. |
| MAIN = 1; |
| // Main APK file when application is using PatchingPolicy.MULTI_DEX. |
| SPLIT_MAIN = 2; |
| // Reload dex file that can be used to patch application live. |
| RELOAD_DEX = 3; |
| // Restart.dex file that can be used for Dalvik to restart applications |
| // with minimum set of changes delivered. |
| RESTART_DEX = 4; |
| // Shard dex file that can be used to replace originally installed |
| // multi-dex shard. |
| DEX = 5; |
| // Pure split (code only) that can be installed individually on M+ devices. |
| SPLIT = 6; |
| // Resources: res.ap_ file |
| RESOURCES = 7; |
| // Full split, main apk file with reduced set of configs |
| FULL_SPLIT = 8; |
| // AAR file. |
| AAR = 9; |
| } |
| } |
| |
| // Details about the LLDB Frontend process |
| message LLDBFrontendDetails { |
| // the value returned when the LLDB Frontend process exited. |
| optional int32 exit_code = 1; |
| } |
| |
| // Error details from the Firebase Assistant. |
| message FirebaseErrorDetails { |
| // The error message presented to the user upon Firebase errors. |
| optional string error_message = 1; |
| } |
| |
| // Contextual details for Firebase Assistant events. This message acts as a |
| // generic container for all events rather than having different messages for |
| // each event type. While some fields will be knowingly blank/irrelevant for |
| // some event types, frequency of logging is expected to be low enough that |
| // this does not represent request/storage bloat. |
| message FirebaseContextDetails { |
| // Public project id, used for attributing project growth to the plugin. |
| optional string project_id = 1; |
| |
| // Secondary identifier for the project, also stored for more flexibility with |
| // joining the data with other sets. |
| optional string project_number = 2; |
| |
| // Whether the action was performed while the user was logged in. |
| optional bool logged_in = 3; |
| |
| // Whether the action was performed on while the related Studio project's |
| // modules were connected to a Firebase project. |
| optional ConnectStatus connect_status = 4; |
| |
| // Tutorial resource event relates to. Restricted to non PII such as the id |
| // of the tutorial that was opened. |
| optional string performed_on = 5; |
| |
| // Time that an action took to be performed. A primary example is how long |
| // a tutorial was open before navigating away. |
| optional int64 duration = 6; |
| |
| enum ConnectStatus { |
| // Unable to determine connection status. |
| UNKNOWN_CONNECT_STATUS = 1; |
| // No modules connected. |
| NOT_CONNECTED = 2; |
| // 1 to N-1 modules were connected in a project with N modules. |
| PARTIALLY_CONNECTED = 3; |
| // All modules connected. |
| CONNECTED = 4; |
| } |
| } |
| |
| // Details on the GPU Debugger tracing run |
| message GfxTracingDetails { |
| // total time the trace took |
| optional int64 total_time = 1; |
| // class name of the UI command selected to affect the tracing. |
| optional string command = 2; |
| // Error message when tracing fails. |
| optional string error_message = 3; |
| // A path describing the kind of details from the trace. This is a mix |
| // of class names (of our code) and random ids generated for the trace. |
| // e.g. 'Capture(7c6e72eebe2e6d76751b0328971e7fb29ceed82b).Atoms[6307].' + |
| // 'Resource<e1b2a028ce62a97b235172963ddee35f386c6940>.' + |
| // 'Thumbnail<RGBA,100x100>.As<RGBA>' |
| optional string trace_path = 4; |
| // the image format of the gpu image being traced. e.g. 'image/png' |
| optional string image_format = 5; |
| // the width of the image being traced. |
| optional int64 image_width = 6; |
| // the height of the image being traced. |
| optional int64 image_height = 7; |
| } |
| |
| // Details of an invocation of the TestRecorder to generate tests. |
| message TestRecorderDetails { |
| // The number of events in the test generated by the test recorder. |
| optional int64 event_count = 1; |
| // The number of assertions in the test generated by the test recorder. |
| optional int64 assertion_count = 2; |
| } |
| |
| // Reports aggregated information about how users invoke available UI actions. |
| message UIActionStats { |
| // java class name (our code, not customer) of the UI Action reported on |
| // e.g. 'com.android.build.instant_run.HotSwapBuildAction' |
| optional string action_class_name = 1; |
| // How often since the last report this action was invoked. |
| optional int64 invocations = 2; |
| // The way this action was invoked by the user. |
| optional InvocationKind invocation_kind = 3; |
| // true if this message is sent directly, false if sent |
| // with aggregated data over time. |
| optional bool direct = 4; |
| // The parent window/menu/toolbar that contains this action. |
| // this is a software identifier specified in code in our product and does |
| // not contain user data. Examples: "MainMenu", "Editor", "NavBarToolbar". |
| optional string ui_place = 5; |
| // For toggle UI actions to track whether they are turning on or off. |
| optional bool toggling_on = 6; |
| |
| // The way an UI action was invocated by the user. |
| enum InvocationKind { |
| UNKNOWN_INVOCATION_KIND = 0; |
| TOOLBAR = 1; |
| MENU = 2; |
| KEYBOARD_SHORTCUT = 3; |
| MACRO = 4; |
| MOUSE = 5; |
| } |
| } |
| |
| // Holds a histogram of values. |
| message Histogram { |
| // Holds the total number of samples in the histogram |
| optional int64 total_count = 1; |
| // Holds the bins for this histogram, in ascending order |
| repeated HistogramBin bin = 2; |
| } |
| |
| // Represents a range of values and the number of samples that fell within that |
| // range. The start and end attributes encode the range, and the samples |
| // attribute holds the number of samples. For example, if start=10 end=20, |
| // and samples=100, this means that 100 samples were recorded that fell within |
| // the range of start <= sample < end. |
| message HistogramBin { |
| // Start value for this bin, inclusive. All the samples in this bin are equal |
| // or greater than this value. |
| optional int64 start = 1; |
| // End value for this bin, exclusive. All the samples in this bin are strictly |
| // less than this value. |
| optional int64 end = 2; |
| // Number of samples that fell within this bin (between the start and end |
| // values) |
| optional int64 samples = 3; |
| // Total number of samples that are greater than or equal to the bin's start. |
| // This is equal to the number of samples in this bin plus the number of |
| // samples in all bins greater than this one. |
| optional int64 total_samples = 4; |
| } |
| |
| // Details about the machine this process is running on. |
| message MachineDetails { |
| // Amount of total memory available in megabytes. |
| optional int64 total_ram = 1; |
| // Amount of total disk available in megabytes. |
| optional int64 total_disk = 2; |
| // Information about the display screens on the machine (resolution etc..) |
| repeated DisplayDetails display = 3; |
| // Number of processors on the machine. |
| optional int32 available_processors = 4; |
| } |
| |
| // Details of a display screen. |
| message DisplayDetails { |
| // Width of the display screen in pixels. |
| optional int64 width = 1; |
| // Height of the display screen in pixels. |
| optional int64 height = 2; |
| // Density of the pixels on the screen horiziontally. |
| optional int32 dots_per_inch_horizontal = 3; |
| // Densitiy of the pixels on the screen vertically. |
| optional int32 dots_per_inch_vertical = 4; |
| // System scale factor for the screen resolution. |
| optional float system_scale = 5; |
| } |
| |
| // Stats on the current running java process. |
| message JavaProcessStats { |
| // Number of bytes of memory in use as heap memory. |
| optional int64 heap_memory_usage = 1; |
| // Number of bytes of memory in use as non heap memory. |
| optional int64 non_heap_memory_usage = 2; |
| // Current amount of java classes loaded. |
| optional int32 loaded_class_count = 3; |
| // Current amount of threads. |
| optional int32 thread_count = 4; |
| // Statistics about the garbage collectors used in this process. |
| repeated GarbageCollectionStats garbage_collection_stats = 5; |
| } |
| |
| // Statistics about the garbage collector. |
| message GarbageCollectionStats { |
| // Name of the garbage collector (e.g. 'ConcurrentMarkSweep') |
| optional string name = 1; |
| // Number of garbage collector invocations since last report. |
| optional int64 gc_collections = 2; |
| // Time spent garbage collecting since last report in milliseconds. |
| optional int64 gc_time = 3; |
| } |
| |
| // Details about the JVM used in this process. |
| message JvmDetails { |
| // Name of the JVM (e.g. "OpenJDK 64-Bit Server by JetBrains s.r.o"). |
| optional string name = 1; |
| // Version of the JVM (e.g. "1.8.0_76-release-b198 amd") |
| optional string version = 2; |
| // Vendor of the JVM (e.g. "JetBrains s.r.o.") |
| optional string vendor = 3; |
| // VM Option specified to set minimum heap_size in bytes ("-Xms" flag). |
| optional int64 minimum_heap_size = 4; |
| // VM Option specified to set maximum heap_size in bytes ("-Xmx" flag). |
| optional int64 maximum_heap_size = 5; |
| // VM Option specified to set maximum permanent space size in bytes. |
| // ("-XX:MaxPermSize" flag) |
| optional int64 maximum_permanent_space_size = 6; |
| // VM Option specified to set maximum permanent space size in bytes. |
| // ("-XX:ReservedCodeCacheSize" flag) |
| optional int64 maximum_code_cache_size = 7; |
| // VM Option specified to set time soft referenced objects remain alive in ms. |
| // ("-XX:SoftRefLRUPolicyMSPerMB" flag) |
| optional int64 soft_reference_lru_policy = 8; |
| // Type of Garbage Collector to use (various VM Option flags). |
| optional GarbageCollector garbage_collector = 9; |
| |
| // Various garbage collectors that could be chosen through VM Options. |
| enum GarbageCollector { |
| UNSPECIFIED_GC = 0; |
| CONCURRENT_MARK_SWEEP_GC = 1; |
| GARBAGE_FIRST_GC = 2; |
| PARALLEL_GC = 3; |
| PARALLEL_OLD_GC = 4; |
| SERIAL_GC = 5; |
| } |
| } |
| |
| // Details for an indexing operation. |
| message IntellijIndexingStats { |
| // Major operations on indexes. |
| enum Operation { |
| UNKNOWN_OPERATION = 0; |
| MAP_INPUT = 1; |
| WRITE_LOCK = 2; |
| UPDATE_DATA = 3; |
| GET_DATA = 4; |
| } |
| |
| // Details for a specific indexing operation. |
| message OperationStats { |
| // Operation described by this message. |
| optional Operation operation = 1; |
| // Total CPU time. |
| optional int64 total_cpu_nanos = 2; |
| // Total wall time. |
| optional int64 total_wall_nanos = 3; |
| // Maximum observed CPU time. |
| optional int32 max_cpu_nanos = 4; |
| // Maximum observed wall time. |
| optional int32 max_wall_nanos = 5; |
| // Total number of operations aggregated in this record. |
| optional int32 total_count = 6; |
| } |
| |
| // IDE's major indexes. |
| enum Index { |
| UNKNOWN_INDEX = 0; |
| ID_INDEX = 1; |
| STUB_INDEX = 2; |
| TRIGRAM_INDEX = 3; |
| OTHER = 4; |
| } |
| |
| // Details for indexing operations of a specific specific index. |
| message IndexStats { |
| // Index described by this message. |
| optional Index index = 1; |
| // Details for specific operations. |
| repeated OperationStats operation_stats = 2; |
| } |
| |
| // How long the indexing operation took in milliseconds. |
| optional int32 duration_ms = 1; |
| // Number of files indexed during this indexing operation. |
| optional int32 file_count = 2; |
| // Number of threads configured to run indexing tasks. |
| optional int32 indexer_threads = 3; |
| |
| // Indexing operation details for specific indexes. |
| repeated IndexStats index_stats = 4; |
| } |
| |
| // Stats on Studio's performance |
| message StudioPerformanceStats { |
| // Time for which the UI was blocked in milliseconds |
| optional int32 ui_freeze_time_ms = 1; |
| // Distribution of times taken to process events in the main event loop, |
| // in milliseconds. The number of samples is approximately equal to the |
| // number of events handled, quantized by event_service_time_sample_period. |
| // For example, if the 10-20ms bin contains 100 samples, it means that |
| // approximately 100 events took between 10 and 20 milliseconds to process. |
| optional Histogram event_service_time_ms = 2; |
| // Sample period used to compute the event_service_time_ms histogram. For |
| // example, if this is set to 10 then the service time was measured for |
| // every 10th event, and each measurement counted for 10 samples in |
| // the histogram. This is mainly intended for computing error bars |
| // and is not needed for interpreting the histogram itself. |
| optional int32 event_service_time_sample_period = 3; |
| // Histogram of wait times for the global write lock |
| optional Histogram write_lock_wait_time_ms = 4; |
| // Information about GC pause time distributions, one for each collector that |
| // is active. |
| repeated GcPauseInfo gc_pause_info = 5; |
| } |
| |
| // Information about GC pause times for a particular collector. |
| message GcPauseInfo { |
| enum GcType { |
| UNKNOWN = 0; |
| SERIAL_YOUNG = 1; |
| SERIAL_OLD = 2; |
| PARALLEL_YOUNG = 3; |
| PARALLEL_OLD = 4; |
| CMS_YOUNG = 5; |
| CMS_OLD = 6; |
| G1_YOUNG = 7; |
| G1_OLD = 8; |
| } |
| // The type of the garbage collector |
| optional GcType collector_type = 1; |
| // Distribution of pause times for this collector |
| optional Histogram pause_times_ms = 2; |
| } |
| |
| // One bucket of a PercentileEstimator. |
| message PercentileBucket { |
| // The target percentile for this bucket. |
| optional double target_percentile = 1; |
| // Estimated value at this bucket. |
| optional double value = 2; |
| // Number of samples less than value. |
| optional uint64 count = 3; |
| } |
| |
| // Estimation of target percentiles of a stream of data. |
| message PercentileEstimator { |
| // Either raw_sample or bucket should be empty. |
| // Raw samples when there were not enough samples to interpolate. |
| repeated double raw_sample = 2; |
| // 2n + 3 buckets representing an estimation for n target percentiles. |
| repeated PercentileBucket bucket = 3; |
| } |
| |
| message LldbPercentileEstimator { |
| // Type of performance metric. |
| optional Metric metric = 1; |
| // Estimator for metric. |
| optional PercentileEstimator estimator = 2; |
| |
| // Metric types that can be monitored. |
| enum Metric { |
| ATTACH_TIME_MICROS = 0; |
| STEP_RESUME_RESPONSE_TIME_MICROS = 1; |
| GET_VARIABLES_TIME_MICROS = 2; |
| GET_VARIABLE_CHILDREN_RANGE_TIME_MICROS = 3; |
| GET_FRAMES_TIME_MICROS = 4; |
| ADD_SYMBOLIC_BREAKPOINT_TIME_MICROS = 5; |
| ADD_BREAKPOINT_TIME_MICROS = 6; |
| } |
| } |
| |
| // Estimations of percentiles of time spent on LLDB operations. |
| message LldbPerformanceStats { |
| // Collection of estimations of performance metrics. |
| repeated LldbPercentileEstimator estimator = 1; |
| } |
| |
| // Details around user opening or closing projects. |
| message StudioProjectChange { |
| // amount of projects open in same Android Studio instance. |
| optional int32 projects_open = 1; |
| } |
| |
| // Layout editor state |
| message LayoutEditorState { |
| // Layout editor mode |
| enum Mode { |
| UNKOWN_MODE = 0; |
| |
| DESIGN_MODE = 1; |
| PREVIEW_MODE = 2; |
| } |
| |
| // Layout type |
| enum Type { |
| UNKNOWN_TYPE = 0; |
| |
| LAYOUT = 1; |
| DRAWABLE = 2; |
| MENU = 3; |
| PREFERENCE_SCREEN = 4; |
| COMPOSE = 5; |
| CUSTOM_VIEWS = 6; |
| GLANCE_WEAR_TILE = 7; |
| GLANCE_APP_WIDGET = 8; |
| VALIDATION_TOOL = 9; |
| WEAR_TILE = 10; |
| } |
| |
| // Layout orientation |
| enum Orientation { |
| UNKNOWN_ORIENTATION = 0; |
| |
| PORTRAIT = 1; |
| LANDSCAPE = 2; |
| } |
| |
| // Design surfaces currently displayed |
| enum Surfaces { |
| UNKNOWN_SURFACES = 0; |
| |
| BOTH = 1; |
| SCREEN_SURFACE = 2; |
| BLUEPRINT_SURFACE = 3; |
| } |
| |
| // Layout preview mode |
| enum PreviewMode { |
| UNKNOWN_PREVIEW_MODE = 0; |
| |
| STATIC_PREVIEW_MODE = 1; |
| INTERACTIVE_PREVIEW_MODE = 2; |
| } |
| |
| // layout editor preview or design mode |
| optional Mode mode = 1; |
| // layout type currently being displayed (layout, menu, drawable...) |
| optional Type type = 2; |
| // android api level e.g. '23' or 'N' |
| optional string config_api_level = 3; |
| // current layout zoom level |
| optional int32 config_zoom_level = 4; |
| // current layout orientation |
| optional Orientation config_orientation = 5; |
| // surfaces being displyaed |
| optional Surfaces surfaces = 6; |
| // Indicates how user previews the layout, whether it is a static (classic) |
| // preview or an interactive (animated) mode |
| optional PreviewMode preview_mode = 7; |
| } |
| |
| // Layout editor render result (when type = RENDER) |
| message LayoutEditorRenderResult { |
| enum Trigger { |
| UNKNOWN_TRIGGER = 0; |
| // Manual refresh triggered by the user |
| USER = 1; |
| // User layout edit |
| EDIT = 2; |
| // External resource change |
| RESOURCE_CHANGE = 3; |
| // Build |
| BUILD = 4; |
| } |
| |
| // Action that triggered the render |
| optional Trigger trigger = 1; |
| // Render result code |
| optional int32 result_code = 2; |
| // Full render time in ms |
| optional int64 total_render_time_ms = 4; |
| // Number of components rendered |
| optional int32 component_count = 5; |
| |
| // Total number of issues (warnings + errors) in the error panel |
| optional int32 total_issue_count = 6; |
| // Errors displayed in the error panel |
| optional int32 error_count = 7; |
| // Fidelity warnings |
| optional int32 fidelity_warning_count = 8; |
| // The id of rendered device, such as "pixel", "pixel_3", "pixel_3_xl", |
| // "wearos_square", "tv_4k". |
| // Device ids are built-in in the sdk and studio. There is no enum or list of |
| // them. For all custom android virtual devices (AVDs), they should be |
| // recorded as "_custom_avd". |
| optional string device_id = 9; |
| } |
| |
| // Details related to an ATF fix suggestion. |
| message AtfFixDetail { |
| // Type of an ATF fix suggestion |
| enum AtfFixType { |
| UNKNOWN = 0; |
| SET_VIEW_ATTRIBUTE = 1; |
| REMOVE_VIEW_ATTRIBUTE = 2; |
| COMPOUND = 3; |
| } |
| |
| // The type of the applied ATF fix |
| optional AtfFixType fix_type = 3; |
| } |
| |
| // Record of Accessibility Testing Framework(ATF) audit results. |
| message AtfAuditResult { |
| enum Trigger { |
| UNKNOWN_TRIGGER = 0; |
| // Through the entry button |
| USER = 1; |
| // Through opening the issue panel |
| ISSUE_PANEL = 2; |
| // Through experimental flag |
| EXPERIMENTAL_FLAG = 3; |
| } |
| |
| // Each count for Accessibility Testing Framework result. |
| message AtfResultCount { |
| // Type of lint issue created by the accessibility testing framework. |
| enum CheckResultType { |
| UNKNOWN = 0; |
| ERROR = 1; |
| WARNING = 2; |
| INFO = 3; |
| NOT_RUN = 4; |
| SUPPRESSED = 5; |
| } |
| |
| // Accessibility Testing Framework result's source check name, to uniquely |
| // identify the lint issue created by it. |
| optional string check_name = 1; |
| // Its result type |
| optional CheckResultType result_type = 2; |
| // Error expanded for more information by user |
| optional bool error_expanded = 3; |
| // ATF fix suggestions which are provided for this ATF check result |
| repeated AtfFixDetail fixes = 4; |
| } |
| |
| // What triggered Accessibility testing framework |
| optional Trigger trigger = 1; |
| // result count. |
| repeated AtfResultCount counts = 2; |
| // Render result. True if render was successful. False otherwise. |
| optional bool render_result = 3; |
| // Number of components rendered |
| optional int32 component_count = 4; |
| // Time it took for audit to run in milliseconds, per render. |
| optional int64 audit_duration_ms = 5; |
| // Full render time in ms |
| optional int64 total_render_time_ms = 6; |
| // Errors displayed in the error panel, including non ATF errors. |
| optional int32 error_count = 7; |
| } |
| |
| // Details related to an ATF check result |
| message AtfResultDetail { |
| // Simple name of the ATF check which produced the check result |
| optional string check_name = 1; |
| |
| // The result type of the ATF check result |
| optional AtfAuditResult.AtfResultCount.CheckResultType result_type = 2; |
| } |
| |
| // Details related to an ATF fix which been applied by the user |
| message ApplyAtfFixEvent { |
| // Details related to the ATF result which has been fixed |
| optional AtfResultDetail atf_result = 1; |
| |
| // Details related to the ATF fix which has been applied |
| optional AtfFixDetail atf_fix = 2; |
| } |
| |
| // Details related to an ATF result which has been marked as ignored by the user |
| message IgnoreAtfResultEvent { |
| // Details related to the ATF result which has been ignored |
| optional AtfResultDetail atf_result = 1; |
| } |
| |
| // Details related to undoing an applied ATF fix by the user |
| message UndoAppliedAtfFixEvent { |
| // Details related to the ATF result which produced the undone fix suggestion |
| optional AtfResultDetail atf_result = 1; |
| |
| // Details related to the ATF fix that was undone |
| optional AtfFixDetail atf_fix = 2; |
| } |
| |
| // A user interaction with the layout editor animation previewer |
| message AnimationPreviewEvent { |
| // The type of animation bar. Each offers different UI and/or control panels |
| // to interact with user. |
| enum ToolbarType { |
| UNKNOWN_TOOLBAR_TYPE = 0; |
| // This toolbar type is provided for endless animation. |
| // For example, if the animation repeats itself, then it is considered as |
| // endless. |
| UNLIMITED_ANIMATION = 1; |
| // This toolbar type is provided for endable animation. |
| // It provides a slider bar to control the current animation progress. |
| LIMITED_ANIMATION = 2; |
| // This toolbar type is provided for animated selector. |
| // It provides a dropdown button for switching the previewing animation |
| // inside this animated selector. |
| ANIMATED_SELECTOR = 3; |
| } |
| |
| // The type of tool bar which provided for the previewed animation. |
| optional ToolbarType toolbar_type = 1; |
| |
| // The operation which user executed. |
| enum UserAction { |
| UNKNOWN_CONTROL = 0; |
| PLAY = 1; |
| PAUSE = 2; |
| STOP = 3; |
| FRAME_FORWARD = 4; |
| FRAME_BACKWARD = 5; |
| // Control the frame by draggig the progress bar. |
| FRAME_CONTROL = 6; |
| // Select the preview animation when previewing animated selector. |
| SELECT_ANIMATION = 7; |
| } |
| |
| // The operation from user to control the animation preview, such like play, |
| // pause, or stop. |
| optional UserAction user_action = 2; |
| } |
| |
| // Details of an event linked to visual linting |
| message VisualLintEvent { |
| // Type of issues creating by visual linting |
| enum IssueType { |
| UNKNOWN_TYPE = 0; |
| BOUNDS = 1; |
| BOTTOM_NAV = 2; |
| BOTTOM_APP_BAR = 3; |
| OVERLAP = 4; |
| LONG_TEXT = 5; |
| ATF = 6; |
| LOCALE_TEXT = 7; |
| TEXT_FIELD_SIZE = 8; |
| BUTTON_SIZE = 9; |
| WEAR_MARGIN = 10; |
| ATF_COLORBLIND = 11; |
| } |
| |
| // Type of events affecting visual lint issues |
| enum IssueEvent { |
| UNKNOWN_EVENT = 0; |
| CREATE_ISSUE = 1; |
| EXPAND_ISSUE = 2; |
| IGNORE_ISSUE = 3; |
| ENABLE_RULE = 4; |
| DISABLE_RULE = 5; |
| ENABLE_BACKGROUND_RULE = 6; |
| DISABLE_BACKGROUND_RULE = 7; |
| CLICK_DOCUMENTATION_LINK = 8; |
| CANCEL_BACKGROUND_ANALYSIS = 9; |
| } |
| |
| // Possible origins for visual lint event |
| enum EventOrigin { |
| UNKNOWN_ORIGIN = 0; |
| XML_LINTING = 1; |
| UI_CHECK = 2; |
| } |
| |
| // The type of the visual lint issue affected by this event |
| optional IssueType issue_type = 1; |
| // The kind of event affecting the issue |
| optional IssueEvent issue_event = 2; |
| // The origin that triggered the visual lint event |
| optional EventOrigin event_origin = 3; |
| // The time it took for UI Check mode to start in ms |
| optional int64 ui_check_start_time_ms = 4; |
| // The number of visible previews in UI Check |
| optional int32 visible_previews_number = 5; |
| } |
| |
| message UniversalProblemsPanelEvent { |
| // Type of interaction events of universal problems panel. |
| enum InteractionEvent { |
| UNKNOWN_INTERACTION = 0; |
| // A tab is activated. By either manually or automatically switching the tab |
| TAB_ACTIVATED = 1; |
| // A user clicks an issue |
| ISSUE_SINGLE_CLICKED = 2; |
| // A user double clicks an issue |
| ISSUE_DOUBLE_CLICKED = 3; |
| } |
| |
| // Currently activated tab. This is usually done by clicking tab, but in some |
| // scenarios the tab may be activated without the interactions. |
| enum ActivatedTab { |
| UNKNOWN_TAB = 0; |
| // IJ's current file tab |
| CURRENT_FILE = 1; |
| // IJ's project errors tab |
| PROJECT_ERRORS = 2; |
| // This is the shared issue panel, used by compose, layout editor, etc. |
| DESIGN_TOOLS = 3; |
| // UI Check mode tab |
| UI_CHECK = 4; |
| } |
| |
| // Event of triggering navigatable of an issue. This is usually done by double |
| // clicking an issue or pressing enter on the selected issue. |
| enum IssueNavigated { |
| UNKNOWN_NAVIGATION = 0; |
| OPEN_VALIDATION_TOOL = 1; |
| OPEN_FILE = 2; |
| } |
| |
| // True if IJ's problems pane is visible, false otherwise. |
| optional bool problems_panel_visibility = 1; |
| // User interactions event of universal problems panel. |
| optional InteractionEvent interaction_event = 2; |
| // The type of the activated tab affected by this event |
| optional ActivatedTab activated_tab = 3; |
| // The Navigation event of the issues. |
| optional IssueNavigated issue_navigated = 4; |
| } |
| |
| // Reference to a View used in an Android application. |
| // Although this proto contains just a single field, we may decide |
| // to represent a view with an enum in the future. |
| message AndroidView { |
| // Specifies the tag name used in XML for a given Android View class. |
| // This will typically be a fully qualified class name or an unqualified |
| // Android framework class name. |
| // Only Google view tags will be specified by name. The name of custom view |
| // tags will be left unspecified. |
| // Examples: |
| // "ToggleButton" |
| // "android.support.design.widget.CoordinatorLayout" |
| optional string tag_name = 1; |
| } |
| |
| // Reference to an attribute of an Android view. |
| message AndroidAttribute { |
| // Namespace of the attribute changed |
| enum AttributeNamespace { |
| UNKNOWN_NAMESPACE = 0; |
| // This attribute is defined in the Google framework. |
| ANDROID = 1; |
| // This attribute is defined in the application. |
| // The attribute is either a custom attribute or an attribute on a View from |
| // a Google library. |
| APPLICATION = 2; |
| // This attribute is used in the design preview only. It does not affect |
| // the Android application at runtime. |
| TOOLS = 3; |
| } |
| |
| // Specifies an attribute name of an Android View class or Navigation element. |
| // Only properties defined on Google View classes or Google-provided |
| // Navigation destinations will be specified by name. |
| // Properties defined on custom views or destinations, or custom properties on |
| // Google-provided destinations will be left unspecified. |
| optional string attribute_name = 1; |
| // The namespace of this attribute |
| optional AttributeNamespace attribute_namespace = 2; |
| } |
| |
| // Identifies the effect the search field had on the possible choices presented |
| // to the user. |
| enum SearchOption { |
| UNKNOWN_SEARCH_OPTION = 0; |
| // The search field was empty |
| NONE = 1; |
| // The search field was not empty and it does not specify a unique match |
| MULTIPLE_MATCHES = 2; |
| // The search field identified a unique match |
| SINGLE_MATCH = 3; |
| } |
| |
| // Event for the picker panel that can be invoked from the editor gutter. The |
| // picker is a panel to assist in modifying an element in the source file. For |
| // example, the Preview picker surfaces the Compose @Preview annotation fields |
| // and provides context-correct values for the fields that require it. |
| message EditorPickerEvent { |
| // The type of picker panel |
| enum PickerType { |
| UNKNOWN_PICKER_TYPE = 0; |
| // Picker for Compose @Preview annotation |
| PREVIEW = 1; |
| } |
| |
| // Contains data for actions that can be performed in an editor picker. |
| message EditorPickerAction { |
| // Describes a modification performed through a Preview picker, defined by |
| // the parameter that was modified and the value assigned to it. Since a |
| // modification can contain virtually any value, the values tracked are a |
| // subset of predefined values available through the picker, all other |
| // open-ended values are generalized as Text or Number. |
| message PreviewPickerModification { |
| // The parameters available through the picker panel. It does not |
| // necessarily match the values in the Preview annotation since the ui |
| // might surface them as several parameters, such as the Device field. |
| enum PreviewPickerParameter { |
| UNKNOWN_PREVIEW_PICKER_PARAMETER = 0; |
| // Name of the Preview Composable, visible in the Preview panel |
| NAME = 1; |
| // User-defined group, to manage different Previews within a file |
| GROUP = 2; |
| // The api-level used for the renderer in the Preview panel |
| API_LEVEL = 3; |
| // A custom width applied to the Composable for the Preview rendering |
| WIDTH = 4; |
| // A custom height applied to the Composable for the Preview rendering |
| HEIGHT = 5; |
| // The locale used by the Preview renderer |
| LOCALE = 6; |
| // Amount (in percentage) to modify the font size on the Preview |
| FONT_SCALE = 7; |
| // Show the rendered Composable within the context of a mocked device ui |
| SHOW_SYSTEM_UI = 8; |
| // Show a solid background under the rendered Composable |
| SHOW_BACKGROUND = 9; |
| // Defines the color of the background when show_background is true |
| BACKGROUND_COLOR = 10; |
| // The uiMode value applied to the application context for Preview |
| // rendering |
| UI_MODE = 11; |
| // String that defines a device by id, display name, or screen specs |
| DEVICE = 12; |
| // Width when defining a device by its screen specs |
| DEVICE_WIDTH = 13; |
| // Height when defining a device by its screen specs |
| DEVICE_HEIGHT = 14; |
| // Unit of width/height when defining a device by its screen specs |
| DEVICE_DIM_UNIT = 15; |
| // Dpi when defining a device by its screen specs |
| DEVICE_DPI = 16; |
| // Orientation of Device in the Preview panel |
| DEVICE_ORIENTATION = 17; |
| } |
| |
| // Typical device targets for Android applications |
| enum DeviceType { |
| UNKNOWN_DEVICE_TYPE = 0; |
| PHONE = 1; |
| TABLET = 2; |
| DESKTOP = 3; |
| WEAR = 4; |
| TV = 5; |
| GENERIC = 6; |
| CUSTOM = 7; |
| } |
| |
| // Value definition for a modification action, meant to represent relevant |
| // predefined values available in the picker, usually within a dropdown |
| // menu, any other values should fallback to UnsupportedOrOpenEnded |
| enum PreviewPickerValue { |
| UNKNOWN_PREVIEW_PICKER_VALUE = 0; |
| // Fallback for open-ended values or other not listed predefined values |
| UNSUPPORTED_OR_OPEN_ENDED = 1; |
| // Parameter's value was deleted/cleared |
| CLEARED = 2; |
| // A selected device that do not match any of the offered reference |
| // devices, typically either a custom device or an AvdManager device |
| DEVICE_REF_NONE = 3; |
| // Phone option in the 'Reference Devices' submenu of the Device |
| // dropdown |
| DEVICE_REF_PHONE = 4; |
| // Foldable option in the 'Reference Devices' submenu of the Device |
| // dropdown |
| DEVICE_REF_FOLDABLE = 5; |
| // Tablet option in the 'Reference Devices' submenu of the Device |
| // dropdown |
| DEVICE_REF_TABLET = 6; |
| // Desktop option in the 'Reference Devices' submenu of the Device |
| // dropdown |
| DEVICE_REF_DESKTOP = 7; |
| // Use 'px' as unit for the given device width/heigh |
| UNIT_PIXELS = 8; |
| // Use 'dp' as unit for the given device width/heigh |
| UNIT_DP = 9; |
| // Show device in portrait orientation in the Preview |
| ORIENTATION_PORTRAIT = 10; |
| // Show device in landscape orientation in the Preview |
| ORIENTATION_LANDSCAPE = 11; |
| // Set device screen dpi to 'ldpi' |
| DENSITY_LOW = 12; |
| // Set device screen dpi to 'mdpi' |
| DENSITY_MEDIUM = 13; |
| // Set device screen dpi to 'hdpi' |
| DENSITY_HIGH = 14; |
| // Set device screen dpi to 'xhdpi' |
| DENSITY_X_HIGH = 15; |
| // Set device screen dpi to 'xxhdpi' |
| DENSITY_XX_HIGH = 16; |
| // Set device screen dpi to 'xxxhdpi' |
| DENSITY_XXX_HIGH = 17; |
| // The assigned UiMode value does not set the 'Night' flag |
| UI_MODE_NOT_NIGHT = 18; |
| // The assigned UiMode value explicitly sets the 'Night' flag |
| UI_MODE_NIGHT = 19; |
| } |
| |
| // Parameter modified |
| optional PreviewPickerParameter parameter = 1; |
| // The device type that closest resembles the device used in the preview |
| optional DeviceType closest_device_type = 2; |
| // The assigned value, as described by PreviewPickerValue |
| optional PreviewPickerValue assigned_value = 3; |
| } |
| |
| oneof action_info { |
| // Available when a @Preview field was modified through the Preview |
| // picker. Describes the modification performed, such as the parameter |
| // modified and the value assigned to it. |
| PreviewPickerModification preview_modification = 1; |
| } |
| } |
| |
| // Defines the type of picker invoked, this should be defined based on the |
| // kind of text element intended to be modified. E.g.: The picker that |
| // modifies the Compose @Preview annotation is the 'Preview' picker. |
| optional PickerType type = 1; |
| // Contains any additional data related to the action performed for the type |
| // of picker in use. |
| repeated EditorPickerAction action = 2; |
| } |
| |
| // Details for the event of dropping a View from Palette: |
| message LayoutPaletteEvent { |
| // Display option when using the palette |
| enum ViewType { |
| UNKNOWN_VIEW_TYPE = 0; |
| ICON_AND_NAME = 1; |
| LARGE_IONS = 2; |
| SMALL_ICONS = 3; |
| } |
| |
| // The active view group when using the palette |
| enum ViewGroup { |
| UNKNOWN_GROUP = 0; |
| CUSTOM = 1; |
| ALL_GROUPS = 2; |
| WIDGETS = 3; |
| TEXT = 4; |
| LAYOUTS = 5; |
| CONTAINERS = 6; |
| IMAGES = 7; |
| DATES = 8; |
| TRANSITIONS = 9; |
| ADVANCED = 10; |
| GOOGLE = 11; |
| DESIGN = 12; |
| APP_COMPAT = 13; |
| BUTTONS = 14; |
| LEGACY = 15; |
| COMMON = 16; |
| ALL_RESULTS = 17; |
| HELPERS = 18; |
| } |
| |
| // The view parameter options used for the dropped component |
| enum ViewOption { |
| NORMAL = 0; |
| CUSTOM_OPTION = 1; |
| HORIZONTAL_PROGRESS_BAR = 2; |
| DISCRETE_SEEK_BAR = 3; |
| PLAIN_EDIT_TEXT = 4; |
| PASSWORD = 5; |
| PASSWORD_NUMERIC = 6; |
| EMAIL = 7; |
| PHONE = 8; |
| POSTAL_ADDRESS = 9; |
| MULTILINE_TEXT = 10; |
| TIME_EDITOR = 11; |
| DATE_EDITOR = 12; |
| NUMBER = 13; |
| SIGNED_NUMBER = 14; |
| DECIMAL_NUMBER = 15; |
| HORIZONTAL_LINEAR_LAYOUT = 16; |
| VERTICAL_LINEAR_LAYOUT = 17; |
| } |
| |
| // The View that was dropped onto the design surface from the palette. |
| optional AndroidView view = 1; |
| // The view option used. |
| optional ViewOption view_option = 2; |
| // The group selected to find the view |
| optional ViewGroup selected_group = 3; |
| // The result of the usage of the search field |
| optional SearchOption search_option = 4; |
| // The display option used when this view was dropped from the palette |
| optional ViewType view_type = 5; |
| } |
| |
| // Details for an attribute change event |
| message LayoutAttributeChangeEvent { |
| // Display option used in property panel |
| enum ViewType { |
| UNKNOWN_VIEW_TYPE = 0; |
| INSPECTOR = 1; |
| PROPERTY_TABLE = 2; |
| } |
| |
| // The attribute changed by this event |
| optional AndroidAttribute attribute = 1; |
| // The search option used when the attribute was changed |
| optional SearchOption search_option = 2; |
| // The display option used when the attribute was changed |
| optional ViewType view_type = 3; |
| // The views where this attribute was changed for. |
| repeated AndroidView view = 4; |
| } |
| |
| message LayoutFavoriteAttributeChangeEvent { |
| // This attribute was added as a favorite attribute |
| optional AndroidAttribute added = 1; |
| // This attribute was removed as a favorite attribute |
| optional AndroidAttribute removed = 2; |
| // These are the resulting active favorite attibutes |
| repeated AndroidAttribute active = 3; |
| } |
| |
| // Details for layout editor events |
| message LayoutEditorEvent { |
| enum LayoutEditorEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| |
| RENDER = 1; |
| |
| ZOOM_IN = 2; |
| ZOOM_OUT = 3; |
| ZOOM_FIT = 4; |
| ZOOM_ACTUAL = 5; |
| |
| SHOW_PAN_AND_ZOOM = 6; |
| SHOW_LINT_MESSAGES = 7; |
| LINT_TOOLTIP = 8; |
| |
| RESTORE_ERROR_PANEL = 9; |
| MINIMIZE_ERROR_PANEL = 10; |
| |
| SHOW_DESIGN_SURFACE = 11; |
| SHOW_BLUEPRINT_SURFACE = 12; |
| SHOW_BOTH_SURFACE = 13; |
| |
| SWITCH_ORIENTATION = 14; |
| DEVICE_CHANGE = 15; |
| API_LEVEL_CHANGE = 16; |
| THEME_CHANGE = 17; |
| LANGUAGE_CHANGE = 18; |
| |
| SHOW_CONSTRAINTS = 19; |
| HIDE_CONSTRAINTS = 20; |
| TURN_ON_AUTOCONNECT = 21; |
| TURN_OFF_AUTOCONNECT = 22; |
| CLEAR_ALL_CONSTRAINTS = 23; |
| INFER_CONSTRAINS = 24; |
| DEFAULT_MARGINS = 25; |
| |
| PACK = 26; |
| ALIGN = 27; |
| |
| ADD_VERTICAL_GUIDELINE = 28; |
| ADD_HORIZONTAL_GUIDELINE = 29; |
| |
| SHOW_PALETTE = 30; |
| HIDE_PALETTE = 31; |
| |
| DROP_VIEW_FROM_PALETTE = 32; |
| ATTRIBUTE_CHANGE = 33; |
| FAVORITE_CHANGE = 34; |
| |
| SELECT_TEXT_MODE = 35; |
| SELECT_SPLIT_MODE = 36; |
| SELECT_VISUAL_MODE = 37; |
| |
| OPEN_MOTION_LAYOUT_EDITOR_MODE = 38; |
| |
| SHOW_LAYOUT_VISUALIZATION_TOOL = 39; |
| HIDE_LAYOUT_VISUALIZATION_TOOL = 40; |
| |
| ADD_CONSTRAINT = 41; |
| DELETE_CONSTRAINT = 42; |
| |
| INFLATE_ONLY = 43; |
| RENDER_ONLY = 44; |
| |
| ENABLE_LAYOUTLIB_NATIVE = 45; |
| DISABLE_LAYOUTLIB_NATIVE = 46; |
| |
| ATF_AUDIT_RESULT = 47; |
| APPLY_ATF_FIX = 48; |
| IGNORE_ATF_RESULT = 49; |
| UNDO_APPLIED_ATF_FIX = 50; |
| |
| ANIMATION_PREVIEW = 51; |
| |
| VISUAL_LINT = 52; |
| |
| UNIVERSAL_PROBLEMS_PANEL = 53; |
| } |
| |
| // Type of event |
| optional LayoutEditorEventType type = 1; |
| // Layout editor current state |
| optional LayoutEditorState state = 2; |
| // Result of the render when (type = RENDER) |
| optional LayoutEditorRenderResult render_result = 3; |
| // Details related to using the palette (type = DROP_VIEW_FROM_PALETTE) |
| optional LayoutPaletteEvent palette_event = 4; |
| // Details related to changing an attribute (type = ATTRIBUTE_CHANGE) |
| optional LayoutAttributeChangeEvent attribute_change_event = 5; |
| // Details related to favorite attribute changes (type = FAVORITE_CHANGE) |
| optional LayoutFavoriteAttributeChangeEvent favorite_change_event = 6; |
| // Result of the atf audit (type = ATF_AUDIT_RESULT) |
| optional AtfAuditResult atf_audit_result = 7; |
| // Details related to applying an atf fix (type = APPLY_ATF_FIX) |
| optional ApplyAtfFixEvent apply_atf_fix_event = 8; |
| // Details related to ignoring an atf result (type = IGNORE_ATF_FIX) |
| optional IgnoreAtfResultEvent ignore_atf_result_event = 9; |
| // Details related to undoing an applied atf fix (type = UNDO_APPLIED_ATF_FIX) |
| optional UndoAppliedAtfFixEvent undo_applied_atf_fix_event = 10; |
| // Details related to interacting animation preview (type = ANIMATION_PREVIEW) |
| optional AnimationPreviewEvent animation_preview_event = 11; |
| // Details related to visual linting (type = VISUAL_LINT) |
| optional VisualLintEvent visual_lint_event = 12; |
| // Details related to universal problems panel (type = |
| // UNIVERSAL_PROBLEMS_PANEL) |
| optional UniversalProblemsPanelEvent universal_problems_panel_event = 13; |
| // Type of the file, i.e. which language the file in the editor is in |
| optional EditorFileType editor_file_type = 14; |
| } |
| |
| // Details for navigation editor events |
| message NavEditorEvent { |
| enum NavEditorEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| |
| OPEN_FILE = 1; |
| |
| // Deprecated by LayoutEditorEventType.SELECT_VISUAL_MODE |
| SELECT_DESIGN_TAB = 2 [deprecated = true]; |
| // Deprecated by LayoutEditorEventType.SELECT_TEXT_MODE |
| SELECT_XML_TAB = 3 [deprecated = true]; |
| |
| CREATE_ACTION = 4; |
| EDIT_ACTION = 5; |
| CREATE_ARGUMENT = 6; |
| EDIT_ARGUMENT = 36; |
| CREATE_DEEP_LINK = 7; |
| EDIT_DEEP_LINK = 37; |
| |
| CHANGE_PROPERTY = 8; |
| |
| ADD_DESTINATION = 9; |
| CREATE_FRAGMENT = 10; |
| ADD_INCLUDE = 11; |
| |
| CREATE_NESTED_GRAPH = 12; |
| MOVE_TO_GRAPH = 38; |
| |
| ACTIVATE_LAYOUT = 13; |
| ACTIVATE_CLASS = 14; |
| ACTIVATE_NESTED = 15; |
| ACTIVATE_INCLUDE = 16; |
| |
| EXIT_NESTED_GRAPH = 17; |
| |
| SET_START_DESTINATION = 18; |
| |
| AUTO_ARRANGE = 19; |
| POSITION_DESTINATION = 20; |
| |
| RESTORE_ERROR_PANEL = 21; |
| MINIMIZE_ERROR_PANEL = 22; |
| |
| DELETE_DESTINATION = 23; |
| DELETE_INCLUDE = 24; |
| DELETE_NESTED = 25; |
| DELETE_ACTION = 26; |
| DELETE_DEEPLINK = 27; |
| DELETE_ARGUMENT = 28; |
| |
| SCHEMA_CREATED = 29; |
| |
| // Deprecated by LayoutEditorEventType.ZOOM_IN |
| ZOOM_IN = 30 [deprecated = true]; |
| // Deprecated by LayoutEditorEventType.ZOOM_OUT |
| ZOOM_OUT = 31 [deprecated = true]; |
| // Deprecated by LayoutEditorEventType.ZOOM_FIT |
| ZOOM_FIT = 32 [deprecated = true]; |
| |
| CUT = 33; |
| COPY = 34; |
| PASTE = 35; |
| |
| // next index: 39 |
| } |
| |
| // Identifies the mode of the navigation editor |
| enum NavEditorMode { |
| UNKNOWN_MODE = 0; |
| // Single view displaying only the navigation editor itself |
| VISUAL_ONLY_MODE = 1; |
| // Split view with text and design editor side-by-side |
| SPLIT_MODE = 2; |
| // Single view displaying only the text editor |
| TEXT_ONLY_MODE = 3; |
| } |
| |
| enum Source { |
| UNKNOWN = 0; |
| TOOLBAR = 1; |
| DESIGN_SURFACE = 2; |
| PROPERTY_INSPECTOR = 3; |
| SHORTCUT = 4; |
| CONTEXT_MENU = 5; |
| } |
| |
| // Type of event |
| optional NavEditorEventType type = 1; |
| // Where the event was triggered |
| optional Source source = 2; |
| // If the event is property-related, information about the affected property |
| optional NavPropertyInfo property_info = 3; |
| // If the event is action-related, information about the relevant action |
| optional NavActionInfo action_info = 4; |
| // If the event is destination-related, information about the relevant |
| // destination |
| optional NavDestinationInfo destination_info = 5; |
| // Information about the current NavigationSchema |
| optional NavSchemaInfo schema_info = 6; |
| // Information on the current contents of the navigation file |
| optional NavigationContents contents = 7; |
| // Mode of navigation editor: design-only, text-only, or split view |
| optional NavEditorMode mode = 8; |
| } |
| |
| message NavPropertyInfo { |
| enum Property { |
| UNKNOWN = 0; |
| CUSTOM = 1; |
| |
| ACTION = 2; |
| ARG_TYPE = 3; |
| AUTO_VERIFY = 4; |
| UNUSED_1 = 5; |
| DATA = 6; |
| DATA_PATTERN = 7; |
| DEFAULT_NAV_HOST = 8; |
| DEFAULT_VALUE = 9; |
| DESTINATION = 10; |
| ENTER_ANIM = 11; |
| EXIT_ANIM = 12; |
| GRAPH = 13; |
| ID = 14; |
| LABEL = 15; |
| UNUSED_2 = 16; |
| LAUNCH_SINGLE_TOP = 17; |
| NAME = 18; |
| NAV_GRAPH = 19; |
| NULLABLE = 20; |
| POP_ENTER_ANIM = 21; |
| POP_EXIT_ANIM = 22; |
| POP_UP_TO = 23; |
| POP_UP_TO_INCLUSIVE = 24; |
| START_DESTINATION = 25; |
| URI = 26; |
| MIME_TYPE = 27; |
| } |
| enum TagType { |
| UNKNOWN_TAG = 0; |
| CUSTOM_TAG = 1; |
| ACTION_TAG = 2; |
| DEEPLINK_TAG = 3; |
| FRAGMENT_TAG = 4; |
| ACTIVITY_TAG = 5; |
| NAVIGATION_TAG = 6; |
| INCLUDE_TAG = 7; |
| ARGUMENT_TAG = 8; |
| } |
| // The property affected. |
| optional Property property = 1; |
| // Type of the containing tag. |
| optional TagType containing_tag = 2; |
| // Whether the property was empty prior to being set just now. |
| optional bool was_empty = 3; |
| } |
| |
| message NavActionInfo { |
| enum ActionType { |
| UNKNOWN = 0; |
| REGULAR = 1; |
| EXIT = 2; |
| GLOBAL = 3; |
| SELF = 4; |
| } |
| |
| // Type of the action affected |
| optional ActionType type = 1; |
| // Whether the action has popTo set |
| optional bool has_pop = 2; |
| // Whether the action has popToInclusive set |
| optional bool inclusive = 3; |
| // The number of actions originating from the same destination as this one |
| optional uint32 count_from_source = 4; |
| // The number of actions targeting the same destination as this one |
| optional uint32 count_to_destination = 5; |
| // The number of actions with the same source and destination as this one |
| optional uint32 count_same = 6; |
| } |
| |
| message NavDestinationInfo { |
| enum DestinationType { |
| UNKNOWN = 0; |
| FRAGMENT = 1; |
| ACTIVITY = 2; |
| OTHER = 3; |
| } |
| |
| // The type of the destination |
| optional DestinationType type = 1; |
| // Whether the destination has a class (android:name) specified |
| optional bool has_class = 2; |
| // Whether the destination has a layout (tools:layout) specified |
| optional bool has_layout = 3; |
| } |
| |
| message NavSchemaInfo { |
| // The number of custom navigators in the current schema |
| optional uint32 custom_navigators = 1; |
| // The number of custom tags in the current schema |
| optional uint32 custom_tags = 2; |
| // The number of custom destination classes in the current schema |
| optional uint32 custom_destinations = 3; |
| // The number of custom attributes in the current schema |
| optional uint32 custom_attributes = 4; |
| } |
| |
| message NavigationContents { |
| // The number of fragments in the current file |
| optional uint32 fragments = 1; |
| // The number of activities in the current file |
| optional uint32 activities = 2; |
| // The number of custom destinations in the current file |
| optional uint32 custom_destinations = 3; |
| // The number of regular actions in the current file |
| optional uint32 regular_actions = 4; |
| // The number of exit actions in the current file |
| optional uint32 exit_actions = 5; |
| // The number of global actions in the current file |
| optional uint32 global_actions = 6; |
| // The number of self actions in the current file |
| optional uint32 self_actions = 10; |
| // The number of includes in the current file |
| optional uint32 includes = 7; |
| // The number of nested graphs in the current file |
| optional uint32 nested_graphs = 8; |
| // The number of placeholders (destinations with android:name not set) in the |
| // current file |
| optional uint32 placeholders = 9; |
| } |
| |
| message NavSafeArgsEvent { |
| optional EventContext event_context = 1; |
| optional ProjectMetadata project_metadata = 2; |
| |
| enum EventContext { |
| UNKNOWN_EVENT_CONTEXT = 0; |
| SYNC_EVENT_CONTEXT = 1; |
| BUILD_EVENT_CONTEXT = 2; |
| } |
| |
| message ProjectMetadata { |
| // # of modules in this project |
| optional uint32 module_count = 1; |
| |
| // # of modules with the java safe args plugin enabled |
| optional uint32 java_plugin_count = 2; |
| |
| // # of modules with the kotlin safe args plugin enabled |
| optional uint32 kotlin_plugin_count = 3; |
| } |
| } |
| |
| // App links assistant user event detail. |
| message AppLinksAssistantEvent { |
| // Client-side salted (rotating every 28 days), sha256 of the project id for |
| // counting projects using the assistant. |
| optional string project_id = 1; |
| |
| // The app_id is the id for the user's android app |
| // which's salted on client-side (rotating every 28 days) then sha256 |
| // so it is anonymized and is unique per user, but has a 1-N relation. |
| // It's for counting apps using the assistant. |
| optional string app_id = 2; |
| |
| // The UI element source of event. |
| optional EventSource event_source = 3; |
| |
| // The state of the event. |
| optional EventState event_state = 4; |
| |
| // To check if there exists app links in the project |
| // before using app links assistant. |
| optional bool existing_app_links = 5; |
| |
| // Duration time that app links assistant panel opens. Unit is nanoseconds. |
| optional int64 assistant_panel_open_duration = 6; |
| |
| // Following three fields is for the new added app link. |
| // Set when event_source = URL_MAPPING_APP_LINK_ADD_DIALOG |
| // && event_state = COMPLETED |
| // Path type of new app link. |
| optional PathType app_link_path_type = 7; |
| // Whether a new activity is linked by app link. |
| optional bool new_activity_linked = 8; |
| // Whether a new host is linked by app link. |
| optional bool new_host_linked = 9; |
| |
| // the project id as used in the playstore, e.g. |
| // 'com.google.android.apps.maps'. This is sensitive information and |
| // thus restricted to "raw" sawmill access. This data is only available in |
| // and for PWG approved scenarios. |
| optional string raw_project_id = 10; |
| |
| optional ValidationSummary validation_summary = 11; |
| |
| optional IntentFilterFix intent_filter_fix = 12; |
| |
| optional LinkFilterOption link_filter_option = 13; |
| |
| // The information of an interacted link collected for impact tracking. |
| optional LinksRecord links_record = 14; |
| |
| // UI event source. |
| enum EventSource { |
| // Will be deprecated and replaced by NEW_LINK_CREATION_SIDE_PANEL. |
| ASSISTANT_SIDE_PANEL = 1; |
| |
| // UI elements of URL mapping panel. |
| URL_MAPPING_PANEL = 2; |
| URL_MAPPING_APP_LINK_ADD_DIALOG = 3; |
| URL_MAPPING_APP_LINK_ADD_ADVANCED_DIALOG = 4; |
| URL_MAPPING_APP_LINK_EDIT_DIALOG = 5; |
| URL_MAPPING_APP_LINK_DELETE_BUTTON = 6; |
| URL_MAPPING_CHECK_MAPPING_BUTTON = 7; |
| URL_MAPPING_OPEN_ANDROID_MANIFEST_BUTTON = 8; |
| URL_MAPPING_ADD_TEST_URL_BUTTON = 21; |
| |
| // UI elements of code insert dialog. |
| CODE_INSERT_DIALOG = 9; |
| CODE_INSERT_DIALOG_INSERT_BUTTON = 10; |
| CODE_INSERT_DIALOG_LIST_SELECTION = 11; |
| |
| // UI elements of DAL generation panel. |
| DAL_PANEL = 12; |
| DAL_PANEL_BROWSE_KEYSTORE_BUTTON = 13; |
| DAL_PANEL_GENERATE_BUTTON = 14; |
| DAL_PANEL_SAVE_BUTTON = 15; |
| DAL_PANEL_VERIFY_BUTTON = 16; |
| DAL_PANEL_SMART_LOCK_CHECKBOX = 200; |
| DAL_PANEL_SIGN_IN_URL_SAME_AS_DOMAIN_CHECKBOX = 201; |
| |
| // UI elements of app links test panel. |
| APP_LINKS_TEST_PANEL = 17; |
| APP_LINKS_TEST_PANEL_MODULE_SELECTION = 18; |
| APP_LINKS_TEST_PANEL_RUN_TEST_BUTTON = 19; |
| |
| // The new link creation panel. |
| NEW_LINK_CREATION_SIDE_PANEL = 20; |
| |
| // The main page of the new App Links Assistant. |
| OVERVIEW_TABLE = 22; |
| OVERVIEW_TABLE_FIX_ALL_APP_CHECKS_BUTTON = 23; |
| OVERVIEW_TABLE_FIX_ALL_WEB_CHECKS_BUTTON = 24; |
| OVERVIEW_TABLE_SEARCH_BOX = 25; |
| OVERVIEW_TABLE_FILTERS = 26; |
| |
| // App link details page of new App Links Assistant. |
| DETAILS = 27; |
| DETAILS_FIX_ONE_LINK_APP_CHECKS_BUTTON = 28; |
| DETAILS_FIX_ONE_LINK_WEB_CHECKS_BUTTON = 29; |
| DETAILS_RUN_CHECKS_BUTTON = 30; |
| |
| // Manual fix guidance page of new App Links Assistant. |
| MANUAL_FIX = 31; |
| MANUAL_FIX_ROW = 32; |
| |
| // Fix web checks page of new App Links Assistant. |
| FIX_WEB_CHECKS_CREATE_JSON_BUTTON = 33; |
| FIX_WEB_CHECKS_SAVE_JSON_BUTTON = 34; |
| |
| // Event sources that are not tied to any particular UI. |
| VALIDATION = 35; |
| } |
| |
| // The state list of UI event source. |
| enum EventState { |
| // Generic state for panel opened, button clicked or list selection. |
| OPENED = 1; |
| // Generic state for button action completed. |
| COMPLETED = 2; |
| // Generic state for button action failed. |
| FAILED = 3; |
| // State to label user exiting from the panel or dialog by clicking the |
| // system close button, hide button or cancel button. |
| EXIT = 4; |
| } |
| |
| // Url path type of a new added app link. |
| enum PathType { |
| // Corresponds to attribute android:path of <data> tag in Android Manifest |
| // File. |
| PATH = 1; |
| // Corresponds to attribute android:pathPrefix of <data> tag in |
| // Android Manifest File |
| PATH_PREFIX = 2; |
| // Corresponds to attribute android:pathPattern of <data> tag in |
| // Android Manifest File |
| PATH_PATTERN = 3; |
| } |
| |
| // Message to be sent when validation is run. |
| message ValidationSummary { |
| // Stats of custom scheme links |
| optional int64 total_cs_links = 1; |
| optional int64 total_valid_cs_links = 2; |
| // cs_links_app_check_failed = total_cs_links - total_valid_cs_links |
| |
| // Stats of app links |
| optional int64 total_app_links = 3; |
| optional int64 total_valid_app_links = 4; |
| // Number of links with app checks issues |
| optional int64 app_links_app_check_failed = 5; |
| // Number of links with web checks issues |
| optional int64 app_links_web_check_failed = 6; |
| // Number of links with Google Ads policy notifications |
| optional int64 app_links_google_ads_policy_failed = 7; |
| |
| // Stats of domains |
| optional int64 total_domains = 8; |
| // Number of domains with issues |
| optional int64 domains_web_check_failed = 9; |
| |
| // Time taken to perform validation |
| optional uint64 validation_runtime_millis = 10; |
| |
| // Whether user is consented to performing web check validations. |
| optional bool dal_apis_consented = 11; |
| } |
| |
| message IntentFilterFix { |
| // Total number of links that we are trying to fix in this operation |
| optional int64 total_links = 1; |
| // Initial number of invalid links |
| optional int64 num_broken_links_before = 2; |
| // Number of invalid links after fixing (i.e. links that need manual fixes) |
| optional int64 num_broken_links_after = 3; |
| } |
| |
| enum LinkFilterOption { |
| UNKNOWN = 0; // We don't expect this to actually be used. |
| NONE = 1; |
| MANIFEST_ISSUES = 2; |
| JSON_ISSUES = 3; |
| } |
| |
| message LinksRecord { |
| // Salted (rotating every 540 days) and SHA256 hashed value of raw_schemes. |
| repeated string anonymized_schemes = 1; |
| |
| // the scheme values defined by the <data android:scheme> tag in |
| // AndroidManifest.xml, e.g. 'https", "twitter" |
| // This may be sensitive information because the scheme can be a custom |
| // string and thus restricted to "raw" sawmill access. |
| // This data is only available in and for PWG approved scenarios. |
| repeated string raw_schemes = 2; |
| |
| // Salted (rotating every 540 days) and SHA256 hashed value of raw_hosts. |
| repeated string anonymized_hosts = 3; |
| |
| // the host values defined by the <data android:host> tag in |
| // AndroidManifest.xml, e.g. "www.google.com", "*.twitter.com" This may be |
| // sensitive information because the host can be unreleased and thus |
| // restricted to "raw" sawmill access. This data is only available in and |
| // for PWG approved scenarios. |
| repeated string raw_hosts = 4; |
| |
| // Salted (rotating every 540 days) and SHA256 hashed value of raw_paths. |
| repeated string anonymized_paths = 5; |
| |
| // the path patterns defined by the <data android:path> or <data |
| // android:pathPattern>, etc. tags in AndroidManifest.xml, e.g. "/test", |
| // "/product/.*".This may be sensitive information because the path can be |
| // unreleased and thus restricted to "raw" sawmill access. This data is only |
| // available in and for PWG approved scenarios. |
| repeated string raw_paths = 6; |
| |
| // The path type defined in <data android:path> or <data |
| // android:pathPattern>, etc. tags, used as additional information to |
| // distinguish the same path string under different types. For example, |
| // a path "/p" and a path prefix "/p" match different URLs. |
| // This field should match the raw_paths and anonymized_paths field elements |
| // one to one. |
| repeated PathType path_types = 7 [packed = true]; |
| enum PathType { |
| PATH_TYPE_UNSPECIFIED = 0; |
| PATH = 1; |
| PATH_PATTERN = 2; |
| PATH_PREFIX = 3; |
| PATH_EMPTY = 4; |
| PATH_SUFFIX = 5; |
| PATH_ADVANCED_PATTERN = 6; |
| } |
| |
| // The user's interaction on the link, used as the reason we log this link. |
| optional InteractionType interaction_type = 8; |
| enum InteractionType { |
| INTERACTION_TYPE_UNSPECIFIED = 0; |
| |
| // The recorded links are misconfigured and viewed by the user in link |
| // details page. |
| BROKEN_LINK_IN_DETAIL_PAGE = 1; |
| |
| // The recorded links are misconfigured and auto-fixed. |
| BROKEN_LINK_AUTO_FIXED = 2; |
| |
| // The recorded links are misconfigured and manually fixed after shown |
| // in the manual fix UI. |
| // The fixed link will be seen as a new link in the Play released version. |
| BROKEN_LINK_MANUALLY_FIXED = 3; |
| |
| // The recorded links are created using the "creation new link" feature. |
| NEW_LINK_CREATED = 4; |
| |
| // The recorded links are misconfigured and shown in the manual fix page. |
| // They are generally links that miss some link component. |
| // The client doesn't have to report this kind of links for the purpose of |
| // ads impact tracking, as the fixed links will no longer match the ones |
| // that miss some link component. |
| BROKEN_LINK_MANUAL_FIX_PAGE = 5; |
| |
| // The recorded links are valid. The client doesn't have to report this |
| // kind of links for the purpose of ads impact tracking, as they are not |
| // contributing to additional ads revenue. |
| VALID_LINK_IN_DETAIL_PAGE = 6; |
| } |
| } |
| } |
| |
| // ADB Assistant event details |
| message AdbAssistantStats { |
| // Why the assistant was started |
| optional Trigger trigger = 1; |
| |
| // State list of trigger |
| enum Trigger { |
| // No running devices as target |
| NO_RUNNING_DEVICE = 1; |
| // Don't see your device link on the bottom right of dialog |
| DONT_SEE_DEVICE = 2; |
| } |
| } |
| |
| message CpuProfilingConfig { |
| // The type of the tool which provides profiling results. |
| optional Type type = 1; |
| // The profiling mode, each of which has different pros / cons. |
| optional Mode mode = 2; |
| // The maximum size of the trace recording, in MB. |
| optional uint32 size_limit = 3; |
| // The sampling interval in μs, only used when |mode| is |SAMPLED| |
| optional uint32 sample_interval = 4; |
| |
| enum Type { |
| UNKNOWN_TYPE = 0; |
| // Use general profiling features provided by the runtime |
| ART = 1; |
| // Use simpleperf for advanced Android profiling, works on Android O+ |
| SIMPLE_PERF = 2; |
| // Use atrace for advanced Android profiling, works on Android N+ |
| ATRACE = 3; |
| // Use Perfetto for advanced Android profiling, works on Android P+ |
| PERFETTO = 4; |
| } |
| |
| enum Mode { |
| UNKNOWN_MODE = 0; |
| // Periodically poll CPU; less accurate but more performant |
| SAMPLED = 1; |
| // Add timing hooks; more accurate but leaf calls are more expensive |
| INSTRUMENTED = 2; |
| } |
| } |
| |
| // Data associated with startup CPU profiling |
| message CpuStartupProfilingMetadata { |
| optional CpuProfilingConfig profiling_config = 1; |
| } |
| |
| // Data associated with API-initiated tracing |
| message CpuApiTracingMetadata { |
| // True if using sampling; false if using instrumentation. |
| optional bool use_sampling = 1; |
| // A trace path is given and not null (we don't log the path as it might |
| // contain PII). |
| optional bool arg_trace_path = 2; |
| // Buffer size as a given API argument (-1 if unavailable). |
| optional int32 arg_buffer_size = 3; |
| // Flags as a given API argument (-1 if unavailable). |
| optional int32 arg_flags = 4; |
| // Sampling interval as a given API argument (-1 if unavailable). |
| optional int32 arg_interval_us = 5; |
| } |
| |
| // Data associated with capturing a CPU method trace |
| message CpuCaptureMetadata { |
| enum CaptureStatus { |
| UNKNOWN_STATUS = 0; |
| // The capture was successful |
| SUCCESS = 1; |
| // The device responded to our request for a capture with an error |
| // Deprecated by STOP_FAILED_* enum constants. |
| STOP_CAPTURING_FAILURE = 2 [deprecated = true]; |
| // Deprecated by PARSING_FAILED_* enum constants. |
| PARSING_FAILURE = 3 [deprecated = true]; |
| // User aborted parsing the trace after being notified it was too large |
| USER_ABORTED_PARSING = 4; |
| // Deprecated by PREPROCESS_FAILED_* enum constants. |
| PREPROCESS_FAILURE = 5 [deprecated = true]; |
| // There was no ongoing capture to stop. |
| STOP_FAILED_NO_GOING_PROFILING = 6; |
| // The profiled app process died. |
| STOP_FAILED_APP_PROCESS_DIED = 7; |
| // The PID of the profiled app process changed (it's another process). |
| STOP_FAILED_APP_PID_CHANGED = 8; |
| // The profiler process (e.g., simpleperf process) died. |
| STOP_FAILED_PROFILER_PROCESS_DIED = 9; |
| // The shell/DDMS command to stop capture didn't return successfully. |
| STOP_FAILED_STOP_COMMAND_FAILED = 10; |
| // The capture didn't stop after the stop command. |
| STOP_FAILED_STILL_PROFILING_AFTER_STOP = 11; |
| // The wait for the trace file to complete couldn't be initiated. |
| STOP_FAILED_CANNOT_START_WAITING = 12; |
| // The wait for the trace file to complete timed out. |
| STOP_FAILED_WAIT_TIMEOUT = 13; |
| // The wait for the trace file to complete had unspecified failure. |
| STOP_FAILED_WAIT_FAILED = 14; |
| // Couldn't read events while waiting for the trace file to complete. |
| STOP_FAILED_CANNOT_READ_WAIT_EVENT = 15; |
| // Couldn't copy/move the trace file within the device. |
| STOP_FAILED_CANNOT_COPY_FILE = 16; |
| // Couldn't form the trace file into the format expected by Studio. |
| STOP_FAILED_CANNOT_FORM_FILE = 17; |
| // Couldn't read the content of the trace file. |
| STOP_FAILED_CANNOT_READ_FILE = 18; |
| // The trace file doesn't exist or is a directory. |
| PARSING_FAILED_PATH_INVALID = 19; |
| // The trace file cannot be read. |
| PARSING_FAILED_READ_ERROR = 20; |
| // Couldn't identify correct parser for the trace file. |
| PARSING_FAILED_PARSER_UNKNOWN = 21; |
| // The trace file failed file header verification. |
| PARSING_FAILED_FILE_HEADER_ERROR = 22; |
| // The trace file cannot be parsed by the identified parser, e.g. ART parser |
| // for Java method traces. |
| PARSING_FAILED_PARSER_ERROR = 23; |
| // The trace file failed to be parsed due to unknown reasons. |
| PARSING_FAILED_CAUSE_UNKNOWN = 24; |
| // Couldn't preprocess the simpleperf trace: empty file. |
| PREPROCESS_FAILED_SIMPLEPERF_EMPTY_FILE = 25; |
| // Couldn't preprocess the simpelperf trace: the report-sample command |
| // reported errors at exit. |
| PREPROCESS_FAILED_SIMPLEPERF_ERRORS_AT_EXIT = 26; |
| // Couldn't preprocess the simpelperf trace: I/O error while executing |
| // the report-sample command. |
| PREPROCESS_FAILED_SIMPLEPERF_IO_ERROR = 27; |
| // Couldn't preprocess the simpelperf trace: InterruptedException while |
| // waiting for the report-sample command. |
| PREPROCESS_FAILED_SIMPLEPERF_FAILED_TO_WAIT = 28; |
| } |
| |
| enum CpuProfilerEntryPoint { |
| // The entry point was not specified. |
| UNKNOWN = 0; |
| // User enters the CpuProfilerStage by clicking the CpuMonitor. |
| CPU_MONITOR = 1; |
| // User enters the CpuProfilerStage by performing a startup trace. |
| STARTUP_PROFILING = 2; |
| // User enters the CpuProfilerStage via the Energy Profiler deprecation |
| // panel hyperlink. |
| ENERGY_DEPRECATION_LINK = 3; |
| // User selects an ongoing session performing a capture. |
| ONGOING_SESSION_SELECTION = 4; |
| // User navigates back to parent stage or the child stage fails to load. |
| CHILD_STAGE_BACK_BTN_OR_FAILURE = 5; |
| // User enters the CpuProfilerStage via an Energy Task. |
| ENERGY_TASK = 6; |
| } |
| |
| // The result of a CPU capture |
| optional CaptureStatus capture_status = 1; |
| |
| // Duration from user pressing "Record" to pressing "Stop" |
| // Not set if |capture_status| is not set to |SUCCESS| |
| optional uint64 capture_duration_ms = 2; |
| |
| // Duration from the first trace data timestamp to the last one. |
| // Not set if |capture_status| is not set to |SUCCESS| |
| optional uint64 record_duration_ms = 3; |
| |
| // Size of the trace file generated by the capture. |
| // Not set if |capture_status| is set to |STOP_CAPTURING_FAILURE| |
| optional uint32 trace_file_size_bytes = 4; |
| |
| // How much time it took to parse the trace file |
| // Not set if |capture_status| is not set to |SUCCESS| |
| optional uint64 parsing_time_ms = 5; |
| |
| // The user's configuration used to generate this capture |
| optional CpuProfilingConfig profiling_config = 6; |
| |
| // Timeout set by the user for the system "profiler.cpu.art.stop.timeout.sec" |
| // property. Set if |profiling_config.type| is |ART|. |
| optional int32 art_stop_timeout_sec = 7; |
| |
| // How much time it took to stop CPU recording. |
| optional int32 stopping_time_ms = 8; |
| |
| // Whether the trace contains Compose Tracing nodes |
| optional bool has_compose_tracing_nodes = 9; |
| |
| // The entry point to the cpu profiling stage (cpu profiler) |
| optional CpuProfilerEntryPoint cpu_profiler_entry_point = 10; |
| } |
| |
| // Data associated with importing CPU traces. |
| message CpuImportTraceMetadata { |
| enum ImportStatus { |
| // Default status |
| UNDEFINED_IMPORT_TRACE_STATUS = 0; |
| // The trace was imported successfully. |
| IMPORT_TRACE_SUCCESS = 1; |
| // There was a failure when trying to import the trace. |
| IMPORT_TRACE_FAILURE = 2; |
| } |
| |
| enum Technology { |
| UNKNOWN_TECHNOLOGY = 0; |
| ART_TECHNOLOGY = 1; |
| SIMPLEPERF_TECHNOLOGY = 2; |
| ATRACE_TECHNOLOGY = 3; |
| PERFETTO_TECHNOLOGY = 4; |
| } |
| |
| // Status of the import trace action. |
| optional ImportStatus import_status = 1; |
| |
| // Technology used to generate the trace imported. |
| // Technologies supported are ART, simpleperf and atrace. |
| optional Technology technology = 2; |
| |
| // Whether the trace contains Compose Tracing nodes |
| optional bool has_compose_tracing_nodes = 3; |
| } |
| |
| // Metadata associated with how users are using the profilers filter. |
| message FilterMetadata { |
| enum View { |
| // Default state |
| UNKNOWN_FILTER_VIEW = 0; |
| CPU_TOP_DOWN = 1; |
| CPU_BOTTOM_UP = 2; |
| CPU_FLAME_CHART = 3; |
| CPU_CALL_CHART = 4; |
| MEMORY_PACKAGE = 5; |
| MEMORY_CLASS = 6; |
| MEMORY_CALLSTACK = 7; |
| NETWORK_THREADS = 8; |
| NETWORK_CONNECTIONS = 9; |
| } |
| |
| enum FeaturesFlags { |
| // Default state |
| UNSET_FEATURE_FLAGS = 0; |
| // Used to represent the state of the match case checkbox. |
| MATCH_CASE = 1; |
| // Used to represent the state of the regex checkbox. |
| MATCH_REGEX = 2; |
| } |
| |
| // The view that is active when opening / using the filter. |
| optional View active_view = 1; |
| |
| // Bitwise field used to store features used derived from |
| // FilterMetadata.FeaturesFlags enum. |
| optional uint64 features_used = 2; |
| |
| // The count of elements matched. |
| optional uint32 matched_elements = 3; |
| |
| // The number of total elements to be searched. |
| optional uint32 total_elements = 4; |
| |
| // The length of the string used to filter. |
| optional uint32 search_length = 5; |
| } |
| |
| // Metadata associated with how users are starting sessions in the profilers |
| message ProfilerSessionCreationMetaData { |
| enum SessionType { |
| UNKNOWN_SESSION = 0; |
| FULL_SESSION = 1; |
| MEMORY_CAPTURE = 2; |
| CPU_CAPTURE = 3; |
| } |
| |
| enum CreationSource { |
| UNKNOWN_SOURCE = 0; |
| // The user manually selects a process or imports an existing capture file. |
| MANUAL = 1; |
| } |
| |
| // The type of session created |
| optional SessionType created_type = 1; |
| |
| // How the session is created. |
| optional CreationSource creation_source = 2; |
| } |
| |
| // Metadata associated with how users are selecting sessions in the profilers. |
| message ProfilerSessionSelectionMetaData { |
| enum ArtifactType { |
| UNKNOWN_ARTIFACT_TYPE = 0; |
| ARTIFACT_SESSION = 1; |
| ARTIFACT_HPROF = 2; |
| ARTIFACT_CPU_CAPTURE = 3; |
| ARTIFACT_LEGACY_ALLOCATIONS = 4; |
| } |
| |
| // The type of the artifact selected |
| optional ArtifactType selected_type = 1; |
| |
| // Whether the session is live when the artifact was selected |
| optional bool is_session_alive = 2; |
| } |
| |
| // Shared enum values for energy event messages |
| message EnergyEvent { |
| enum Type { |
| UNKNOWN_EVENT_TYPE = 0; |
| WAKE_LOCK = 1; |
| ALARM = 2; |
| JOB = 3; |
| LOCATION = 4; |
| } |
| |
| enum Subtype { |
| UNKNOWN_EVENT_SUBTYPE = 0; |
| |
| WAKE_LOCK_PARTIAL = 1; |
| WAKE_LOCK_SCREEN_DIM = 2; |
| WAKE_LOCK_SCREEN_BRIGHT = 3; |
| WAKE_LOCK_FULL = 4; |
| WAKE_LOCK_PROXIMITY_SCREEN_OFF = 5; |
| |
| ALARM_RTC = 101; |
| ALARM_RTC_WAKEUP = 102; |
| ALARM_ELAPSED_REALTIME = 103; |
| ALARM_ELAPSED_REALTIME_WAKEUP = 104; |
| } |
| |
| enum Subevent { |
| UNKNOWN_ENERGY_SUBEVENT = 0; |
| |
| WAKE_LOCK_ACQUIRED = 1; |
| WAKE_LOCK_RELEASED = 2; |
| |
| ALARM_SET = 101; |
| ALARM_CANCELLED = 102; |
| ALARM_FIRED = 103; |
| |
| JOB_SCHEDULED = 201; |
| JOB_STARTED = 202; |
| JOB_STOPPED = 203; |
| JOB_FINISHED = 204; |
| |
| LOCATION_UPDATE_REQUESTED = 301; |
| LOCATION_UPDATE_REMOVED = 302; |
| LOCATION_CHANGED = 303; |
| } |
| } |
| |
| message EnergyEventCount { |
| optional EnergyEvent.Type type = 1; |
| optional uint32 count = 2; |
| } |
| |
| message EnergyRangeMetadata { |
| repeated EnergyEventCount event_counts = 1; |
| } |
| |
| message EnergyEventMetadata { |
| optional EnergyEvent.Type type = 1; |
| optional EnergyEvent.Subtype subtype = 2; |
| repeated EnergyEvent.Subevent subevents = 3; |
| } |
| |
| message PerfdCrashInfo { |
| // Addresses of the backstack of the crash reported by perfd. |
| repeated uint64 backstack_address_list = 1; |
| } |
| |
| message TransportDaemonStartedInfo { |
| // Whether it's a restart due to reasons from the device such as a crash or |
| // being killed by the OS (not because IDE or Project is closed and then |
| // reopened, or USB cable is unplugged). |
| optional bool is_restart = 1; |
| // Set only when it's a restart. |
| optional int64 millisec_since_last_start = 2; |
| } |
| |
| message TransportFailureMetadata { |
| enum FailureType { |
| UNKNOWN_FAILURE_TYPE = 0; |
| TIMEOUT = 1; |
| INTERRUPTED = 2; |
| IO = 3; |
| SYNC = 4; |
| SHELL_COMMAND_UNRESPONSIVE = 5; |
| ADB_COMMAND_REJECTED = 6; |
| } |
| |
| optional FailureType failure_type = 1; |
| } |
| |
| message MemoryInstanceFilterMetadata { |
| enum FilterType { |
| UNKNOWN_FILTER_TYPE = 0; |
| ACTIVITY_FRAGMENT_LEAKS = 1; |
| PROJECT_CLASSES = 2; |
| } |
| |
| optional FilterType filter_type = 1; |
| } |
| |
| message TraceProcessorDaemonManagerStats { |
| // Time to spawn the daemon in milliseconds |
| optional uint64 time_to_spawn_ms = 1; |
| } |
| |
| message TraceProcessorDaemonQueryStats { |
| /// Data for all query types: |
| // Time to perform the whole method |
| optional uint64 method_duration_ms = 1; |
| // Time to perform the gRPC query only |
| optional uint64 grpc_query_duration_ms = 2; |
| // The return status of the query |
| optional QueryReturnStatus query_status = 3; |
| |
| /// Set when |TPD_QUERY_LOAD_TRACE| |
| // The file size in bytes of the trace we tried to load. |
| optional uint64 trace_size_bytes = 100; |
| // TODO: Define fields based on error/warnings returned from the |
| // parser |
| |
| enum QueryReturnStatus { |
| UNKNOWN = 0; |
| // The query returned successfully. |
| OK = 1; |
| // The query returned, but TPD identified a problem in the query so it might |
| // have some missing data. |
| QUERY_ERROR = 2; |
| // The backend was unable to perform the query (e.g. the daemon couldn’t be |
| // reached) |
| QUERY_FAILED = 3; |
| } |
| } |
| |
| // Metadata for when an adt-ui box selection is performed. |
| message AdtUiBoxSelectionMetadata { |
| // Selection duration in microseconds, i.e. x-axis. |
| optional uint64 duration_us = 1; |
| // Number of tracks included in the selection, i.e. y-axis. |
| optional uint32 track_count = 2; |
| } |
| |
| // Metadata for an adt-ui track group action. |
| message AdtUiTrackGroupMetadata { |
| // Pre-defined track group title in Android Studio, e.g. Display, Threads. |
| // Does not contain user-defined strings. |
| optional string title = 1; |
| // Track group action type, e.g. collapsing a track group. |
| optional TrackGroupActionType action_type = 2; |
| |
| enum TrackGroupActionType { |
| UNKNOWN = 0; |
| MOVE_UP = 1; |
| MOVE_DOWN = 2; |
| COLLAPSE = 3; |
| EXPAND = 4; |
| MOUSE_OVER = 5; |
| } |
| } |
| |
| // Metadata for RUN_WITH_PROFILING action. |
| message RunWithProfilingMetadata { |
| // Profiling mode controls the whether the built APK is profileable or |
| // debuggable. |
| optional ProfilingMode profiling_mode = 1; |
| |
| // Information about the active build variant. |
| optional BuildVariantMetadata build_variant_metadata = 2; |
| |
| enum ProfilingMode { |
| UNKNOWN_PROFILING_MODE = 0; |
| PROFILEABLE = 1; |
| DEBUGGABLE = 2; |
| } |
| |
| message BuildVariantMetadata { |
| // True if the active build variant is debuggable. |
| optional bool is_debuggable = 1; |
| // True if the active build variant is profileable. |
| optional bool is_profileable = 2; |
| } |
| } |
| |
| // Metadata for PERFETTO_SDK_HANDSHAKE (for apps relying on tracing-perfetto) |
| message PerfettoSdkHandshakeMetadata { |
| // Outcome of the handshake |
| optional HandshakeResult handshake_result = 1; |
| |
| // Adapted from tracing-perfetto response codes: http://shortn/_nogjJTzVBc |
| // with the following changes: |
| // - different indexing as by proto convention we reserve 0 for UNKNOWN value |
| // - no enum value for BINARY_MISSING as it's expected and part of the process |
| // - new enum value for BINARY_UNAVAILABLE when Studio tries to fetch binaries |
| // from Maven but is unable to, e.g. because of lack of Internet connection |
| enum HandshakeResult { |
| UNKNOWN_RESULT = 0; |
| UNSUPPORTED = 1; // If the app does have tracing-perfetto as a dependency |
| SUCCESS = 2; |
| ALREADY_ENABLED = 3; // Not an error; still worth tracking |
| ERROR_BINARY_UNAVAILABLE = 4; // E.g. if no Internet connection |
| ERROR_BINARY_VERSION_MISMATCH = 5; |
| ERROR_BINARY_VERIFICATION_ERROR = 6; |
| ERROR_OTHER = 7; |
| } |
| } |
| |
| // Metadata for RESOLVE_COMPOSE_TRACING_CODE_LOCATION (navigating to source for |
| // Compose Tracing events in the Profiler UI) |
| message ResolveComposeTracingCodeLocationMetadata { |
| // Number of source-code locations resolved for the query |
| optional int32 result_count = 1; |
| } |
| |
| // Metadata for POWER_PROFILER_DATA_CAPTURED event tracking the number of |
| // power rails and battery counters captured in a power profiler trace |
| message PowerProfilerCaptureMetadata { |
| // Number of power rails |
| optional int32 power_rail_count = 1; |
| // Number of battery counters |
| optional int32 battery_counter_count = 2; |
| } |
| |
| // Metadata for a task recorded in the Android Studio Profiler. |
| message TaskMetadata { |
| // The type of task recorded. |
| optional ProfilerTaskType task_type = 1; |
| // The task id is the same to the id of the session backing the task. This id |
| // is unique per Studio instance. |
| optional int64 task_id = 2; |
| // The origin of a task's recording data. |
| optional TaskDataOrigin task_data_origin = 3; |
| // The point in the process lifecycle the task began. Only set to a |
| // non-unspecified value if the |task_data_origin| is |NEW|. |
| optional TaskAttachmentPoint task_attachment_point = 4; |
| // The exposure level of the process the task utilized. Only set to a |
| // non-unspecified value if the |task_data_origin| is |NEW|. |
| optional ExposureLevel exposure_level = 5; |
| // The task configuration used (if the task has a customizable configuration). |
| optional TaskConfig task_config = 6; |
| |
| enum ProfilerTaskType { |
| PROFILER_TASK_TYPE_UNSPECIFIED = 0; |
| CALLSTACK_SAMPLE = 1; |
| SYSTEM_TRACE = 2; |
| JAVA_KOTLIN_METHOD_TRACE = 3 [deprecated = true]; |
| JAVA_KOTLIN_METHOD_SAMPLE = 4 [deprecated = true]; |
| HEAP_DUMP = 5; |
| NATIVE_ALLOCATIONS = 6; |
| JAVA_KOTLIN_ALLOCATIONS = 7; |
| LIVE_VIEW = 8; |
| JAVA_KOTLIN_METHOD_RECORDING = 9; |
| } |
| |
| enum TaskDataOrigin { |
| TASK_DATA_ORIGIN_UNSPECIFIED = 0; |
| // The task was not launched from a prior capture and was based on a new |
| // recording taken in the Studio session. |
| NEW = 1; |
| // The task was launched from a recording taken within the same Studio |
| // session. |
| PAST_RECORDING = 2; |
| // The task was launched from an imported recording. |
| IMPORTED = 3; |
| } |
| |
| enum TaskAttachmentPoint { |
| TASK_ATTACHMENT_POINT_UNSPECIFIED = 0; |
| NEW_PROCESS = 1; |
| EXISTING_PROCESS = 2; |
| } |
| |
| enum ExposureLevel { |
| UNKNOWN = 0; |
| RELEASE = 1; |
| PROFILEABLE = 2; |
| DEBUGGABLE = 3; |
| } |
| |
| message TaskConfig { |
| oneof union { |
| CallstackSampleTaskConfig callstack_sample_task_config = 1; |
| JavaKotlinMethodTraceTaskConfig java_kotlin_method_trace_task_config = 2; |
| JavaKotlinMethodSampleTaskConfig java_kotlin_method_sample_task_config = |
| 3; |
| NativeAllocationsTaskConfig native_allocations_task_config = 4; |
| } |
| } |
| |
| message CallstackSampleTaskConfig { |
| optional int32 sample_interval_us = 1; |
| } |
| |
| message JavaKotlinMethodTraceTaskConfig { |
| optional int32 buffer_size_mb = 1; |
| } |
| |
| message JavaKotlinMethodSampleTaskConfig { |
| optional int32 sample_interval_us = 1; |
| optional int32 buffer_size_mb = 2; |
| } |
| |
| message NativeAllocationsTaskConfig { |
| optional int32 sample_interval_bytes = 1; |
| } |
| } |
| |
| // Metadata for the TASK_ENTERED event (when a user enters a task). |
| message TaskEnteredMetadata { |
| // The task data. |
| optional TaskMetadata task_data = 1; |
| } |
| |
| // Metadata for the TASK_FINISHED event (when a task finishes). |
| message TaskFinishedMetadata { |
| // The task data. |
| optional TaskMetadata task_data = 1; |
| // The state of the task on finish. |
| optional TaskFinishedState task_finished_state = 2; |
| |
| enum TaskFinishedState { |
| TASK_FINISHED_STATE_UNSPECIFIED = 0; |
| COMPLETED = 1; |
| USER_CANCELLED = 2; |
| } |
| } |
| |
| // Metadata for the TASK_FAILED event (when a task fails). |
| message TaskFailedMetadata { |
| // The task data. |
| optional TaskMetadata task_data = 1; |
| // The point in the task lifecycle it failed. |
| optional FailingPoint failing_point = 2; |
| |
| enum FailingPoint { |
| FAILING_POINT_UNSPECIFIED = 0; |
| TASK_START = 1; |
| TASK_STOP = 2; |
| TASK_PROCESSING = 3; |
| } |
| |
| oneof union { |
| // Set if |failing_point| is |TASK_START| |
| TaskStartFailedMetadata task_start_failure_metadata = 3; |
| // Set if |failing_point| is |TASK_STOP| |
| TaskStopFailedMetadata task_stop_failure_metadata = 4; |
| // Set if |failing_point| is |TASK_PROCESSING| |
| TaskProcessingFailedMetadata task_processing_failure_metadata = 5; |
| } |
| |
| message TaskStartFailedMetadata { |
| oneof union { |
| TraceStartStatus trace_start_status = 1; |
| AllocationTrackStatus track_status = 2; |
| HeapDumpStatus heap_dump_start_status = 3; |
| } |
| } |
| |
| message TaskStopFailedMetadata { |
| oneof union { |
| CpuCaptureMetadata cpu_capture_metadata = 1; |
| TraceStopStatus trace_stop_status = 2; |
| AllocationTrackStatus track_status = 3; |
| } |
| } |
| |
| message TaskProcessingFailedMetadata { |
| optional CpuCaptureMetadata cpu_capture_metadata = 1; |
| } |
| |
| message TraceStartStatus { |
| enum Status { |
| STATUS_UNSPECIFIED = 0; |
| SUCCESS = 1; |
| FAILURE = 2; |
| UNRECOGNIZED = 3; |
| } |
| |
| // Each enum value must be an integer with at most 1 bit set in the binary |
| // format. |
| enum ErrorCode { |
| // No error during trace start |
| NO_ERROR_TRACE_START = 0; // 0x0000 |
| // No trace type specified |
| NO_TRACE_TYPE_SPECIFIED = 1; // 0x0001 |
| // App is already being profiled with ART |
| APP_ALREADY_PROFILED_WITH_ART = 2; // 0x0002 |
| // Unable to run profile start command |
| UNABLE_TO_RUN_PROFILE_START = 4; // 0x0004 |
| // Requested buffer size is too small |
| REQUESTED_BUFFER_SIZE_TOO_SMALL = 8; // 0x0008 |
| // Failed to run atrace start. |
| FAILED_TO_RUN_ATRACE_START = 16; // 0x0010 |
| // Atrace could not allocate enough memory to record a trace. |
| ATRACE_NOT_ALLOCATE_MEMORY_TO_RECORD_TRACE = 32; // 0x0020 |
| // Perfetto is already running unable to start new trace. |
| PERFETTO_ALREADY_RUNNING_UNABLE_START_NEW_TRACE = 64; // 0x0040 |
| // Tracer is already running unable to run perfetto. |
| TRACER_ALREADY_RUNNING_UNABLE_RUN_PERFETTO = 128; // 0x0080 |
| // Failed to launch perfetto. |
| FAILED_TO_LAUNCH_PERFETTO = 256; // 0x0100 |
| // Failed to launch tracer. |
| FAILED_TO_LAUNCH_TRACER = 512; // 0x0200 |
| // Failed to launch traced. |
| FAILED_TO_LAUNCH_TRACED = 1024; // 0x0400 |
| // Failed to launch traced_probes. |
| FAILED_TO_LAUNCH_TRACED_PROBES = 2048; // 0x0800 |
| // Simpleperf is already running; start tracing failed. |
| SIMPLEPREF_ALREADY_RUNNING = 4096; // 0x1000 |
| // Unable to get process id to profile. |
| UNABLE_TO_GET_PROCESS_ID_TO_PROFILE = 8192; // 0x2000 |
| // Unable to setprop to enable profiling. |
| UNABLE_TO_SETPROP_TO_ENABLE_PROFILING = 16384; // 0x4000 |
| // Unable to create(fork) simpleperf process |
| UNABLE_TO_CREATE_FORK_SIMPLEPREF = 32768; // 0x8000 |
| // Ongoing capture already exists |
| ONGOING_CAPTURE_EXISTS = 65536; // 0x10000 |
| // No technology-specific tracing options set. |
| NO_TRACING_OPTIONS_SET = 131072; // 0x20000 |
| } |
| optional Status status = 1; |
| // This is bitmap constructed using values defined in ErrorCode |
| optional int64 error_code = 2; |
| // The time at which the trace was started (in nanoseconds). |
| optional int64 start_time_ns = 3; |
| } |
| |
| message TraceStopStatus { |
| enum Status { |
| STATUS_UNSPECIFIED = 0; |
| SUCCESS = 1; |
| NO_ONGOING_PROFILING = 2; |
| APP_PROCESS_DIED = 3; |
| APP_PID_CHANGED = 4; |
| PROFILER_PROCESS_DIED = 5; |
| STOP_COMMAND_FAILED = 6; |
| STILL_PROFILING_AFTER_STOP = 7; |
| CANNOT_START_WAITING = 8; |
| WAIT_TIMEOUT = 9; |
| WAIT_FAILED = 10; |
| CANNOT_READ_WAIT_EVENT = 11; |
| CANNOT_COPY_FILE = 12; |
| CANNOT_FORM_FILE = 13; |
| CANNOT_READ_FILE = 14; |
| // Generic failure status for non-defined failures. |
| OTHER_FAILURE = 15; |
| UNRECOGNIZED = 16; |
| } |
| |
| // Each enum value must be an integer with at most 1 bit set in the binary |
| // format. |
| enum ErrorCode { |
| // No error during trace stop |
| NO_ERROR_TRACE_STOP = 0; // 0x0000 |
| // Failed to read trace from device |
| FAILED_TO_READ_TRACE_FROM_DEVICE = 1; // 0x0001 |
| // Unable to monitor trace file for completion |
| UNABLE_TO_MONITOR_TRACE_FILE_FOR_COMPLETION = 2; // 0x0002 |
| // Unable to run profile stop command |
| UNABLE_TO_RUN_PROFILE_STOP = 4; // 0x0004 |
| // Cannot read events while waiting for ART trace file. |
| CANNOT_READ_WHILE_WAITING_FOR_ART_TRACE_FILE = 8; // 0x0008 |
| // Wait for ART trace file failed. |
| WAIT_FOR_ART_TRACE_FILE_FAILED = 16; // 0x0010 |
| // Wait for ART trace file timed out. |
| WAIT_FOR_ART_TRACE_FILE_TIMED_OUT = 32; // 0x0020 |
| // Failed to stop atrace. |
| FAILED_TO_STOP_ATRACE = 64; // 0x0040 |
| // Failed to stop tracer. |
| FAILED_TO_STOP_TRACER = 128; // 0x0080 |
| // Failed to stop perfetto. |
| FAILED_TO_STOP_PERFETTO = 256; // 0x0100 |
| // This app was not being profiled. |
| APP_WAS_NOT_BEING_PROFILED = 512; // 0x0200 |
| // App died since profiling started. |
| APP_DIED_SINCE_PROFILEING_STARTED = 1024; // 0x0400 |
| // Recorded pid and current app pid do not match |
| RECORDED_PIP_AND_CURRENT_APP_PID_DO_NOT_MATCH = 2048; // 0x0800 |
| // Failed to send SIGTERM to simpleperf |
| FAILED_TO_SEND_SIGTERM_TO_SIMPLEPREF = 4096; // 0x1000 |
| // Unable to copy simpleperf raw trace. |
| UNABLE_TO_COPY_SIMPLEPREF_RAW_TRACE = 8192; // 0x2000 |
| // Waitpid failed with message |
| WAIT_PID_FAILED = 16384; // 0x4000 |
| // Simpleperf did not exit as expected. |
| SIMPLE_PREF_NOT_EXIT_AS_EXPECTED = 32768; // 0x8000 |
| // No ongoing capture exists |
| NO_ONGOING_CAPTURE = 65536; // 0x10000 |
| // No technology-specific tracing options found on trace stoppage. |
| NO_TRACING_OPTIONS_FOUND = 131072; // 0x20000 |
| // No trace type specified |
| NO_TRACE_TYPE_SPECIFIED_STOP = 262144; // 0x40000 |
| } |
| optional Status status = 1; |
| // This is bitmap constructed using values defined in ErrorCode |
| optional int64 error_code = 2; |
| // The time taken (i.e. elapsed duration) to stop the trace (in |
| // nanoseconds). |
| optional int64 stopping_duration_ns = 3; |
| } |
| |
| // Return status for allocation tracking |
| message AllocationTrackStatus { |
| enum Status { |
| STATUS_UNSPECIFIED = 0; |
| SUCCESS = 1; |
| IN_PROGRESS = 2; // A tracking session is already in-progress |
| NOT_ENABLED = 3; // A tracking session is not started. |
| // Profiling has not started on the specified pid. |
| // Only used by the legacy pipeline. |
| NOT_PROFILING = 4; |
| // Only used by the legacy pipeline. |
| FAILURE_UNKNOWN = 5; |
| UNRECOGNIZED = 6; |
| AGENT_UN_ATTACHABLE = 7; |
| } |
| optional Status status = 1; |
| // If |SUCCESS|, the start time of the AllocationInfo message which |
| // can be used to retrieve the record. |
| optional int64 start_time_ns = 2; |
| } |
| |
| // Return status for the HEAP_DUMP command. |
| message HeapDumpStatus { |
| enum Status { |
| STATUS_UNSPECIFIED = 0; |
| SUCCESS = 1; |
| // A heap dump is already in progress. |
| IN_PROGRESS = 2; |
| // Profiling has not started on the specified pid. |
| // Only used by the legacy pipeline. |
| NOT_PROFILING = 3; |
| // Only used by the legacy pipeline. |
| FAILURE_UNKNOWN = 4; |
| UNRECOGNIZED = 5; |
| } |
| optional Status status = 1; |
| // If |SUCCESS|, the start time of the HeapDumpInfo record which |
| // can be used to retrieve the record. |
| optional int64 start_time_ns = 2; |
| } |
| } |
| |
| // Android Profiler metrics |
| message AndroidProfilerEvent { |
| // The current stage we're on when this event was generated |
| optional Stage stage = 1; |
| |
| // The detailed type of this event. |
| optional Type type = 2; |
| |
| // Used to be set if |type| was |TRACE_CPU| |
| // Deprecated since 3.0.0.8 and superseded by cpu_capture_metadata |
| optional CpuProfilingConfig cpu_config = 3 [deprecated = true]; |
| |
| // Set if |type| is |CAPTURE_TRACE| |
| optional CpuCaptureMetadata cpu_capture_metadata = 4; |
| |
| // Set if |type| is |FILTER| |
| optional FilterMetadata filter_metadata = 5; |
| |
| // Set if |type| is |SELECT_MEMORY_HEAP| |
| optional MemoryHeap memory_heap = 6; |
| |
| // Set if |type| is |SESSION_CREATED| |
| optional ProfilerSessionCreationMetaData session_start_metadata = 7; |
| |
| // Set if |type| is |SESSION_ARTIFACT_SELECTED| |
| optional ProfilerSessionSelectionMetaData session_artifact_metadata = 8; |
| |
| // Set if |type| is |CPU_STARTUP_PROFILING| |
| optional CpuStartupProfilingMetadata cpu_startup_profiling_metadata = 9; |
| |
| // Set if |type| is |CPU_IMPORT_TRACE| |
| optional CpuImportTraceMetadata cpu_import_trace_metadata = 10; |
| |
| // Set if |type| is |CPU_API_TRACING| |
| optional CpuApiTracingMetadata cpu_api_tracing_metadata = 11; |
| |
| // Set if |type| is |SELECT_ENERGY_RANGE| |
| optional EnergyRangeMetadata energy_range_metadata = 12; |
| |
| // Set if |type| is |SELECT_ENERGY_EVENT| |
| optional EnergyEventMetadata energy_event_metadata = 13; |
| |
| // Set if |type| is |PERFD_CRASHED| |
| optional PerfdCrashInfo perfd_crash_info = 14; |
| |
| // Set if |type| is |TRANSPORT_DAEMON_FAILED| OR |TRANSPORT_PROXY_FAILED| |
| optional TransportFailureMetadata transport_failure_metadata = 15; |
| |
| // Set if |type| is |MEMORY_INSTANCE_FILTER| |
| optional MemoryInstanceFilterMetadata memory_instance_filter_metadata = 16; |
| |
| // Set if |type| is |TRANSPORT_DAEMON_STARTED| |
| optional TransportDaemonStartedInfo transport_daemon_started_info = 17; |
| |
| // Set if |type| is |TPD_MANAGER_*| |
| optional TraceProcessorDaemonManagerStats tpd_manager_stats = 18; |
| |
| // Set if |type| is |TPD_QUERY_*| |
| optional TraceProcessorDaemonQueryStats tpd_query_stats = 19; |
| |
| // Set if |type| is |SELECT_BOX| |
| optional AdtUiBoxSelectionMetadata box_selection_metadata = 20; |
| |
| // Set if |type| is |TRACK_GROUP_METADATA| |
| optional AdtUiTrackGroupMetadata track_group_metadata = 21; |
| |
| // Set if |type| is |SELECT_FRAME|, |TOGGLE_ALL_FRAMES|, or |TOGGLE_LIFECYCLE| |
| optional uint32 event_count = 22; |
| |
| // Set if |type| is |LOADING| |
| optional Loading loading = 23; |
| |
| // Set if |type| is |RUN_WITH_PROFILING| |
| optional RunWithProfilingMetadata run_with_profiling_metadata = 24; |
| |
| // Set if |type| is |PERFETTO_SDK_HANDSHAKE| |
| optional PerfettoSdkHandshakeMetadata perfetto_sdk_handshake_metadata = 25; |
| |
| // Set if |type| is |RESOLVE_COMPOSE_TRACING_CODE_LOCATION| |
| optional ResolveComposeTracingCodeLocationMetadata |
| resolve_compose_tracing_code_location_metadata = 26; |
| |
| // Set if |type| is |POWER_PROFILER_DATA_CAPTURED| |
| optional PowerProfilerCaptureMetadata power_profiler_capture_metadata = 27; |
| |
| // Set if |type| is |TASK_ENTERED| |
| optional TaskEnteredMetadata task_entered_metadata = 28; |
| |
| // Set if |type| is |TASK_FINISHED| |
| optional TaskFinishedMetadata task_finished_metadata = 29; |
| |
| // Set if |type| is |TASK_FAILED| |
| optional TaskFailedMetadata task_failed_metadata = 30; |
| |
| // Set if |type| is |TASK_SETTINGS_OPENED| |
| optional bool is_task_settings_changed = 31; |
| |
| enum Stage { |
| UNKNOWN_STAGE = 0; |
| |
| // The special stage shown to users when no device or process is available |
| NULL_STAGE = 1; |
| // The top-level view that shows all monitors at the same time |
| OVERVIEW_STAGE = 2; |
| CPU_STAGE = 3; |
| MEMORY_STAGE = 4; |
| NETWORK_STAGE = 5; |
| ENERGY_STAGE = 6; |
| CPU_CAPTURE_STAGE = 7; |
| MEMORY_HEAP_DUMP_STAGE = 8; |
| MEMORY_NATIVE_RECORDING_STAGE = 9; |
| MEMORY_JVM_RECORDING_STAGE = 10; |
| LIVE_STAGE = 11; |
| } |
| |
| enum MemoryHeap { |
| UNKNOWN_HEAP = 0; |
| |
| DEFAULT_HEAP = 1; |
| IMAGE_HEAP = 2; |
| ZYGOTE_HEAP = 3; |
| APP_HEAP = 4; |
| JNI_HEAP = 5; |
| NATIVE_HEAP = 6; |
| ALL_HEAP = 7; |
| } |
| |
| enum Type { |
| UNKNOWN_TYPE = 0; |
| |
| /// System |
| |
| // Fired when user starts profiling any app |
| PROFILING_STARTED = 1; |
| // Fired when user's profiling session attaches to an instrumented app |
| ADVANCED_PROFILING_STARTED = 2; |
| // This event should be correlated with |stage| |
| STAGE_ENTERED = 3; |
| // Triggered when the user starts an app in profiling mode. |
| RUN_WITH_PROFILING = 4; |
| // Triggered when perfd crashes. The callstack is sent with this metric. |
| PERFD_CRASHED = 5; |
| // Triggered when the transport device manager starts initializing a device. |
| PRE_TRANSPORT_DAEMON_STARTS = 6; |
| // Triggered when the transport daemon failed to launch. |
| TRANSPORT_DAEMON_FAILED = 7; |
| // Triggerd when the transport proxy layer fails to initialize. |
| TRANSPORT_PROXY_FAILED = 8; |
| // Triggered when the profiler service is unavailable. |
| PROFILER_INITIALIZATION_FAILED = 9; |
| // Triggered when the transport daemon is started. |
| TRANSPORT_DAEMON_STARTED = 10; |
| |
| /// General |
| |
| CHANGE_DEVICE = 101; |
| CHANGE_PROCESS = 102; |
| GO_BACK = 103; |
| SELECT_MONITOR = 104; |
| ZOOM_IN = 105; |
| ZOOM_OUT = 106; |
| ZOOM_RESET = 107; |
| ZOOM_TO_SELECTION = 114; |
| GO_LIVE = 108; |
| NAVIGATE_TO_CODE = 109; |
| // Create a selection on the current monitor's main chart. This event should |
| // be correlated with |stage|. |
| SELECT_RANGE = 110; |
| FILTER = 111; |
| // Triggered when profilers starts finding a process for auto-profiling. |
| AUTO_PROFILING_REQUESTED = 112; |
| // Triggered when profilers found a auto-profiling process successfully. |
| AUTO_PROFILING_SUCCEEDED = 113; |
| // Create a box selection. Should be correlated with |stage|. |
| SELECT_BOX = 115; |
| // Perform an action on a track group. Should be correlated with |stage|. |
| TRACK_GROUP_ACTION = 116; |
| // A loading event |
| LOADING = 117; |
| // Triggered when a Compose Tracing slice is engaged in an to attempt to |
| // navigate to code |
| RESOLVE_COMPOSE_TRACING_CODE_LOCATION = 118; |
| |
| /// CPU |
| |
| TRACE_SAMPLED = 201; // Deprecated since 3.0.0.5. Use TRACE_CPU. |
| TRACE_INSTRUMENTED = 202; // Deprecated since 3.0.0.5. Use TRACE_CPU. |
| SELECT_THREAD = 204; |
| SELECT_TOP_DOWN = 205; |
| SELECT_BOTTOM_UP = 206; |
| SELECT_FLAME_CHART = 207; |
| SELECT_CALL_CHART = 210; |
| OPEN_CPU_CONFIG_DIALOG = 208; |
| CREATE_CPU_CONFIG = 209; |
| TRACE_CPU = 211; // Deprecated since 3.0.0.8. Use CAPTURE_TRACE. |
| CAPTURE_TRACE = 212; // Correlate with |cpu_capture_metadata| |
| THREADS_REORDERED = 213; |
| KERNEL_VIEW_CLICKED = 214; |
| KERNEL_VIEW_TOGGLED = 215; |
| THREADS_VIEW_TOGGLED = 216; |
| CPU_STARTUP_PROFILING = 217; |
| CPU_IMPORT_TRACE = 218; |
| CPU_API_TRACING = 219; |
| SELECT_FRAME = 220; |
| TOGGLE_ALL_FRAMES = 221; |
| TOGGLE_LIFECYCLE = 222; |
| PERFETTO_SDK_HANDSHAKE = 223; |
| |
| /// Memory |
| |
| FORCE_GC = 301; |
| SNAPSHOT_HPROF = 302; |
| CAPTURE_ALLOCATIONS = 303; |
| SELECT_MEMORY_CHART = 304; |
| EXPORT_HPROF = 305; |
| EXPORT_ALLOCATION = 306; |
| ARRANGE_CLASSES = 307; |
| SELECT_MEMORY_STACK = 308; |
| SELECT_MEMORY_REFERENCES = 309; |
| SELECT_MEMORY_HEAP = 310; // This event type should have |memory_heap| |
| // This type should have |memory_instance_filter_metadata| |
| MEMORY_INSTANCE_FILTER = 311; |
| |
| /// Network |
| |
| SELECT_CONNECTION = 402; |
| SELECT_DETAILS_RESPONSE = 403; |
| SELECT_DETAILS_HEADERS = 404; |
| SELECT_DETAILS_STACK = 405; |
| SELECT_DETAILS_OVERVIEW = 406; |
| SELECT_DETAILS_REQUEST = 407; |
| SELECT_DETAILS_ERROR = 408; |
| SELECT_CONNECTIONS_CONNECTION_VIEW = 409; |
| SELECT_CONNECTIONS_THREADS_VIEW = 410; |
| |
| /// Energy |
| |
| // Sent in addition to |SELECT_RANGE| but including extra data |
| SELECT_ENERGY_RANGE = 601; |
| SELECT_ENERGY_EVENT = 602; |
| POWER_PROFILER_DATA_CAPTURED = 603; |
| |
| /// Session |
| |
| SESSION_CREATED = 501; |
| SESSION_STOPPED = 502; |
| SESSION_UI_EXPANDED = 503; |
| SESSION_UI_COLLAPSED = 504; |
| SESSION_UI_RESIZED = 505; |
| SESSION_ARTIFACT_SELECTED = 506; |
| SESSION_DROPDOWN_CLICKED = 507; |
| |
| /// TraceProcessorDaemon |
| // Daemon Management |
| TPD_MANAGER_SPAWN_OK = 700; |
| TPD_MANAGER_SPAWN_FAILED = 701; |
| |
| // Query Stats |
| TPD_QUERY_LOAD_TRACE = 710; |
| TPD_QUERY_PROCESS_METADATA = 711; |
| TPD_QUERY_LOAD_CPU_DATA = 712; |
| TPD_QUERY_LOAD_MEMORY_DATA = 713; |
| |
| // Task Stats |
| TASK_ENTERED = 800; |
| TASK_FINISHED = 801; |
| TASK_FAILED = 802; |
| |
| // Task Configuration Stats |
| TASK_SETTINGS_OPENED = 810; |
| } |
| |
| message Loading { |
| // Type of recording event |
| optional Type type = 1; |
| |
| // Whether this is an attempt or a success |
| optional bool is_success = 2; |
| |
| // Size of the trace or file to load (in KB) |
| optional uint32 size_kb = 3; |
| |
| // Event count or instance count, depending on the type |
| optional uint64 event_count = 4; |
| |
| // Set if |is_success| |
| optional uint32 elapsed_ms = 5; |
| |
| // Number of logical cores |
| optional uint32 core_count = 6; |
| |
| // Memory available in the machine (in MB) |
| optional uint32 machine_memory_mb = 7; |
| |
| // Memory set aside for studio (in MB) |
| optional uint32 studio_max_memory_mb = 8; |
| |
| // Memory available for studio (in MB) when event is sent |
| optional uint32 studio_free_memory_mb = 9; |
| |
| enum Type { |
| UNSPECIFIED = 0; |
| HPROF = 1; |
| HEAP_PROFD = 2; |
| LEGACY_ALLOC = 3; // pre-O |
| LIVE_ALLOC = 4; |
| PERFETTO_PROCESS_LIST = 5; |
| PERFETTO_PROCESS = 6; |
| SIMPLEPERF = 7; |
| ART = 8; |
| } |
| } |
| } |
| |
| // Stats for a single table in the Android Profiler DB |
| message AndroidProfilerDbTable { |
| // The unique name that identifies this table, e.g. "Cpu_Data", |
| // "Memory_AllocationEvents", or "Network_Connection" |
| optional string name = 1; |
| |
| // The number of records currently entered into this table |
| optional uint32 num_records = 2; |
| } |
| |
| // Stats for the DB used by Android Profiler |
| message AndroidProfilerDbStats { |
| // The amount of time the database has been running (in seconds) |
| optional uint32 age_sec = 1; |
| // DB cache on disk (in MB) |
| optional uint32 total_disk_mb = 2; |
| // Entries for each table in our DB |
| repeated AndroidProfilerDbTable tables = 3; |
| } |
| |
| // APK Analyzer stats |
| message ApkAnalyzerStats { |
| // size of the APK |
| optional uint64 uncompressed_size = 1; |
| |
| // size of the APK after compression |
| optional uint64 compressed_size = 2; |
| } |
| |
| // Gradle Plugin Upgrade Dialog Stats |
| message GradlePluginUpgradeDialogStats { |
| // The current Gradle Version used by the project e.g "4.10.3" |
| optional string current_gradle_version = 1; |
| // The current Android Gradle Plugin version used by the project e.g |
| // "3.4-alpha01" |
| optional string current_android_gradle_plugin_version = 2; |
| // The Gradle version that the update prompt recommended e.g "5.1" |
| optional string recommended_gradle_version = 3; |
| // The Android Gradle Plugin version that the upgrade prompt recommended e.g |
| // "3.5-beta02" |
| optional string recommended_android_gradle_plugin_version = 4; |
| // The action the user took |
| optional UserAction user_action = 5; |
| |
| enum UserAction { |
| // We don't know |
| UNKNOWN_USER_ACTION = 0; |
| // The user closed the dialog |
| CANCEL = 1; |
| // Do not show the prompt again |
| DO_NOT_ASK_AGAIN = 2; |
| // Do not show the prompt again until tomorrow |
| REMIND_ME_TOMORROW = 3; |
| // Upgrade the Gradle and Plugin version |
| OK = 4; |
| } |
| } |
| |
| // Gradle Sync details |
| message GradleSyncStats { |
| // Cause of sync |
| optional Trigger trigger = 1; |
| // Total time, the rest of the non negative times should add to this value |
| optional int64 total_time_ms = 2; |
| // Time in ms spent on gradle (can be negative in case of failure) |
| optional int64 gradle_time_ms = 3; |
| // Time in ms spent on IDE (can be negative in case of failure) |
| optional int64 ide_time_ms = 4; |
| // Whether the embedded maven repository is enabled |
| optional bool embedded_repo_enabled = 5; |
| // What type of sync was requested |
| optional GradleSyncType sync_type = 6; |
| // What type of sync was actually performed |
| optional GradleSyncType actual_sync_type = 7; |
| // The version of our Android Gradle plugin from the last known successful |
| // sync. (e.g. 3.5.0-dev) |
| optional string last_known_android_gradle_plugin_version = 8; |
| // The version of AGP used for this sync, if known. (e.g. 3.5.0) |
| optional string android_gradle_plugin_version = 9; |
| // Whether or not the project uses Groovy build files ("build.gradle") |
| optional bool uses_build_gradle = 10; |
| // Whether or not the project uses Kotlin build files ("build.gradle.kts") |
| optional bool uses_build_gradle_kts = 11; |
| // Deprecated. |
| // Use user_requested_sync_type and studio_requested_sync_execution_type. |
| // The Sync execution type: whether it uses Sequential or parallel model |
| // fetching. |
| optional GradleSyncExecutionType sync_execution_type = 12 [deprecated = true]; |
| // The type of sync execution user requested. Note that this may be overridden |
| // by [sync_execution_type] property. |
| optional UserRequestedExecution user_requested_sync_type = 13; |
| // The type of sync execution Studio requested. Note that e.g. even if |
| // parallel is requested, Gradle may decide to run it sequentially. |
| optional StudioRequestedExecution studio_requested_sync_type = 14; |
| // Data on downloads happened during sync. |
| optional BuildDownloadsAnalysisData downloads_data = 15; |
| // Data on Version Catalog use. |
| optional GradleVersionCatalogDetectorEvent.State |
| version_catalog_detector_state = 16; |
| // Data on phases executed during sync. |
| // Set only for sync finish events, when kind = GRADLE_SYNC_ENDED, |
| // GRADLE_SYNC_CANCELLED, GRADLE_SYNC_FAILURE or GRADLE_SYNC_FAILURE_DETAILS |
| repeated GradleSyncPhaseData gradle_sync_phases_data = 17; |
| // List of triggers for gradle Sync |
| enum Trigger { |
| // Default, should not be explicitly set |
| TRIGGER_UNKNOWN = 0; |
| // Used only when a project is opened |
| TRIGGER_PROJECT_LOADED = 1; |
| // Project modifications caused a sync. This is too generic, prefer a more |
| // specific value |
| TRIGGER_PROJECT_MODIFIED = 2; |
| // User has explicitly requested a sync using the sync button |
| TRIGGER_USER_REQUEST = 3; |
| // User clicked quickfix to enable embedded Maven repo |
| TRIGGER_EMBEDDED_REPO_ENABLED_BY_QUICKFIX = 4; |
| // User changed variant selection from Build Variants window |
| TRIGGER_VARIANT_SELECTION_CHANGED_BY_USER = 5; |
| // User made changes in PSD that require a sync |
| TRIGGER_PSD_CHANGES = 6; |
| // Sync was done as part of Android Studio testing (should not be used since |
| // logs from testing are stored in a different place) |
| TRIGGER_TEST_REQUESTED = 7; |
| |
| // First marker for user initiated syncs |
| TRIGGER_USER_FIRST_MARKER = 100; |
| // Started by ""Sync now"" banner when there are pending changes |
| TRIGGER_USER_STALE_CHANGES = 101; |
| // User clicked on the try again hyperlink from a banner |
| TRIGGER_USER_TRY_AGAIN = 102; |
| // Started by user from sync action |
| TRIGGER_USER_SYNC_ACTION = 103; |
| // Syncing with additional arguments for c++ projects |
| TRIGGER_USER_REFRESH_LINKED_CPP_PROJECTS = 104; |
| // Sync was requested by user while the project was building |
| TRIGGER_USER_REQUEST_WHILE_BUILDING = 105; |
| // Re-run was requested by user from command line output console with |
| // additional options |
| TRIGGER_USER_REQUEST_RERUN_WITH_ADDITIONAL_OPTIONS = 106; |
| // Last marker for user initiated syncs |
| TRIGGER_USER_LAST_MARKER = 199; |
| |
| // First marker for syncs caused by quickfixes |
| TRIGGER_QF_FIRST_MARKER = 400; |
| // Upgrade appengine version using a quickfix |
| TRIGGER_QF_APPENGINE_VERSION_UPGRADED = 401; |
| // Install an artifact using a quickfix |
| TRIGGER_QF_ARTIFACT_INSTALLED = 402; |
| // Install build tools using a quickfix |
| TRIGGER_QF_BUILD_TOOLS_INSTALLED = 403; |
| // Build tools version removed using a quickfix |
| TRIGGER_QF_BUILD_TOOLS_VERISON_REMOVED = 404; |
| // Build tools version changed using a quickfix |
| TRIGGER_QF_BUILD_TOOLS_VERSION_CHANGED = 405; |
| // Install CMake using a quickfix |
| TRIGGER_QF_CMAKE_INSTALLED = 406; |
| // Change JDK to the one used by Android Studio itself from a quickfix |
| TRIGGER_QF_JDK_CHANGED_TO_CURRENT = 407; |
| // Change JDK to use the one embedded with Android Studio from a quickfix |
| TRIGGER_QF_JDK_CHANGED_TO_EMBEDDED = 408; |
| // Install NDK using a quickfix |
| TRIGGER_QF_NDK_INSTALLED = 409; |
| // Property android.useDeprecatedNdk was set to true using a quickfix |
| TRIGGER_QF_NDK_INTEGRATION_DEPRECATED_SET = 410; |
| // Offline mode was disabled using a quickfix |
| TRIGGER_QF_OFFLINE_MODE_DISABLED = 411; |
| // Offline mode was enabled using a quickfix |
| TRIGGER_QF_OFFLINE_MODE_ENABLED = 412; |
| // Install one or more platforms using a quickfix |
| TRIGGER_QF_PLATFORM_INSTALLED = 413; |
| // Sync passing --refresh-dependencies option from an hyperlink |
| TRIGGER_QF_REFRESH_DEPENDENCIES = 414; |
| // Repository added from a quickfix |
| TRIGGER_QF_REPOSITORY_ADDED = 415; |
| // Install repository from a quickfix |
| TRIGGER_QF_REPOSITORY_INSTALLED = 416; |
| // Install missing SDK packages from a quickfix |
| TRIGGER_QF_SDK_PACKAGE_INSTALLED = 417; |
| // SDK path was changed from a quickfix |
| TRIGGER_QF_SDK_PATH_CHANGED = 418; |
| // Install a missing SDK version from a quickfix |
| TRIGGER_QF_SDK_VERSION_INSTALLED = 419; |
| // Gradle wrapper was created using a quickfix |
| TRIGGER_QF_WRAPPER_CREATED = 420; |
| // Gradle version was changed in wrapper using a quickfix |
| TRIGGER_QF_WRAPPER_GRADLE_VERSION_FIXED = 421; |
| // SDK has been removed from manifest files |
| TRIGGER_QF_SDK_REMOVED_FROM_MANIFEST = 422; |
| // Gradle distribution file has been deleted |
| TRIGGER_QF_GRADLE_DISTRIBUTION_DELETED = 423; |
| // Property distributionSha256Sum was removed from Gradle wrapper |
| TRIGGER_QF_DISTRIBUTIONSHA256SUM_REMOVED_FROM_WRAPPER = 424; |
| // User confirmed distributionSha256Sum in Gradle wrapper |
| TRIGGER_QF_DISTRIBUTIONSHA256SUM_CONFIRMED_BY_USER = 425; |
| // gradleJvm set to USE_PROJECT_JDK in gradle.xml |
| TRIGGER_QF_GRADLEJVM_TO_USE_PROJECT_JDK = 426; |
| // Remove JCenter from repositories |
| TRIGGER_QF_REMOVE_JCENTER_FROM_REPOSITORIES = 427; |
| // Select signing config using a quickfix |
| TRIGGER_QF_SIGNING_CONFIG_SELECTED = 428; |
| // Remove unsupported modules from a quickfix |
| TRIGGER_QF_REMOVE_UNSUPPORTED_MODULES = 429; |
| // minCompileSdk version is updated using a quickfix |
| TRIGGER_QF_MIN_COMPILE_SDK_UPDATED = 430; |
| // Last marker for syncs caused by quickfixes |
| TRIGGER_QF_LAST_MARKER = 999; |
| |
| // First marker for syncs caused by a refactor |
| TRIGGER_REFACTOR_FIRST_MARKER = 1200; |
| // Migrate project to use Androidx |
| TRIGGER_REFACTOR_MIGRATE_TO_ANDROIDX = 1201; |
| // Migrate project to use resource namespaces |
| TRIGGER_REFACTOR_MIGRATE_TO_RESOURCE_NAMESPACES = 1202; |
| // A module was renamed using refactoring |
| TRIGGER_REFACTOR_MODULE_RENAMED = 1203; |
| // Migrate project to use non-transitive R classes |
| TRIGGER_REFACTOR_MIGRATE_TO_NON_TRANSITIVE_R_CLASSES = 1204; |
| // Migrate BuildConfig setting from gradle.properties to build files |
| TRIGGER_REFACTOR_MIGRATE_BUILD_CONFIG_FROM_GRADLE_PROPERTIES = 1205; |
| // Last marker for syncs caused by a refactor |
| TRIGGER_REFACTOR_LAST_MARKER = 1299; |
| |
| // First marker for syncs due to changes from PSD |
| TRIGGER_PSD_FIRST_MARKER = 1500; |
| // A dependency was removed using PSD (using |
| // GradleOperations#removeDependencies) |
| TRIGGER_PSD_DEPENDENCY_REMOVED = 1501; |
| // A module was removed from the PSD (using |
| // AndroidProjectStructureConfigurable.DeleteModuleAction) |
| TRIGGER_PSD_MODULE_REMOVED = 1502; |
| // Last marker for syncs due to changes from PSD |
| TRIGGER_PSD_LAST_MARKER = 1599; |
| |
| // First marker for changes in SDK |
| TRIGGER_SDK_FIRST_MARKER = 1800; |
| // Android SDK path in local.properties was changed |
| TRIGGER_SDK_PATH_CHANGED = 1801; |
| // Last marker for changes in SDK |
| TRIGGER_SDK_LAST_MARKER = 1899; |
| |
| // First marker for sync due to changes done by |
| // AndroidGradleJavaProjectModelModifier |
| TRIGGER_MODIFIER_FIRST_MARKER = 2100; |
| // An action was redone (from |
| // AndroidGradleJavaProjectModelModifier#registerUndoAction) |
| TRIGGER_MODIFIER_ACTION_REDONE = 2101; |
| // An action was undone (from |
| // AndroidGradleJavaProjectModelModifier#registerUndoAction) |
| TRIGGER_MODIFIER_ACTION_UNDONE = 2102; |
| // A dependency to a module was added |
| TRIGGER_MODIFIER_ADD_MODULE_DEPENDENCY = 2103; |
| // A dependency to an external library was added |
| TRIGGER_MODIFIER_ADD_LIBRARY_DEPENDENCY = 2104; |
| // Language level was changed |
| TRIGGER_MODIFIER_LANGUAGE_LEVEL_CHANGED = 2105; |
| // Last marker for sync due to changes done by |
| // AndroidGradleJavaProjectModelModifier |
| TRIGGER_MODIFIER_LAST_MARKER = 2199; |
| |
| // First marker for changes in languages |
| TRIGGER_LANGUAGE_FIRST_MARKER = 2400; |
| // Java language level was changed |
| TRIGGER_LANGUAGE_JAVA_LEVEL_CHANGED = 2401; |
| // Kotlin was configured for current project |
| TRIGGER_LANGUAGE_KOTLIN_CONFIGURED = 2402; |
| // Last marker for changes in languages |
| TRIGGER_LANGUAGE_LAST_MARKER = 2499; |
| |
| // First marker for syncs related to Single Variant Sync |
| TRIGGER_SVS_FIRST_MARKER = 2700; |
| // SVS is not supported. SVS was disabled and a new sync started |
| TRIGGER_SVS_NOT_SUPPORTED = 2701; |
| // Last marker for syncs related to Single Variant Sync |
| TRIGGER_SVS_LAST_MARKER = 2799; |
| |
| // First marker for sync due to C++ changes |
| TRIGGER_CPP_FIRST_MARKER = 3000; |
| // Link an external C++ project with Gradle |
| TRIGGER_CPP_EXTERNAL_PROJECT_LINKED = 3001; |
| // Last marker for sync due to C++ changes |
| TRIGGER_CPP_LAST_MARKER = 3099; |
| |
| // First marker for AddDependencyAction syncs |
| TRIGGER_ADDDEPENDENCYACTION_FIRST_MARKER = 3300; |
| // A dependency was added by Add dependency action |
| TRIGGER_ADDDEPENDENCYACTION_CALLED = 3301; |
| // Last marker for AddDependencyAction syncs |
| TRIGGER_ADDDEPENDENCYACTION_LAST_MARKER = 3399; |
| |
| // First marker for syncs related to Espresso |
| TRIGGER_ESPRESSO_FIRST_MARKER = 3600; |
| // Espresso is enabled by RecordingDialog |
| TRIGGER_ESPRESSO_SETUP = 3601; |
| // Last marker for syncs related to Espresso |
| TRIGGER_ESPRESSO_LAST_MARKER = 3699; |
| |
| // First marker for syncs caused by a build |
| TRIGGER_BUILD_FIRST_MARKER = 3900; |
| // Sync is needed before building an APK |
| TRIGGER_BUILD_BEFORE_BUILDING_APK = 3901; |
| // There was an error in the previous sync (before building) or there were |
| // changes after build was done that require a sync |
| TRIGGER_BUILD_SYNC_NEEDED_AFTER_BUILD = 3902; |
| // Last marker for syncs caused by a build |
| TRIGGER_BUILD_LAST_MARKER = 3999; |
| |
| // First marker for sync started due to a run |
| TRIGGER_RUN_FIRST_MARKER = 4200; |
| // There are native unsynced variants before running |
| TRIGGER_RUN_NATIVE_UNSYNCED = 4201; |
| // Sync was not performed before running and there are changes that require |
| // a sync |
| TRIGGER_RUN_SYNC_NEEDED_BEFORE_RUNNING = 4202; |
| // Last marker for sync started due to a run |
| TRIGGER_RUN_LAST_MARKER = 4299; |
| |
| // First marker for changes in Android Gradle Plugin |
| TRIGGER_AGP_FIRST_MARKER = 4500; |
| // Android Gradle plugin was updated |
| TRIGGER_AGP_VERSION_UPDATED = 4501; |
| // Rollback of Android Gradle plugin update was requested |
| TRIGGER_AGP_VERSION_UPDATE_ROLLED_BACK = 4502; |
| // Last marker for changes in Android Gradle Plugin |
| TRIGGER_AGP_LAST_MARKER = 4599; |
| |
| // First marker for project loading triggers |
| TRIGGER_PROJECT_LOADED_FIRST_MARKER = 4800; |
| // First sync after project was created from NPW |
| TRIGGER_PROJECT_NEW = 4801; |
| // Project was reopen from recent projects or after IDE restart |
| TRIGGER_PROJECT_REOPEN = 4802; |
| // There was a failure while trying to setup module from cache |
| TRIGGER_PROJECT_CACHED_SETUP_FAILED = 4803; |
| // Last marker for project loading triggers |
| TRIGGER_PROJECT_LOADED_LAST_MARKER = 4899; |
| |
| // First marker for sync required while importing |
| TRIGGER_IMPORT_FIRST_MARKER = 5100; |
| // An ADT module was imported to the current project |
| TRIGGER_IMPORT_ADT_MODULE = 5101; |
| // One or more modules were copied and registered to current project |
| TRIGGER_IMPORT_MODULES_COPIED = 5102; |
| // Last marker for sync required while importing |
| TRIGGER_IMPORT_LAST_MARKER = 5199; |
| |
| // First marker for sync after changes in variants |
| TRIGGER_VARIANT_FIRST_MARKER = 5400; |
| // Variant changed by user but a full sync is required |
| TRIGGER_VARIANT_SELECTION_FULL_SYNC = 5401; |
| // Last marker for sync after changes in variants |
| TRIGGER_VARIANT_LAST_MARKER = 5499; |
| |
| // First marker for changes done by GradleDependencyManager |
| TRIGGER_GRADLEDEPENDENCY_FIRST_MARKER = 5700; |
| // A dependency was added |
| TRIGGER_GRADLEDEPENDENCY_ADDED = 5701; |
| // A dependency was updated |
| TRIGGER_GRADLEDEPENDENCY_UPDATED = 5702; |
| // Last marker for changes done by GradleDependencyManager |
| TRIGGER_GRADLEDEPENDENCY_LAST_MARKER = 5799; |
| |
| // First marker for changes related to Version Catalogs |
| TRIGGER_VERSION_CATALOG_FIRST_MARKER = 6000; |
| // A Version Catalog file was added |
| TRIGGER_VERSION_CATALOG_FILE_ADDED = 6001; |
| // Last marker for changes related to Version Catalogs |
| TRIGGER_VERSION_CATALOG_LAST_MARKER = 6099; |
| } |
| |
| // List of sync types |
| enum GradleSyncType { |
| // Default (used to identify sync done before we tracked this) |
| GRADLE_SYNC_TYPE_UNKNOWN = 0; |
| // IDEA sync |
| GRADLE_SYNC_TYPE_IDEA = 1; |
| // Single variant sync |
| GRADLE_SYNC_TYPE_SINGLE_VARIANT = 2; |
| // Compound sync |
| GRADLE_SYNC_TYPE_COMPOUND = 3; |
| // Shipped sync |
| GRADLE_SYNC_TYPE_SHIPPED = 4; |
| // New sync (without other features) |
| GRADLE_SYNC_TYPE_NEW_SYNC = 5; |
| } |
| |
| // Deprecated: use StudioRequestedExecution and UserRequestedExecution. |
| // Sync execution type: whether Sync fetches model builders in parallel or |
| // sequentially |
| enum GradleSyncExecutionType { |
| option deprecated = true; |
| |
| // Gradle sync runs sequentially |
| GRADLE_SYNC_RUNS_SEQUENTIALLY = 0; |
| |
| // Gradle sync runs in parallel |
| GRADLE_SYNC_RUNS_IN_PARALLEL = 1; |
| } |
| |
| enum UserRequestedExecution { |
| UNKNOWN_USER_REQUESTED_EXECUTION_TYPE = 0; |
| // User requested sequential sync. |
| USER_REQUESTED_SEQUENTIAL = 1; |
| |
| // User requested parallel sync. |
| USER_REQUESTED_PARALLEL = 2; |
| } |
| |
| enum StudioRequestedExecution { |
| UNKNOWN_STUDIO_REQUESTED_EXECUTION_TYPE = 0; |
| // Studio requested sequential sync. |
| STUDIO_REQUESTD_SEQUENTIAL = 1; |
| |
| // Studio requested parallel sync. |
| STUDIO_REQUESTD_PARALLEL = 2; |
| } |
| |
| message GradleSyncPhaseData { |
| // List of nested phase names defining this phase. |
| // The most inner phase goes last. |
| repeated SyncPhase phase_stack = 1 [packed = true]; |
| optional int64 phase_start_timestamp_ms = 2; |
| optional int64 phase_end_timestamp_ms = 3; |
| optional PhaseResult phase_result = 4; |
| |
| // Sync phase names. As phases can be nested, a list of them defines any |
| // particular phase. SYNC_TOTAL corresponds to the whole sync process and |
| // includes all phases. GRADLE_* are the phases inside gradle invocation. |
| enum SyncPhase { |
| UNKNOWN_PHASE = 0; |
| UNKNOWN_GRADLE_PHASE = 1; |
| GRADLE_CONFIGURE_ROOT_BUILD = 2; |
| GRADLE_CONFIGURE_BUILD = 3; |
| GRADLE_RUN_MAIN_TASKS = 4; |
| GRADLE_RUN_WORK = 5; |
| PROJECT_SETUP = 6; |
| SYNC_TOTAL = 7; |
| } |
| enum PhaseResult { |
| UNKNOWN_RESULT = 0; |
| SUCCESS = 1; |
| FAILURE = 2; |
| CANCELLED = 3; |
| } |
| } |
| } |
| |
| // Gradle sync issue details. |
| message GradleSyncIssue { |
| // The type of the sync issue. |
| optional AndroidStudioEvent.GradleSyncIssueType type = 1; |
| // The list of quick-fixes offered to resolve the issue. |
| repeated AndroidStudioEvent.GradleSyncQuickFix offered_quick_fixes = 2; |
| } |
| |
| // Metrics for native workspace sync. The data is collected in Android Studio |
| // after native workspace sync, which happens after Gradle sync is completed. |
| message GradleCppSyncStats { |
| // The time it takes to sync native workspace after Gradle sync is completed. |
| optional int64 native_workspace_sync_time_ms = 1; |
| |
| repeated NativeModuleStats synced_native_module_stats = 2; |
| |
| message NativeModuleStats { |
| // The total number of C files in this native module |
| optional int32 c_source_file_count = 1; |
| // The total number of C++ files in this native module |
| optional int32 cpp_source_file_count = 2; |
| // The number of distinct compiler flags. |
| optional int32 distinct_compiler_flag_lists_count = 3; |
| // The number of CIDR configurations created for this module. |
| optional int32 cidr_configuration_count = 4; |
| } |
| |
| // The estimated memory footprint of the CIDR workspace. This value is |
| // expensive to compute so it's sampled. |
| optional int32 cidr_workspace_size = 3; |
| } |
| |
| // APK Debugging project information |
| message ApkDebugProject { |
| // Client-side salted hash of the package name for tracking purposes. |
| optional string package_id = 1; |
| } |
| |
| // Details for layout inspector events |
| message LayoutInspectorEvent { |
| enum LayoutInspectorEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| // Capture view data from a window |
| CAPTURE = 1; |
| // Layout inspector was opened |
| OPEN = 2; |
| // Dump Display List of selected node |
| DUMP_DISPLAYLIST = 3; |
| // Pixel perfect feature used to overlay a design mock |
| OVERLAY_IMAGE = 4; |
| // Render a sub section of the captured view |
| RENDER_SUB_VIEW = 5; |
| // Navigate to declaration of a view resource by id |
| GO_TO_DECLARATION = 6; |
| // Capture view data timeout |
| CAPTURE_TIME_OUT = 7; |
| } |
| |
| // Type of event |
| optional LayoutInspectorEventType type = 1; |
| |
| // defined if LayoutInspectorEventType = CAPTURE, CAPTURE_TIME_OUT |
| optional int64 duration_in_ms = 2; |
| |
| // defined if LayoutInspectorEventType = CAPTURE |
| // size of the captured view data in bytes |
| optional int64 data_size = 3; |
| |
| // defined if LayoutInspectorEventType = CAPTURE or OPEN |
| // which version of the protocol is used to capture layout info |
| optional uint32 version = 4; |
| } |
| |
| // Details for dynamic layout inspector (inspector v2) events |
| message DynamicLayoutInspectorEvent { |
| enum DynamicLayoutInspectorEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| // Layout inspector was opened |
| OPEN = 1; |
| // User tried to attach to a device |
| ATTACH_REQUEST = 2; |
| // Device attached successfully |
| ATTACH_SUCCESS = 3; |
| // First render after connection |
| INITIAL_RENDER = 4; |
| // First render after connection without images |
| INITIAL_RENDER_NO_PICTURE = 5; |
| // First render after connection with bitmap images |
| INITIAL_RENDER_BITMAPS = 6; |
| // User tried to attach to a device using compatibility mode |
| COMPATIBILITY_REQUEST = 7; |
| // Device attached successfully in compatibility mode |
| COMPATIBILITY_SUCCESS = 8; |
| // First render after connection in compatibility mode |
| COMPATIBILITY_RENDER = 9; |
| // First render after connection without images in compatibility mode |
| COMPATIBILITY_RENDER_NO_PICTURE = 10; |
| // Session Data after a session ended |
| SESSION_DATA = 11; |
| // User saved a snapshot |
| SNAPSHOT_CAPTURED = 12; |
| // User loaded a snapshot |
| SNAPSHOT_LOADED = 13; |
| // Error loading a snapshot |
| SNAPSHOT_LOAD_ERROR = 14; |
| // User cancelled the snapshot saving process |
| SNAPSHOT_CANCELLED = 15; |
| // There was an error during initial connect |
| ATTACH_ERROR = 16; |
| // An attach attempt was cancelled or preempted by the user |
| ATTACH_CANCELLED = 17; |
| // Info about auto-connect to foreground process |
| AUTO_CONNECT_INFO = 18; |
| // A transport-related error |
| TRANSPORT_ERROR = 19; |
| } |
| |
| // Type of event |
| optional DynamicLayoutInspectorEventType type = 1; |
| // Data for the layout inspector session |
| optional DynamicLayoutInspectorSession session = 2; |
| // Additional information that will be available when looking at a snapshot |
| optional DynamicLayoutInspectorSnapshotInfo snapshot_info = 3; |
| // Extra info for error-related events |
| optional DynamicLayoutInspectorErrorInfo error_info = 4; |
| // Extra info about auto connect to foreground process |
| optional DynamicLayoutInspectorAutoConnectInfo auto_connect_info = 5; |
| // An error from the transport that prevents Layout Inspector from starting |
| optional DynamicLayoutInspectorTransportError transport_error = 6; |
| } |
| |
| // Transport related errors |
| message DynamicLayoutInspectorTransportError { |
| // Types of transport errors |
| enum Type { |
| UNSPECIFIED_STATE = 0; |
| // The transport failed to start the daemon |
| TRANSPORT_FAILED_TO_START_DAEMON = 1; |
| // A device is sending events with wrong timestamp |
| TRANSPORT_OLD_TIMESTAMP_BIGGER_THAN_NEW_TIMESTAMP = 2; |
| } |
| |
| optional Type type = 1; |
| } |
| |
| message DynamicLayoutInspectorAutoConnectInfo { |
| // The result of the handshake |
| enum HandshakeResult { |
| UNSPECIFIED_RESULT = 0; |
| // It's not known if auto-connection is supported |
| SUPPORT_UNKNOWN = 1; |
| // Auto-connection is supported |
| SUPPORTED = 2; |
| // Auto-connection is not supported |
| NOT_SUPPORTED = 3; |
| } |
| |
| // Deprecated, use HandshakeConversion instead |
| enum HandshakeUnknownConversion { |
| // A device with UNKNOWN support state converted to SUPPORTED |
| UNKNOWN_TO_SUPPORTED = 0; |
| // A device with UNKNOWN support state converted to NOT_SUPPORTED |
| UNKNOWN_TO_NOT_SUPPORTED = 1; |
| // A device with UNKNOWN support state was unplugged before converting |
| UNKNOWN_NOT_RESOLVED = 2; |
| } |
| |
| // Indicates when a handshake state converts to another |
| enum HandshakeConversion { |
| UNSPECIFIED_CONVERSION = 0; |
| // A device with SUPPORT_UNKNOWN state converted to SUPPORTED |
| FROM_UNKNOWN_TO_SUPPORTED = 1; |
| // A device with SUPPORT_UNKNOWN state converted to NOT_SUPPORTED |
| FROM_UNKNOWN_TO_NOT_SUPPORTED = 2; |
| // A device with SUPPORT_UNKNOWN state was unplugged before converting |
| FROM_UNKNOWN_TO_DISCONNECTED = 3; |
| // A device with NOT_SUPPORTED state converted to SUPPORTED (false negative) |
| FROM_NOT_SUPPORTED_TO_SUPPORTED = 4; |
| } |
| |
| // Reason why the HandshakeResult is NOT_SUPPORTED |
| enum AutoConnectReasonNotSupported { |
| UNSPECIFIED_REASON = 0; |
| // Dumpsys was not found |
| DUMPSYS_NOT_FOUND = 1; |
| // Grep was not found |
| GREP_NOT_FOUND = 2; |
| // Dumpsys found no top activity and no sleeping activities |
| DUMPSYS_NO_TOP_ACTIVITY_NO_SLEEPING_ACTIVITIES = 3; |
| // Dumpsys found no top activity but found awake activities |
| DUMPSYS_NO_TOP_ACTIVITY_BUT_HAS_AWAKE_ACTIVITIES = 4; |
| } |
| |
| // The result of the handshake. Does the device support auto connect? |
| optional HandshakeResult handshake_result = 1; |
| // Deprecated, use handshake_conversion_info instead |
| optional HandshakeUnknownConversion handshake_conversion = 2 |
| [deprecated = true]; |
| // Additional info about why the handshake_result is NOT_SUPPORTED |
| optional AutoConnectReasonNotSupported reason_not_supported = 3; |
| // Indicates when a handshake state converts to another |
| optional HandshakeConversion handshake_conversion_info = 4; |
| // Indicates whether this auto-connect info is about a recovery handshake |
| optional bool is_recovery_handshake = 5; |
| } |
| |
| // Extra info for error-related events |
| message DynamicLayoutInspectorErrorInfo { |
| // How far the inspector attach process got before an error occurred. |
| // Order matters: later states are farther along in the process. |
| enum AttachErrorState { |
| UNKNOWN_ATTACH_ERROR_STATE = 0; |
| NOT_STARTED = 1; |
| |
| // Test ADB roundtrip to device successful |
| ADB_PING = 4; |
| |
| // App Inspection states |
| // --------------------------------- |
| // Studio has established an app inspection connection to the device |
| ATTACH_SUCCESS = 7; |
| // Studio sent a request to start capturing |
| START_REQUEST_SENT = 10; |
| // The inspector received the request to start capturing |
| START_RECEIVED = 20; |
| // The inspector registered the root view detector |
| STARTED = 30; |
| // The inspector found root views and registered invalidation callbacks |
| ROOTS_EVENT_SENT = 40; |
| // Studio received the root views |
| ROOTS_EVENT_RECEIVED = 50; |
| // The inspector got a callback from the platform |
| VIEW_INVALIDATION_CALLBACK = 60; |
| // The inspector captured a screenshot or serialized an SKP |
| SCREENSHOT_CAPTURED = 70; |
| // The inspector executed the view hierarchy capture code |
| VIEW_HIERARCHY_CAPTURED = 80; |
| // The inspector sent a response |
| RESPONSE_SENT = 90; |
| // Studio received the response |
| LAYOUT_EVENT_RECEIVED = 100; |
| |
| // Compose-related states |
| // --------------------------------- |
| // Request sent to Compose inspector |
| COMPOSE_REQUEST_SENT = 110; |
| // TODO: compose inspector device-side states |
| |
| // Studio received a response from the compose inspector |
| COMPOSE_RESPONSE_RECEIVED = 200; |
| |
| // Legacy inspector states |
| // --------------------------------- |
| LEGACY_WINDOW_LIST_REQUESTED = 210; |
| LEGACY_WINDOW_LIST_RECEIVED = 220; |
| LEGACY_HIERARCHY_REQUESTED = 230; |
| LEGACY_HIERARCHY_RECEIVED = 240; |
| LEGACY_SCREENSHOT_REQUESTED = 250; |
| LEGACY_SCREENSHOT_RECEIVED = 260; |
| |
| // Common states |
| // --------------------------------- |
| PARSED_COMPONENT_TREE = 270; |
| // Model is updated with received info |
| MODEL_UPDATED = 280; |
| } |
| |
| // The error code encountered |
| enum AttachErrorCode { |
| // Unknown error code |
| UNKNOWN_ERROR_CODE = 0; |
| |
| // -------------------------------------- |
| // Error code from the View Client |
| // -------------------------------------- |
| |
| // Api lower than 29 |
| LOW_API_LEVEL = 1; |
| // Timeout with fallback to Legacy mode |
| CONNECT_TIMEOUT = 2; |
| |
| // -------------------------------------- |
| // Error codes from the View Agent |
| // -------------------------------------- |
| |
| UNKNOWN_VIEW_AGENT_ERROR = 101; |
| // No hardware acceleration |
| NO_HARDWARE_ACCELERATION = 102; |
| // The app seems to have no UI |
| NO_ROOT_VIEWS_FOUND = 103; |
| |
| // -------------------------------------- |
| // Error codes from App Inspection Layer |
| // -------------------------------------- |
| |
| // General fallback if we were unable to map the app inspection exception |
| UNKNOWN_APP_INSPECTION_ERROR = 201; |
| // The device in not found among the ABD devices |
| APP_INSPECTION_CANNOT_FIND_DEVICE = 202; |
| // The process is no longer found |
| APP_INSPECTION_PROCESS_NO_LONGER_EXISTS = 203; |
| // The inspector is incompatible with the library in the running app |
| APP_INSPECTION_INCOMPATIBLE_VERSION = 204; |
| // The targeted library does not exist in the app |
| APP_INSPECTION_MISSING_LIBRARY = 205; |
| // The target app is proguarded |
| APP_INSPECTION_PROGUARDED_APP = 206; |
| // An inspector artifact can't be resolved |
| APP_INSPECTION_ARTIFACT_NOT_FOUND = 207; |
| // The compose:ui:ui version file was missing |
| APP_INSPECTION_VERSION_FILE_NOT_FOUND = 208; |
| // Snapshot version used, but use.snapshot.jar flag is not set |
| APP_INSPECTION_SNAPSHOT_NOT_SPECIFIED = 209; |
| // Compose inspector not found. |
| APP_INSPECTION_COMPOSE_INSPECTOR_NOT_FOUND = 210; |
| // Failed to download compose inspector from maven |
| APP_INSPECTION_FAILED_MAVEN_DOWNLOAD = 211; |
| |
| // ---------------------------------- |
| // Error codes from Transport Layer |
| // ---------------------------------- |
| |
| TRANSPORT_UNKNOWN_ERROR = 301; |
| TRANSPORT_PUSH_FAILED_FILE_NOT_FOUND = 302; |
| |
| // ---------------------------------- |
| // Generic errors |
| // ---------------------------------- |
| |
| UNEXPECTED_ERROR = 401; |
| } |
| |
| // How far we got on initial connect before an error happened, when sending |
| // ATTACH_ERROR |
| optional AttachErrorState attach_error_state = 1; |
| |
| // The error encountered to abort the attach attempt |
| optional AttachErrorCode attach_error_code = 2; |
| } |
| |
| // Information specific to snapshots |
| message DynamicLayoutInspectorSnapshotInfo { |
| // The version of the snapshot file format. Current versions are: |
| // 1 - non-dynamic inspector |
| // 2 - new version of non-dynamic inspector, never enabled in production |
| // 3 - dynamic inspector in legacy mode (API < 28) |
| // 4 - dynamic inspector in normal mode |
| optional int32 snapshot_version = 1; |
| |
| // What program saved the snapshot |
| enum SaveSource { |
| UNKNOWN = 0; |
| STUDIO = 1; |
| } |
| // What program saved the snapshot |
| optional SaveSource save_source = 2; |
| // The version of studio (or some other future tool) that saved it |
| optional string save_version = 3; |
| // Was the inspector in live mode when the snapshot was saved |
| optional bool live_when_saved = 4; |
| // How long it took to save the snapshot in milliseconds |
| optional uint32 save_duration_ms = 5; |
| // How long it took to load the snapshot in milliseconds |
| optional uint32 load_duration_ms = 6; |
| } |
| |
| // Session data for dynamic layout inspector (inspector v2) |
| message DynamicLayoutInspectorSession { |
| // Session data around live versus refresh mode |
| optional DynamicLayoutInspectorLiveMode live = 1; |
| // Session data around 3D rotation |
| optional DynamicLayoutInspectorRotation rotation = 2; |
| // Session data around memory usage |
| optional DynamicLayoutInspectorMemory memory = 3; |
| // Session data around compose |
| optional DynamicLayoutInspectorCompose compose = 4; |
| // Session data around the system view toggle |
| optional DynamicLayoutInspectorSystemNode system = 5; |
| // Session data around goto declaration |
| optional DynamicLayoutInspectorGotoDeclaration goto_declaration = 6; |
| // Session data around attachment to process |
| optional DynamicLayoutInspectorAttachToProcess attach = 7; |
| } |
| |
| // Session data for dynamic layout inspector (inspector v2) around live mode |
| message DynamicLayoutInspectorLiveMode { |
| // Number of times the refresh button was clicked |
| optional uint32 refresh_button_clicks = 1; |
| // Component selection count while in live update mode |
| optional uint32 clicks_with_live_updates = 2; |
| // Component selection count while in manual refresh mode |
| optional uint32 clicks_without_live_updates = 3; |
| } |
| |
| // Session data for dynamic layout inspector (inspector v2) around 3D rotation |
| message DynamicLayoutInspectorRotation { |
| // Component selection count in image while showing in 3D |
| optional uint32 image_clicks_in_3d = 1; |
| // Component selection count in image while showing in 2D |
| optional uint32 image_clicks_in_2d = 2; |
| // Component selection count in the component tree while showing in 3D |
| optional uint32 component_tree_clicks_in_3d = 3; |
| // Component selection count in the component tree while showing in 2D |
| optional uint32 component_tree_clicks_in_2d = 4; |
| } |
| |
| // Session data for dynamic layout inspector (inspector v2) around the system |
| // view toggle |
| message DynamicLayoutInspectorCompose { |
| // Is the kotlin reflection library included in the project |
| optional bool kotlin_reflection_available = 1; |
| // Number of times a compose node was selected in image |
| optional uint32 image_clicks = 2; |
| // Number of times a compose node was selected in the component tree |
| optional uint32 component_tree_clicks = 3; |
| // Number of times a link in the property value section was clicked |
| optional uint32 go_to_source_from_property_value_clicks = 4; |
| // The max recomposition count seen for a composable in a session |
| optional uint32 max_recomposition_count = 5; |
| // The max recomposition skips seen for a composable in a session |
| optional uint32 max_recomposition_skips = 6; |
| // The max highlight amount seen in a session |
| optional float max_recomposition_highlight = 7; |
| // Number of times the recomposition counts were explicitly reset |
| optional uint32 recomposition_reset_clicks = 8; |
| // Number of frames received where the recomposition counts were shown |
| optional uint32 frames_with_recomposition_counts_on = 9; |
| // Number of frames received where the recomposition counts were in red |
| optional uint32 frames_with_recomposition_color_red = 10; |
| // Number of frames received where the recomposition counts were in blue |
| optional uint32 frames_with_recomposition_color_blue = 11; |
| // Number of frames received where the recomposition counts were in green |
| optional uint32 frames_with_recomposition_color_green = 12; |
| // Number of frames received where the recomposition counts were in yellow |
| optional uint32 frames_with_recomposition_color_yellow = 13; |
| // Number of frames received where the recomposition counts were in purple |
| optional uint32 frames_with_recomposition_color_purple = 14; |
| // Number of frames received where the recomposition counts were in orange |
| optional uint32 frames_with_recomposition_color_orange = 15; |
| } |
| |
| // Session data for dynamic layout inspector (inspector v2) around hiding of |
| // system nodes |
| message DynamicLayoutInspectorSystemNode { |
| // Number of selections while the system views are hidden |
| optional uint32 clicks_with_hidden_system_views = 1; |
| // Number of selections while the system views are visible |
| optional uint32 clicks_with_visible_system_views = 2; |
| } |
| |
| // Session data for dynamic layout inspector (inspector v2) around memory usage |
| message DynamicLayoutInspectorMemory { |
| // Memory snapshot for the first image rendered |
| optional Snapshot initial_snapshot = 1; |
| // Memory snapshot for the image requiring the most memory in the session |
| optional Snapshot largest_snapshot = 2; |
| |
| message Snapshot { |
| // True if the image was based on a skia snapshot, false it was a bitmap |
| optional bool skia_image = 1; |
| // The size used in the capture in mega bytes |
| optional uint64 capture_size_mb = 2; |
| // The time it took to measure the memory used |
| optional uint64 measurement_duration_ms = 3; |
| } |
| } |
| |
| // Session data around goto declaration |
| message DynamicLayoutInspectorGotoDeclaration { |
| // Number of clicks on "Goto Declaration" menu action |
| optional uint32 clicks_menu_action = 1; |
| // Number of times the "Goto Declaration" menu action was activated with key |
| // shortcut |
| optional uint32 key_strokes_shortcut = 2; |
| // Number of times double click was used to "Goto Declaration" |
| // from component tree |
| optional uint32 double_clicks = 3; |
| // Number of times double click was used to "Goto Declaration" |
| // from device render |
| optional uint32 double_clicks_from_render = 4; |
| } |
| |
| // Session data for dynamic layout inspector (inspector v2) process attaching |
| message DynamicLayoutInspectorAttachToProcess { |
| // Client type: Legacy or AppInspection |
| optional ClientType client_type = 1; |
| // True if the attach to process succeeded |
| optional bool success = 2; |
| // Error information if the attach failed |
| optional DynamicLayoutInspectorErrorInfo error_info = 3; |
| // Error information if the compose inspector failed |
| optional DynamicLayoutInspectorErrorInfo.AttachErrorCode compose_error_code = |
| 4; |
| // When we attached to a process, were there multiple projects open? |
| optional bool multiple_projects_open = 5; |
| // Was the debugger running for this session |
| optional bool debugger_attached = 6; |
| // Was the debugger paused during the attach |
| optional bool debugger_paused_during_attach = 7; |
| // Was auto connect enabled for this session |
| optional bool auto_connect_enabled = 8; |
| // Was Layout Inspector embedded in the Running Devices Tool Window |
| optional bool is_embedded_layout_inspector = 9; |
| // The time it took for attach to start and end. |
| // It can end because of success, error or cancellation. |
| optional int64 attach_duration_ms = 10; |
| |
| // The Client type |
| enum ClientType { |
| // Unknown client |
| UNKNOWN_CLIENT_TYPE = 0; |
| // Client using DdmClient.dumpViewHierarchy to retrieve View information |
| LEGACY_CLIENT = 1; |
| // Client using app inspection to retrieve View and Compose information |
| APP_INSPECTION_CLIENT = 2; |
| // Data loaded from a file |
| SNAPSHOT_CLIENT = 3; |
| } |
| } |
| |
| // Kotlin support information |
| message KotlinSupport { |
| // True if "Include Kotlin Support" option checked |
| // when Android project created, False otherwise. |
| // Set when kind = TEMPLATE_RENDER |
| optional bool include_kotlin_support = 1; |
| |
| // Kotlin version used, e.g. "1.1.3-2". |
| optional string kotlin_support_version = 2; |
| |
| // Android Ktx version used, e.g. "1.0.0". |
| optional string android_ktx_version = 3; |
| } |
| |
| // Details for connection assistant event |
| message ConnectionAssistantEvent { |
| enum ConnectionAssistantEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| // Assistant is opened |
| OPEN = 1; |
| // Scan USB devices button clicked |
| SCAN_USB_DEVICES_CLICKED = 2; |
| // USB devices detected |
| USB_DEVICES_DETECTED = 3; |
| // Restart ADB devices button clicked |
| RESTART_ADB_CLICKED = 4; |
| // ADB devices detected |
| ADB_DEVICES_DETECTED = 5; |
| // Report issue button clicked, opens report dialog |
| REPORT_ISSUE_CLICKED = 6; |
| // Issue reported |
| ISSUE_REPORTED = 7; |
| } |
| |
| // Type of event |
| optional ConnectionAssistantEventType type = 1; |
| |
| // defined if ConnectionAssistantEventType = USB_DEVICES_DETECTED, |
| // ADB_DEVICES_DETECTEd |
| optional int32 usb_devices_detected = 2; |
| |
| // defined if ConnectionAssistantEventType = USB_DEVICES_DETECTED, |
| // ADB_DEVICES_DETECTEd |
| optional int32 adb_devices_detected = 3; |
| } |
| |
| // Upgrade Android Studio Dialog stats |
| message UpgradeAndroidStudioDialogStats { |
| optional UserAction user_action = 1; |
| |
| enum UserAction { |
| // We don't know |
| UNKNOWN_USER_ACTION = 0; |
| // The user closed the dialog |
| CANCEL = 1; |
| // Upgrade Android Studio button |
| UPGRADE_STUDIO = 2; |
| // Do not show the prompt again |
| DO_NOT_ASK_AGAIN = 3; |
| } |
| } |
| |
| // Details for Out of Memory Dialog event |
| message OomDialogEvent { |
| // Event type describing which memory the process ran out of |
| optional OomDialogEventType event_type = 1; |
| |
| // Initial value of heap size (in MB) |
| optional int32 initial_heap_size = 2; |
| // Initial value of metaspace size (in MB) |
| optional int32 initial_metaspace_size = 3; |
| // Initial value of codecache size (in MB) |
| optional int32 initial_codecache_size = 4; |
| |
| // New heap size (in MB) |
| optional int32 saved_heap_size = 5; |
| // New metaspace size (in MB) |
| optional int32 saved_metaspace_size = 6; |
| // New codecache size (in MB) |
| optional int32 saved_codecache_size = 7; |
| |
| // true if user can modify memory size values |
| optional bool editing_enabled = 8; |
| |
| // How user interacted with the dialog |
| optional SelectedAction selected_action = 9; |
| |
| // Describes which memory type the process ran out of |
| enum OomDialogEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| // Out of heap memory |
| OOM_HEAP = 1; |
| // Out of permanent generation heap memory |
| OOM_PERM_GEN = 2; |
| // Out of metaspace memory |
| OOM_METASPACE = 3; |
| // Out of code cache memory |
| OOM_CODE_CACHE = 4; |
| // Not out of memory, but only small amount of heap available |
| // with frequent GC operations. |
| LOW_HEAP = 5; |
| } |
| |
| // How user interacted with the dialog |
| enum SelectedAction { |
| UNKNOWN_ACTION = 0; |
| // Save new settings and continue |
| CONTINUE_ACTION = 1; |
| // Save new settings and quit |
| QUIT_ACTION = 2; |
| // Dialog dismissed without saving |
| CANCEL_ACTION = 3; |
| } |
| } |
| |
| // Details for whats new assistant event |
| // Deprecated since 3.6.0.8, use WhatsNewAssistantUpdateEvent instead. |
| message WhatsNewAssistantEvent { |
| option deprecated = true; |
| |
| enum WhatsNewAssistantEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| // Assistant is opened |
| OPEN = 1; |
| // Auto Open on first load of a new AS version |
| AUTO_OPEN = 2; |
| // First interaction after opening |
| FIRST_INTERACTION = 3; |
| // Assistant is closed |
| CLOSED = 4; |
| // Button clicked |
| BUTTON_CLICKED = 5; |
| } |
| |
| // Type of event |
| optional WhatsNewAssistantEventType type = 1; |
| } |
| |
| // Details for What's New Assistant and its interactive contents utilisation. |
| message WhatsNewAssistantUpdateEvent { |
| // Details about action button usage in What's New Assistant. |
| // Track actions created/updated and action button clicks. |
| message ActionButtonEvent { |
| // Type of the action button |
| enum ActionButtonType { |
| UNKNOWN_BUTTON = 0; |
| // Build analyzer action button |
| BUILD_ANALYZER_SHOW = 1; |
| // App Inspection action button |
| APP_INSPECTION_SHOW = 2; |
| } |
| // State of the action button, tracks what message is shown at the moment. |
| // Each feature can define their own states if there are any. |
| enum ActionButtonState { |
| UNKNOWN_STATE = 0; |
| // Build analyzer can not be used because of old AGP version. |
| BUILD_ANALYZER_AGP_VERSION_LOW = 1; |
| // Build analyzer doesn't have data yet. Build will run on the click. |
| BUILD_ANALYZER_NO_DATA = 2; |
| // Build is running at the moment to gather data. |
| BUILD_ANALYZER_BUILD_RUNNING = 3; |
| // Build failed to finish and no data ready to be shown. |
| BUILD_ANALYZER_BUILD_FAILED = 4; |
| // Build analyzer data exist to be opened right away. |
| BUILD_ANALYZER_DATA_READY = 5; |
| } |
| enum EventType { |
| UNKNOWN_TYPE = 0; |
| BUTTON_CREATED = 1; |
| BUTTON_CLICK = 2; |
| BUTTON_STATE_UPDATED = 3; |
| } |
| |
| // Type of the action button |
| optional ActionButtonType action_button_type = 1; |
| // Type of the event |
| optional EventType event_type = 2; |
| // State of the button action at the moment of the event |
| optional ActionButtonState action_button_state = 3; |
| // Time between opening window and clicking state button |
| optional int64 time_from_wna_open = 4; |
| } |
| |
| // Whether this window was auto opened |
| optional bool auto_opened = 1; |
| // Whether this is the update flow or regular WNA |
| optional bool update_flow = 2; |
| // Whether the user scrolled to the bottom of the pane |
| optional bool scrolled_to_bottom = 3; |
| // Time between opening window and scrolling to bottom |
| optional int64 time_to_scrolled_to_bottom = 7; |
| // Whether the window was closed due to clicking "Dismiss" |
| optional bool dismissed = 4; |
| |
| // Time between opening window and clicking update button |
| optional int64 time_to_update_ms = 5; |
| // Time between opening window and closing it |
| optional int64 time_to_close_ms = 6; |
| // Action button events occurred during this session |
| repeated ActionButtonEvent action_button_events = 8; |
| } |
| |
| // Details for Design Editor's Help Panel update |
| message DesignEditorHelpPanelEvent { |
| // What sort of action was performed |
| optional HelpPanelAction action = 1; |
| // Help panel type |
| optional HelpPanelType help_panel_type = 2; |
| |
| // Time between opening window and closing it |
| optional int64 time_to_close_ms = 3; |
| |
| enum HelpPanelAction { |
| UNKNOWN_ACTION = 0; |
| OPEN = 1; |
| BUTTON_CLICKED = 2; |
| CLOSE = 3; |
| REACHED_END = 4; |
| } |
| enum HelpPanelType { |
| UNKNOWN_PANEL_TYPE = 0; |
| // Full default option |
| FULL_ALL = 1; |
| // Constraint layout specific panel |
| CONSTRAINT_LAYOUT = 2; |
| // Motion layout specific panel |
| MOTION_LAYOUT = 3; |
| // Nav editor specific panel |
| NAV_EDITOR = 4; |
| // Compose specific panel |
| COMPOSE = 5; |
| } |
| } |
| |
| // Information about a session running lint -- in build, in IDE, etc |
| message LintSession { |
| // analysis type - build, ide batch, ide incremental |
| optional AnalysisType analysis_type = 1; |
| |
| // performance metrics regarding this session |
| optional LintPerformance lint_performance = 2; |
| |
| // lint issue id's (counts, severity, etc) |
| repeated LintIssueId issue_ids = 3; |
| |
| // Client-side salted, sha256 of the root project path. |
| // This exists to allow multiple instant run builds in one project by one |
| // user to be correlated. |
| // |
| // The salt is rotated every 28 days, so it is not a permanent pseudonymous |
| // identifier. It is anonymized and is unique per user, but has a 1-N |
| // relation. |
| optional string project_id = 4; |
| |
| // true if user is using baselines |
| optional bool baseline_enabled = 5; |
| |
| // true if user is analyzing test sources |
| optional bool including_test_sources = 6; |
| |
| // true if user is analyzing generated sources |
| optional bool including_generated_sources = 7; |
| |
| // true if user is analyzing dependencies |
| optional bool including_dependencies = 8; |
| |
| // true if the build is configured to abort on error |
| optional bool abort_on_error = 9; |
| |
| // true if the build is configured to only check errors, not warnings |
| optional bool ignore_warnings = 10; |
| |
| // true if the build is configured to promote all warnings to errors |
| optional bool warnings_as_errors = 11; |
| |
| // The type of lint run that was performed: in IDE, from build, etc |
| enum AnalysisType { |
| // Other |
| UNKNOWN_ANALYSIS_TYPE = 0; |
| // Explicit lint (batch) execution, typically for a single variant |
| // If reporting statistics for a complete multi-variant analysis (which |
| // involves running lint repeatedly on each variant and then combining |
| // the results) use BUILD_ALL_VARIANTS instead |
| BUILD = 1; |
| // Running lint implicitly as part of a release build, with a small |
| // subset of checks enabled |
| VITAL = 2; |
| // Running a full lint analysis from the IDE (Analyze > Inspect Code) |
| IDE_BATCH = 3; |
| // Running lint on the fly in the editor for a single file |
| IDE_FILE = 4; |
| // Running the "lint" target on a project to compute results for all |
| // variants and product flavors |
| BUILD_ALL_VARIANTS = 5; |
| } |
| } |
| |
| // Information about a specific type of issue: frequency, severity, etc |
| message LintIssueId { |
| // The issue id is a unique identifier for this type of problem. |
| // Examples of issue id's are "HardcodedText" and "NewApi". |
| optional string issue_id = 1; |
| |
| // Number of occurrences of this issue in this session |
| optional int64 count = 2; |
| |
| // Severity assigned to issues of this type by the user |
| optional LintSeverity severity = 3; |
| |
| // The severity of the issue: fatal, or just a warning, etc |
| enum LintSeverity { |
| // Unknown |
| UNKNOWN_SEVERITY = 0; |
| // User did not change it from whatever lint set it to |
| DEFAULT_SEVERITY = 1; |
| // Fatal |
| FATAL_SEVERITY = 2; |
| // Error |
| ERROR_SEVERITY = 3; |
| // Warning |
| WARNING_SEVERITY = 4; |
| // Informational |
| INFORMATIONAL_SEVERITY = 5; |
| // Ignore (disabled/hidden) |
| IGNORE_SEVERITY = 6; |
| // Issue is enabled in general, but was suppressed with a local |
| // annotation or comment |
| SUPPRESSED_LOCALLY = 7; |
| } |
| } |
| |
| // Performance metrics about this lint analysis - duration, project size, etc |
| message LintPerformance { |
| // time to run lint in micro seconds |
| optional int64 analysis_time_ms = 1; |
| // number of files in project |
| optional int64 file_count = 2; |
| // number of gradle projects in session |
| optional int64 module_count = 3; |
| // number of Java source files in session |
| optional int64 java_source_count = 4; |
| // number of Kotlin source files in session |
| optional int64 kotlin_source_count = 5; |
| // number of resource files in session |
| optional int64 resource_file_count = 6; |
| // number of test soursce files in session. Note that test sources |
| // also contribute to the other file counts above. |
| optional int64 test_source_count = 7; |
| // time to initialize lint projects |
| optional int64 initialize_time_ms = 8; |
| // time to register custom detectors |
| optional int64 register_custom_detectors_time_ms = 9; |
| // time to compute the applicable detectors |
| optional int64 compute_detectors_time_ms = 10; |
| // time to run the first round of checks |
| optional int64 check_project_time_ms = 11; |
| // time to run any extra phases |
| optional int64 extra_phases_time_ms = 12; |
| // time to report baseline issues |
| optional int64 report_baseline_issues_time_ms = 13; |
| // time to dispose projects |
| optional int64 dispose_projects_time_ms = 14; |
| // time to generate repors |
| optional int64 report_generation_time_ms = 15; |
| } |
| |
| // A quickfix for lint was invoked: data about issue type, fix type, etc |
| message LintAction { |
| // The issue id is a unique identifier for this type of problem. |
| // Examples of issue id's are "HardcodedText" and "NewApi". |
| optional string issue_id = 1; |
| |
| // Client-side salted, sha256 of the root project path. |
| // This exists to allow multiple instant run builds in one project by one |
| // user to be correlated. |
| // |
| // The salt is rotated every 28 days, so it is not a permanent pseudonymous |
| // identifier. It is anonymized and is unique per user, but has a 1-N |
| // relation. |
| optional string project_id = 2; |
| |
| // A unique identifier for this quickfix. |
| optional string fix_id = 3; |
| |
| // Feedback about this lint check if available |
| optional LintFeedback lint_feedback = 4; |
| |
| // The user has provided feedback about this issue: problems, sentiment, etc |
| enum LintFeedback { |
| // Something else |
| UNKNOWN_FEEDBACK = 0; |
| |
| // Lint incorrectly diagnosed the code |
| FALSE_POSITIVE = 1; |
| |
| // The message is not clear |
| UNCLEAR_MESSAGE = 2; |
| |
| // I liked this check, thanks |
| LOVE_IT = 3; |
| } |
| } |
| |
| message RunEvent { |
| enum Status { |
| UNKNOWN_STATUS = 0; |
| // The run finished successfully |
| SUCCESS = 1; |
| // The run finished with an error |
| FAIL = 2; |
| // The run was aborted mid-way, for example, build failed. |
| ABORT = 3; |
| // Deprecated |
| BEFORE_RUN_TASK_FAIL = 4 [deprecated = true]; |
| // The run event was never completed for unknown reasons. |
| ABANDONED = 5; |
| } |
| |
| optional Status status = 1; |
| // The executor used, from Executor::getId() |
| optional string executor = 2; |
| // Whether the app is debuggable |
| optional bool debuggable = 3; |
| // Whether instant run is enabled |
| optional bool instant_run_enabled = 4; |
| // Whether the apply changes button was used |
| optional bool apply_changes = 5; |
| // Whether the device dialog was open |
| optional bool user_selected_target = 6; |
| // Weather a device, like the emulator, was launched |
| optional bool launched_devices = 7; |
| // How many devices were targeted |
| optional int32 device_count = 8; |
| // True if this run event started mid-way |
| optional bool partial = 9; |
| // All the launch tasks executed during deploy |
| repeated LaunchTaskDetail launch_task_detail = 10; |
| |
| // Timestamps in expected order |
| // The run cycle begins |
| optional int64 begin_timestamp_ms = 11; |
| // The before-run tasks start (i.e. running gradle) |
| optional int64 begin_before_run_tasks_timestamp_ms = 12; |
| // End of the before-run tasks |
| optional int64 end_before_run_tasks_timestamp_ms = 13; |
| // Before launching, we must wait for devices |
| optional int64 begin_wait_for_device_timestamp_ms = 14; |
| // All devices are now ready |
| optional int64 end_wait_for_device_timestamp_ms = 15; |
| // Launch tasks start being executed |
| optional int64 begin_launch_tasks_timestamp_ms = 16; |
| // All launch tasks completed |
| optional int64 end_launch_tasks_timestamp_ms = 17; |
| // The run cycle finished |
| optional int64 end_timestamp_ms = 18; |
| |
| // Whether the run configuration was set to deploy as instant |
| optional bool deployed_as_instant = 19; |
| // Whether the run configuration was set to deploy from app bundle |
| optional bool deployed_from_bundle = 20; |
| |
| // Enum name representing deploy failure reason |
| optional string deploy_failure_id = 21; |
| // Whether the user configured AC to fall back to Run |
| optional bool apply_changes_fallback_to_run = 22; |
| // Whether the user configured ACC to fall back to Run |
| optional bool apply_code_changes_fallback_to_run = 23; |
| // Whether the user configured Run to disable overlay installs. |
| optional bool run_always_install_with_pm = 24; |
| |
| enum AppComponent { |
| UNKNOWN = 0; |
| ACTIVITY = 1; |
| WATCH_FACE = 2; |
| TILE = 3; |
| COMPLICATION = 4; |
| } |
| // Type of AppComponent user wants to run |
| optional AppComponent app_component_type = 25; |
| |
| // Whether or not the deployed project is a Compose project. |
| optional bool is_compose_project = 26; |
| |
| // Client-side salted (rotating every 28 days), sha256 of the project base |
| // path. Used to correlate LiveEdit usage with Compose projects. |
| optional string project_id = 27; |
| } |
| |
| message LaunchTaskDetail { |
| // The id of the task |
| optional string id = 1; |
| // This task starts |
| optional int64 start_timestamp_ms = 2; |
| // This task ends |
| optional int64 end_timestamp_ms = 3; |
| // For the tasks that deploy artifacts, their details. |
| repeated ArtifactDetail artifact = 4; |
| // Thread ID this task is running on |
| optional int32 tid = 5; |
| // The completion status of the task. This value |
| // is populated from several enums in code (using enum.code()) |
| // interface, each LaunchTask has its own set of error codes with |
| // some of them coming from device and being populated here. This is similar |
| // to the RunEvent.deploy_failure_id |
| optional string status = 6; |
| } |
| |
| message StopEvent { |
| // Whether the stop succeeded |
| optional RunEvent.Status status = 1; |
| |
| // The executor used, from Executor::getId() |
| optional string executor = 2; |
| |
| // Whether the app is debuggable |
| optional bool debuggable = 3; |
| |
| // The stop cycle begins |
| optional int64 begin_timestamp_ms = 4; |
| |
| // The stop cycle finished |
| optional int64 end_timestamp_ms = 5; |
| |
| // Type of AppComponent user wants to stop |
| optional RunEvent.AppComponent app_component_type = 6; |
| } |
| |
| message StudioRunEvent { |
| option deprecated = true; |
| |
| enum RunType { |
| UNKNOWN = 0; |
| RUN = 1; |
| DEBUG = 2; |
| PROFILE = 3; |
| } |
| |
| enum SectionType { |
| UNKNOWN_SECTION = 0; |
| TOTAL = 1; |
| STUDIO = 2; |
| GRADLE = 3; |
| EMULATOR = 4; |
| DEPLOY = 5; |
| } |
| |
| enum EventType { |
| NONE = 0; |
| START = 1; |
| FINISH = 2; |
| } |
| |
| // mirrors com.android.tools.idea.gradle.util.BuildMode |
| enum BuildMode { |
| UNKNOWN_BUILD_MODE = 0; |
| |
| /** Cleans the project.*/ |
| CLEAN = 1; |
| |
| /** Compiles Java code and invokes Android build tools. */ |
| ASSEMBLE = 2; |
| |
| /** Clean project and then {@link #ASSEMBLE}. */ |
| REBUILD = 3; |
| |
| /** Compiles Java code, in selected modules, without invoking Android |
| * build tools. */ |
| COMPILE_JAVA = 4; |
| |
| /** Generate Java source only (e.g. R.java). */ |
| SOURCE_GEN = 5; |
| |
| /** Build project with translation support. */ |
| ASSEMBLE_TRANSLATE = 6; |
| |
| /** Build with the Gradle "bundle" task*/ |
| BUNDLE = 7; |
| |
| /** Build APKS from the Gradle "bundle" task*/ |
| APK_FROM_BUNDLE = 8; |
| } |
| |
| enum DeployTask { |
| UNKNOWN_TASK = 0; |
| |
| DEPLOY_APK = 1; |
| |
| DEPLOY_INSTANT_APP = 2; |
| |
| HOTSWAP = 3; |
| |
| SPLIT_APK_DEPLOY = 4; |
| } |
| |
| // The run id is a UUID within a single run of Android Studio |
| // for tracking a single run through various events |
| optional string run_id = 1; |
| |
| // The type of "Run" Studio is performing |
| optional RunType run_type = 2; |
| |
| // The section of the run this event is tracking |
| optional SectionType section_type = 3; |
| |
| // The type of event: start or end or error |
| optional EventType event_type = 4; |
| |
| // How long this section took, set when EventType is Finish or Failed |
| optional uint32 duration_ms = 5; |
| |
| // Set if SectionType = Gradle AND EventType = Start |
| optional BuildMode build_mode = 6; |
| |
| // Set if EventType = FINISH and SectionType = DEPLOY/TOTAL |
| optional bool is_successful = 7; |
| |
| // Set if EventType = START and SectionType = DEPLOY |
| optional uint32 artifact_count = 8; |
| |
| // Set if EventType = START and SectionType = DEPLOY |
| optional DeployTask deploy_task = 9; |
| |
| // The number of features disabled by the user |
| // Set if SectionType = DEPLOY and EventType = START and |
| // BuildMode = BUNDLE/APK_FROM_BUNDLE |
| optional uint32 disabled_dynamic_features_count = 11; |
| |
| // If this Run is using Instant Run, which may use HOTSWAP deploy task |
| // but could also use other deploy tasks. |
| // Set if SectionType = STUDIO and EventType = FINISH |
| optional bool instant_run = 12; |
| |
| // If using SplitApkDeployTask and doing a partial install |
| // Set if SectionType = DEPLOY and DeployTask = SPLIT_APK_DEPLOY |
| optional bool patch_build = 13; |
| |
| // If using SplitApkDeployTask and doing a resource only swap that |
| // does not restart the app |
| // Set if SectionType = DEPLOY and DeployTask = SPLIT_APK_DEPLOY |
| optional bool do_not_restart = 14; |
| |
| // If the app's debuggable flag is set to true |
| // Set if SectionType = TOTAL and EventType = START |
| optional bool debuggable = 15; |
| |
| // If the deploy target was picked by the user or auto selected by dialog |
| // Set if SectionType = STUDIO and EventType = FINISH |
| optional bool user_selected_target = 16; |
| |
| // Set if EventType = START and SectionType = DEPLOY |
| // Details of each artifact being deployed. |
| repeated ArtifactDetail artifact_details = 17; |
| |
| // Set when EventType = START and SectionType = TOTAL |
| // If user clicked the Run button instead of Apply Changes |
| optional bool force_coldswap = 18; |
| |
| // Set when EventType = START and SectionType = TOTAL |
| // If Instant Run setting is enabled |
| optional bool instant_run_enabled = 19; |
| } |
| |
| message ArtifactDetail { |
| // Size of the artifact in bytes. |
| optional uint64 size = 1; |
| |
| enum ArtifactType { |
| UNKNOWN = 0; |
| APK = 1; |
| BASELINE_PROFILE = 2; |
| } |
| |
| optional ArtifactType type = 2; |
| } |
| |
| // Statistics regarding IntelliJ project sizes |
| message IntellijProjectSizeStats { |
| enum FileType { |
| UNKNOWN_FILE_TYPE = 0; |
| JAVA = 1; |
| XML = 2; |
| DOT_CLASS = 3; |
| KOTLIN = 4; |
| NATIVE = 5; |
| } |
| // Search scope to decide counted file set |
| enum Scope { |
| UNKNOWN_SCOPE = 0; |
| // Whole project including both user sources and libraries |
| ALL = 1; |
| // All project libraries i.e. all jar files |
| LIBRARY = 2; |
| // Project files only |
| PROJECT = 3; |
| } |
| optional FileType type = 1; |
| optional Scope scope = 2; |
| optional int32 count = 3; |
| } |
| |
| // Statistics regarding tool windows |
| message StudioToolWindowActionStats { |
| enum EventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| |
| REGISTERED_EVENT_TYPE = 1; |
| |
| OPEN_EVENT_TYPE = 2; |
| |
| CLOSED_EVENT_TYPE = 3; |
| } |
| |
| // "View Mode" in the UI |
| enum ToolWindowType { |
| // Default tool window type |
| UNKNOWN_TOOL_WINDOW_TYPE = 0; |
| |
| // "Dock Pinned" in the UI |
| DOCKED_TOOL_WINDOW_TYPE = 1; |
| |
| // "Float" in the UI |
| FLOATING_TOOL_WINDOW_TYPE = 2; |
| |
| // "Undock" in the UI |
| SLIDING_TOOL_WINDOW_TYPE = 3; |
| |
| // "Window" in the UI |
| WINDOWED_TOOL_WINDOW_TYPE = 4; |
| } |
| |
| // Id of the tool window |
| // e.g. 'Assistant' |
| optional string tool_window_id = 1; |
| |
| optional EventType event_type = 2; |
| |
| // "View Mode" in the UI |
| optional ToolWindowType tool_window_type = 3; |
| } |
| |
| // Statistics related to PSD |
| message PSDEvent { |
| // Available PSD generations |
| enum PSDGeneration { |
| PROJECT_STRUCTURE_DIALOG_GENERATION_UNKNOWN = 0; |
| // Original PSD generation |
| PROJECT_STRUCTURE_DIALOG_GENERATION_001 = 1; |
| // "New PSD", use numbers just in case we get even a newer generation |
| PROJECT_STRUCTURE_DIALOG_GENERATION_002 = 2; |
| } |
| // Available left Configurables |
| enum PSDLeftConfigurable { |
| PROJECT_STRUCTURE_DIALOG_LEFT_CONFIGURABLE_UNKNOWN = 0; |
| // SDK |
| PROJECT_STRUCTURE_DIALOG_LEFT_CONFIGURABLE_SDK = 1; |
| // Project |
| PROJECT_STRUCTURE_DIALOG_LEFT_CONFIGURABLE_PROJECT = 2; |
| // Any service |
| PROJECT_STRUCTURE_DIALOG_LEFT_CONFIGURABLE_SERVICE = 3; |
| // Any module on version 1 |
| PROJECT_STRUCTURE_DIALOG_LEFT_CONFIGURABLE_MODULE = 4; |
| // Variables |
| PROJECT_STRUCTURE_DIALOG_LEFT_CONFIGURABLE_VARIABLES = 100; |
| // Modules on version 2 |
| PROJECT_STRUCTURE_DIALOG_LEFT_CONFIGURABLE_MODULES = 101; |
| // Dependencies |
| PROJECT_STRUCTURE_DIALOG_LEFT_CONFIGURABLE_DEPENDENCIES = 102; |
| // Build variants |
| PROJECT_STRUCTURE_DIALOG_LEFT_CONFIGURABLE_BUILD_VARIANTS = 103; |
| // Suggestions |
| PROJECT_STRUCTURE_DIALOG_LEFT_CONFIGURABLE_SUGGESTIONS = 104; |
| } |
| // Top tabs that can be selected in the models |
| enum PSDTopTab { |
| PROJECT_STRUCTURE_DIALOG_TOP_TAB_UNKNOWN = 0; |
| // Information |
| PROJECT_STRUCTURE_DIALOG_TOP_TAB_INFORMATION = 1; |
| // Properties |
| PROJECT_STRUCTURE_DIALOG_TOP_TAB_PROPERTIES = 2; |
| // Signing |
| PROJECT_STRUCTURE_DIALOG_TOP_TAB_SIGNING = 3; |
| // Flavors |
| PROJECT_STRUCTURE_DIALOG_TOP_TAB_FLAVORS = 4; |
| // Build types |
| PROJECT_STRUCTURE_DIALOG_TOP_TAB_BUILD_TYPES = 5; |
| // Dependencies |
| PROJECT_STRUCTURE_DIALOG_TOP_TAB_DEPENDENCIES = 6; |
| // Default Config |
| PROJECT_STRUCTURE_DIALOG_TOP_TAB_DEFAULT_CONFIG = 100; |
| // Signing Configs |
| PROJECT_STRUCTURE_DIALOG_TOP_TAB_SIGNING_CONFIGS = 101; |
| } |
| // Fields that can be modified |
| enum PSDField { |
| PROJECT_STRUCTURE_DIALOG_FIELD_UNKNOWN = 0; |
| // From SDK Location |
| PROJECT_STRUCTURE_DIALOG_FIELD_SDK_LOCATION_ANDROID_SDK_LOCATION = 20; |
| PROJECT_STRUCTURE_DIALOG_FIELD_SDK_LOCATION_JDK_LOCATION = 21; |
| PROJECT_STRUCTURE_DIALOG_FIELD_SDK_LOCATION_ANDROID_NDK_LOCATION = 22; |
| // From Project |
| PROJECT_STRUCTURE_DIALOG_FIELD_PROJECT_GRADLE_VERSION = 40; |
| PROJECT_STRUCTURE_DIALOG_FIELD_PROJECT_ANDROID_PLUGIN_VERSION = 41; |
| PROJECT_STRUCTURE_DIALOG_FIELD_PROJECT_ANDROID_PLUGIN_REPOSITORY = 42; |
| PROJECT_STRUCTURE_DIALOG_FIELD_PROJECT_DEFAULT_LIBRARY_REPOSITORY = 43; |
| // From Module |
| // From Information tab (there are no fields, only a message) |
| // From Propertires tab |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_PROPERTIES_COMPILE_SDK_VERSION = 120; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_PROPERTIES_BUILD_TOLS_VERSION = 121; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_PROPERTIES_LIBRARY_REPOSITORY = 122; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_PROPERTIES_IGNORE_ASSETS_PATTERN = |
| 123; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_PROPERTIES_INCREMENTAL_DEX = 124; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_PROPERTIES_SOURCE_COMPATIBILITY = 125; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_PROPERTIES_TARGET_COMPATIBILITY = 126; |
| // From Signing tab |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_SIGNING_NAME = 140; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_SIGNING_KEY_ALIAS = 141; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_SIGNING_KEY_PASSWORD = 142; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_SIGNING_STORE_FILE = 143; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_SIGNING_STORE_PASSWORD = 144; |
| // From Flavors tab |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_FLAVOR_NAME = 160; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_FLAVOR_APPLICATION_ID = 161; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_FLAVOR_PROGUARD_FILE = 162; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_FLAVOR_SIGNING_CONFIG = 163; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_FLAVOR_TARGET_SDK_VERSION = 164; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_FLAVOR_TEST_INSTRUMENTATION_RUNNER = |
| 165; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_FLAVOR_TEST_APPLICATION_ID = 166; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_FLAVOR_VERSION_CODE = 167; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_FLAVOR_VERSION_NAME = 168; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_FLAVOR_VERSION_NAME_SUFFIX = 169; |
| // From Build Types tab |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_BUILDTYPE_NAME = 180; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_BUILDTYPE_DEBUGGABLE = 181; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_BUILDTYPE_JNI_DEBUGGABLE = 182; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_BUILDTYPE_SIGNING_CONFIG = 183; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_BUILDTYPE_RENDERSCRIPT_DEBUGGABLE = |
| 184; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_BUILDTYPE_RENDERSCRIPT_OPTIM_LEVEL = |
| 185; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_BUILDTYPE_MINIFY_ENABLED = 186; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_BUILDTYPE_PSEUDO_LOCAL_ENABLED = 187; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_BUILDTYPE_PROGUARD_FILE = 188; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_BUILDTYPE_APPLICATION_ID_SUFFIX = 189; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_BUILDTYPE_VERSION_NAME_SUFFIX = 190; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_BUILDTYPE_ZIP_ALLIGN_ENABLED = 191; |
| // From Dependencies tab |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_DEPENDENCIES_DEPENDENCY = 200; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULE_DEPENDENCIES_SCOPE = 201; |
| // From Variables |
| PROJECT_STRUCTURE_DIALOG_FIELD_VARIABLES_NAME = 300; |
| PROJECT_STRUCTURE_DIALOG_FIELD_VARIABLES_VALUE = 301; |
| // From Modules |
| // From Default Config |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_DEFAULTCONFIG_APPLICATION_ID = 400; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_DEFAULTCONFIG_TARGET_SDK_VERSION = |
| 401; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_DEFAULTCONFIG_MIN_SDK_VERSION = 402; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_DEFAULTCONFIG_MAX_SDK_VERSION = 403; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_DEFAULTCONFIG_SIGNING_CONFIG = 404; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_DEFAULTCONFIG_PROGUARD_FILES = 405; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_DEFAULTCONFIG_MANIFEST_PLACEHOLDERS = |
| 406; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_DEFAULTCONFIG_MULTI_DEX_ENABLED = |
| 407; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_DEFAULTCONFIG_TEST_INSTRUMENTATION_RUNNER_CLASS_NAME = |
| 408; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_DEFAULTCONFIG_TEST_INSTRUMENTATION_RUNNER_ARGUMENTS_KEY = |
| 409; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_DEFAULTCONFIG_TEST_INSTRUMENTATION_RUNNER_ARGUMENTS_VALUE = |
| 410; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_DEFAULTCONFIG_TEST_APPLICATION_ID = |
| 411; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_DEFAULTCONFIG_VERSION_CODE = 412; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_DEFAULTCONFIG_VERSION_NAME = 413; |
| // From Signing Configs |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_SIGNINGCONFIGS_NAME = 420; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_SIGNINGCONFIGS_STORE_FILE = 421; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_SIGNINGCONFIGS_STORE_PASSWORD = 422; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_SIGNINGCONFIGS_KEY_ALIAS = 423; |
| PROJECT_STRUCTURE_DIALOG_FIELD_MODULES_SIGNINGCONFIGS_KEY_PASSWORD = 424; |
| // From Dependencies |
| PROJECT_STRUCTURE_DIALOG_FIELD_DEPENDENCIES_REQUESTED_VERSION = 500; |
| // From Build Variants |
| // From Build Types |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_BUILDTYPES_DEBUGGABLE = 600; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_BUILDTYPES_JNI_DEBUGGABLE = |
| 601; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_BUILDTYPES_RENDERSCRIPT_DEBUGGABLE = |
| 602; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_BUILDTYPES_RENDERSCRIPT_OPTIMIZATION_LEVEL = |
| 603; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_BUILDTYPES_SIGNING_CONFIG = |
| 604; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_BUILDTYPES_PROGUARD_FILES = |
| 605; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_BUILDTYPES_MANIFEST_PLACEHOLDERS = |
| 606; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_BUILDTYPES_MINIFY_ENABLED = |
| 607; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_BUILDTYPES_MULTI_DEX_ENABLED = |
| 608; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_BUILDTYPES_APPLICATIOND_ID_SUFFIX = |
| 609; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_BUILDTYPES_VERSION_NAME_SUFFIX = |
| 610; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_BUILDTYPES_ZIP_ALIGN_ENABLED = |
| 611; |
| // From Flavors |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_DIMENSION = 620; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_APPLICATION_ID = 621; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_TARGET_SDK_VERSION = |
| 622; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_MIN_SDK_VERSION = 623; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_MAX_SDK_VERSION = 624; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_SIGNING_CONFIG = 625; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_PROGUARD_FILES = 626; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_MANIFEST_PLACEHOLDERS = |
| 627; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_MULTI_DEX_ENABLED = |
| 628; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_TEST_INSTRUMENTATION_RUNNER_CLASS_NAME = |
| 629; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_TEST_INSTRUMENTATION_RUNNER_ARGUMENTS_KEY = |
| 630; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_TEST_INSTRUMENTATION_RUNNER_ARGUMENTS_VALUE = |
| 631; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_TEST_APPLICATION_ID = |
| 632; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_VERSION_CODE = 633; |
| PROJECT_STRUCTURE_DIALOG_FIELD_BUILDVARIANTS_FLAVORS_VERSION_NAME = 634; |
| // From Suggestions |
| } |
| |
| // Repository usage statistics in PSD. |
| message PSDRepositoryUsage { |
| // Types of repositories that can be searched. |
| enum PSDRepository { |
| PROJECT_STRUCTURE_DIALOG_REPOSITORY_UNKNOWN = 0; |
| PROJECT_STRUCTURE_DIALOG_REPOSITORY_GOOGLE = 1; |
| PROJECT_STRUCTURE_DIALOG_REPOSITORY_MAVEN_CENTRAL = 2; |
| PROJECT_STRUCTURE_DIALOG_REPOSITORY_JCENTER = 3; |
| PROJECT_STRUCTURE_DIALOG_REPOSITORY_LOCAL = 4; |
| PROJECT_STRUCTURE_DIALOG_REPOSITORY_OTHER = 5; |
| } |
| // The repository being accessed. |
| optional PSDRepository repository = 1; |
| // How long did it take to search the repository for a specific library |
| // from the user's perspective. Some repositories like Google's one |
| // requires multiple files to be fetched to complete the search. |
| optional uint64 duration_ms = 2; |
| } |
| |
| // What PSD generation is used? |
| optional PSDGeneration generation = 1; |
| // Left Configurable from which the event was created |
| optional PSDLeftConfigurable left_configurable = 2; |
| // Tab from which the event is generated |
| optional PSDTopTab top_tab = 3; |
| // How long was PSD open? |
| optional uint64 duration_ms = 4; |
| // List of fields that were modified |
| repeated PSDField modified_fields = 5; |
| // Repositories searched. |
| repeated PSDRepositoryUsage repositories_searched = 6; |
| } |
| |
| // UserSentiment describes how users feel about the product. |
| message UserSentiment { |
| // does the user feel positive or negative about the product at this time? |
| optional SentimentState state = 1; |
| // in our popup question the user can indicate a satisfaction level. |
| optional SatisfactionLevel level = 2; |
| |
| enum SentimentState { |
| UNKNOWN_SENTIMENT_STATE = 0; |
| POSITIVE = 1; |
| NEGATIVE = 2; |
| // The user is feeling strong enough about the issue to start filing a bug. |
| FILE_BUG = 3; |
| // We popped up a question dialog on what the user's sentiment is instead of |
| // them chosing to submit feedback themselves |
| POPUP_QUESTION = 4; |
| } |
| |
| enum SatisfactionLevel { |
| UNKNOWN_SATISFACTION_LEVEL = 0; |
| VERY_DISSATISFIED = 1; |
| DISSATISFIED = 2; |
| NEUTRAL = 3; |
| SATISFIED = 4; |
| VERY_SATISFIED = 5; |
| } |
| } |
| |
| // Detailed info about emulator boot up. |
| message EmulatorBootInfo { |
| enum BootStatus { |
| UNKNOWN_STATUS = 0; |
| BOOT_COMPLETED = 1; |
| BOOT_FAILED = 2; |
| } |
| // Outcome of the emulator boot. |
| optional BootStatus boot_status = 1; |
| // How long it took to boot, either successfully or not. |
| optional uint64 duration_ms = 2; |
| } |
| |
| // Reports information about how users invoke available dialogs. |
| message DialogStats { |
| enum DialogState { |
| UNKNOWN_DIALOG_STATE = 0; |
| SHOW = 1; |
| SELECT = 2; |
| APPLY = 3; |
| RESET = 4; |
| CLOSE = 5; |
| } |
| // java class name (our code, not customer) of the Dialog reported on |
| // e.g. ' com.intellij.openapi.options.newEditor.SettingsDialog' |
| optional string dialog_class_name = 1; |
| // State the dialog is transitioning to. |
| optional DialogState state = 2; |
| } |
| |
| // Data Binding metrics |
| message DataBindingEvent { |
| // The detailed type of this event. |
| optional EventType type = 1; |
| |
| // The context in which this event was triggered. |
| optional DataBindingContext context = 2; |
| |
| // Set if |type| is |DATA_BINDING_BUILD_EVENT| or |DATA_BINDING_SYNC_EVENT| |
| optional DataBindingPollMetadata poll_metadata = 3; |
| |
| // Collects view binding layout count when |type| = |DATA_BINDING_BUILD_EVENT| |
| optional ViewBindingPollMetadata view_binding_metadata = 4; |
| |
| // Type of data binding event |
| enum EventType { |
| UNKNOWN_TYPE = 0; |
| |
| /// Polling events |
| // Triggered when a gradle sync happens |
| DATA_BINDING_SYNC_EVENT = 1; |
| // Triggered when a build happens |
| DATA_BINDING_BUILD_EVENT = 2; |
| |
| /// User initiated events |
| // Completion related events |
| DATA_BINDING_COMPLETION_SUGGESTED = 101; |
| DATA_BINDING_COMPLETION_ACCEPTED = 102; |
| DATA_BINDING_COMPLETION_DECLINED = 103; |
| } |
| |
| // Used to denote the context in which data binding events are triggered |
| enum DataBindingContext { |
| UNKNOWN_CONTEXT = 0; |
| |
| // Data binding expression of the format @{() -> obj.func()} |
| DATA_BINDING_CONTEXT_LAMBDA = 1; |
| |
| // Data binding expression of the format @{obj::func} |
| DATA_BINDING_CONTEXT_METHOD_REFERENCE = 2; |
| |
| // Data binding xml tags. For example <variable> tag. |
| DATA_BINDING_CONTEXT_XML_TAG = 3; |
| } |
| |
| // Data binding stats we actively poll for |
| message DataBindingPollMetadata { |
| /// These are set when the message is a |DATA_BINDING_SYNC_EVENT| |
| // Whether user enabled data binding in gradle file. |
| optional bool data_binding_enabled = 1; |
| |
| // # of data binding layout xmls |
| optional uint32 layout_xml_count = 2; |
| |
| // # of data binding imports |
| optional uint32 import_count = 3; |
| |
| // # of data binding variables |
| optional uint32 variable_count = 4; |
| |
| // # of data binding expressions in the xml |
| optional uint32 expression_count = 5; |
| |
| // # of data binding related errors generated by compiler |
| optional uint32 error_count = 6; |
| |
| // # of modules in this project |
| optional uint32 module_count = 7; |
| |
| // # of modules with data binding enabled |
| optional uint32 data_binding_enabled_module_count = 8; |
| |
| // Observable type metrics |
| optional ObservableMetrics observable_metrics = 101; |
| |
| // Binding adapter metrics |
| optional BindingAdapterMetrics binding_adapter_metrics = 102; |
| |
| // Live Data metrics |
| optional LiveDataMetrics live_data_metrics = 103; |
| |
| message ObservableMetrics { |
| // # of observable primitives used |
| optional uint32 primitive_count = 1; |
| |
| // # of observable collections |
| optional uint32 collection_count = 2; |
| |
| // # of user defined observable objects |
| optional uint32 observable_object_count = 3; |
| } |
| |
| message BindingAdapterMetrics { |
| // # of user defined adapters |
| optional uint32 adapter_count = 1; |
| |
| // # of references to user defined adapters in layout xml |
| optional uint32 adapter_reference_count = 2; |
| } |
| |
| message LiveDataMetrics { |
| // # of live data objects |
| optional uint32 live_data_object_count = 1; |
| } |
| } |
| |
| // View binding stats we poll for |
| message ViewBindingPollMetadata { |
| // Whether user enabled view binding in gradle dsl. |
| optional bool view_binding_enabled = 1; |
| |
| // Number of view binding layout xmls. |
| optional uint32 layout_xml_count = 2; |
| } |
| } |
| |
| enum EditorFileType { |
| UNKNOWN = 0; // Anything not explicitly in this list. |
| JAVA = 1; |
| KOTLIN = 2; |
| XML = 3; // .xml, unless more specific info is available (see below). |
| GROOVY = 4; |
| PROPERTIES = 5; |
| JSON = 6; |
| KOTLIN_SCRIPT = 7; // .kts |
| NATIVE = 8; // .c, .cpp, .h, etc. |
| XML_MANIFEST = 9; // AndroidManifest.xml |
| // XML resource types come from com.android.resources.ResourceFolderType. |
| XML_RES_ANIM = 10; |
| XML_RES_ANIMATOR = 11; |
| XML_RES_COLOR = 12; |
| XML_RES_DRAWABLE = 13; |
| XML_RES_FONT = 14; |
| XML_RES_INTERPOLATOR = 15; |
| XML_RES_LAYOUT = 16; |
| XML_RES_MENU = 17; |
| XML_RES_MIPMAP = 18; |
| XML_RES_NAVIGATION = 19; |
| XML_RES_RAW = 20; |
| XML_RES_TRANSITION = 21; |
| XML_RES_VALUES = 22; |
| XML_RES_XML = 23; |
| KOTLIN_COMPOSE = 24; |
| TOML = 25; |
| CMAKE = 26; |
| } |
| |
| message TypingLatencyStats { |
| message LatencyRecord { |
| optional EditorFileType file_type = 1; |
| // Total number of keys typed. |
| optional int64 total_keys_typed = 2; |
| // Sum of latency for all keys typed. |
| optional int64 total_latency_ms = 3; |
| // Max latency recorded for a single key typed. |
| optional int64 max_latency_ms = 4; |
| // Full latency histogram. |
| optional Histogram histogram = 5; |
| } |
| // Per-file-type latency stats. |
| repeated LatencyRecord latency_records = 1; |
| // Whether the IDE was in Essential Highlighting or not |
| optional bool essential_highlighting = 2; |
| } |
| |
| message EditorHighlightingStats { |
| message Stats { |
| optional EditorFileType file_type = 1; |
| // Highlighting latencies in milliseconds. |
| optional Histogram histogram = 2; |
| } |
| repeated Stats by_file_type = 1; |
| } |
| |
| message EditorCompletionStats { |
| message Stats { |
| // File type (e.g., Java). |
| optional EditorFileType file_type = 1; |
| // Time in milliseconds to show initial completion popup. |
| optional Histogram popup_latency = 2; |
| // Time in milliseconds to fill *all* completion results. |
| optional Histogram full_completion_latency = 3; |
| // Time in milliseconds to insert a selected completion item. |
| optional Histogram insertion_latency = 4; |
| } |
| // Completion stats for each file type. |
| repeated Stats by_file_type = 1; |
| } |
| |
| // Details of events relating to the Android Studio Patch Updater |
| message StudioPatchUpdaterEvent { |
| optional Kind kind = 1; |
| |
| // Information about the patch itself |
| optional Patch patch = 2; |
| |
| // Details about patch updater issues presented to the user. |
| optional IssueDialog issue_dialog = 3; |
| |
| // Options chosen by the user from the |
| optional IssueDialogChoices issue_dialog_choices = 4; |
| |
| // The kind of event reported |
| enum Kind { |
| UNKNOWN_EVENT_KIND = 0; |
| // Android Studio Patch Updater: Startup |
| START = 1; |
| // Android Studio Patch Updater: Display Patch details |
| PATCH_DETAILS_SHOW = 2; |
| // Android Studio Patch Updater: Show generic retry-able error dialog |
| RETRYABLE_ERROR_DIALOG_SHOW = 3; |
| // Android Studio Patch Updater: Show generic fatal error dialog |
| FATAL_ERROR_DIALOG_SHOW = 4; |
| // Android Studio Patch Updater: Show (potentially recoverable) validation |
| // issue dialog |
| VALIDATION_PROBLEMS_DIALOG_SHOW = 5; |
| // Android Studio Patch Updater: Validation issue dialog was closed. |
| VALIDATION_PROBLEMS_DIALOG_CLOSE = 6; |
| // Android Studio Patch Updater: Enter phase of the update process |
| PHASE_UNKNOWN = 7; |
| PHASE_EXTRACTING_PATCH_FILES = 8; |
| PHASE_VALIDATING_INSTALLATION = 9; |
| PHASE_BACKING_UP_FILES = 10; |
| PHASE_PREPARING_UPDATE = 11; |
| PHASE_APPLYING_PATCH = 12; |
| PHASE_REVERTING = 13; |
| PHASE_CLEANING_UP = 14; |
| // Android Studio Patch Updater: Successful exit |
| EXIT_OK = 15; |
| // Android Studio Patch Updater: Exit with controlled abort |
| EXIT_ABORT = 16; |
| // Android Studio Patch Updater: Exit with unexpected exception |
| EXIT_EXCEPTION = 17; |
| } |
| |
| // Information about the patch itself |
| message Patch { |
| // The version of studio patching from, e.g. '183.5153.38.35.5240547' |
| optional string studio_version_from = 1; |
| // The version of studio patching to, e.g. '183.5153.38.35.5256920' |
| optional string studio_version_to = 2; |
| } |
| |
| // The options available for the user to address the |
| // patch updater errors. |
| enum ValidationOption { |
| UNKNOWN_VALIDATION_OPTION = 0; |
| NONE = 1; |
| IGNORE = 2; |
| KEEP = 3; |
| REPLACE = 4; |
| DELETE = 5; |
| KILL_PROCESS = 6; |
| } |
| |
| // Details about patch updater issues presented to the user. |
| message IssueDialog { |
| // The issues presented in the table to the user, |
| // which may or may not be actionable. |
| repeated Issue issue = 1; |
| |
| message Issue { |
| // The type of issue presented |
| enum Kind { |
| UNKNOWN_KIND = 0; |
| INFO = 1; |
| CONFLICT = 2; |
| ERROR = 3; |
| } |
| // The action the updater was attempting to perform |
| enum Action { |
| UNKNOWN_ACTION = 0; |
| CREATE = 1; |
| UPDATE = 2; |
| DELETE = 3; |
| NO_ACTION = 4; |
| VALIDATE = 5; |
| } |
| |
| // The type of issue presented |
| optional Kind kind = 1; |
| // The action that the patcher was attempting to perform |
| optional Action action = 2; |
| // The options available to the user |
| repeated ValidationOption presented_option = 3; |
| } |
| } |
| |
| // The resolution choices chosen by the user from the issue dialog |
| message IssueDialogChoices { |
| repeated Choice choice = 1; |
| // A single choice made by the user |
| message Choice { |
| optional ValidationOption chosen_option = 1; |
| } |
| } |
| } |
| |
| // Event related to the resource manager |
| message ResourceManagerEvent { |
| optional Kind kind = 1; |
| |
| optional ResourceType resource_type = 2; |
| |
| enum Kind { |
| UNKNOWN_EVENT_KIND = 0; |
| |
| // Resource Manager tool window is openend |
| TOOL_WINDOW_OPEN = 1; |
| |
| // Resource Manager opened as Resource Picker Dialog |
| RESOURCE_PICKER_DIALOG_OPEN = 17; |
| |
| // Asset added pressing the "Import Drawable" action |
| ASSET_ADDED_VIA_BUTTON = 2; |
| |
| // Asset added using Drag and Drop on the resource manager |
| ASSET_ADDED_VIA_DND = 3; |
| |
| // User open the view showing the different version of a resource |
| DETAIL_VIEW_OPENED = 4; |
| |
| // A resource has been opened via the resource manager |
| ASSET_OPENED = 5; |
| |
| // List mode has been changed to grid or list |
| LIST_MODE_CHANGED = 6; |
| |
| // User shows or hides dependent module assets |
| DEPENDENT_MODULES_SHOWN = 18; |
| DEPENDENT_MODULES_HIDDEN = 19; |
| |
| // User shows or hides libraries assets |
| LIBRARIES_SHOWN = 7; |
| LIBRARIES_HIDDEN = 8; |
| |
| // User shows or hides framework assets |
| FRAMEWORK_SHOWN = 20; |
| FRAMEWORK_HIDDEN = 21; |
| |
| // User shows or hides theme attributes assets |
| THEME_ATTR_SHOWN = 22; |
| THEME_ATTR_HIDDEN = 23; |
| |
| // User enables a filter by resource type (E.g: Filter 'vector' Drawables) |
| ENABLE_FILTER_BY_TYPE = 24; |
| |
| // A density indicator was present in the imported file |
| DENSITY_INFERED = 9; |
| |
| // Drop events |
| DROP_ON_XML_BLANK_SPACE = 10; |
| DROP_ON_XML_TAG = 11; |
| DROP_ON_XML_ATTRIBUTE = 12; |
| DROP_ON_LAYOUT_VIEW = 13; |
| DROP_ON_LAYOUT_VIEWGROUP = 14; |
| |
| // Default drop type when the target does not recognize the resource url |
| // type |
| DROP_AS_TEXT = 15; |
| |
| // When user tries to import more resources than the supported number |
| IMPORT_LIMIT_REACHED = 16; |
| |
| // When the user manually refreshes the preview of a resource |
| REFRESH_RES_PREVIEW = 25; |
| |
| // When the user manually refreshes all previews whithin a ResourceType |
| REFRESH_ALL_RES_TYPE_PREVIEWS = 26; |
| } |
| |
| // The type of the resource. It could be an Android type (e.g drawable) |
| // or an external type (e.g SVG, PNG) |
| enum ResourceType { |
| UNKNOWN = 0; |
| DRAWABLE = 1; |
| COLOR = 2; |
| LAYOUT = 3; |
| STRING = 4; |
| FONT = 5; |
| SVG = 6; |
| RASTER = 7; |
| NAVIGATION = 8; |
| MENU = 9; |
| // Animation related resources (animator, interpolator, transition, etc.) |
| ANIMATION = 10; |
| STYLE = 11; |
| // Any other value-like resource (plurals, integers, etc.) |
| VALUE = 12; |
| XML = 13; |
| } |
| } |
| |
| message IdePluginInfo { |
| // The set of plugins enabled for the current session. |
| repeated IdePlugin plugins = 1; |
| } |
| |
| message IdePlugin { |
| // Unique ID (e.g., "org.jetbrains.kotlin"). |
| optional string id = 1; |
| // Version (e.g., "1.3.21-release-Studio3.4-1"). |
| optional string version = 2; |
| // Whether this plugin (in its current version) came bundled with Studio. |
| optional bool bundled = 3; |
| } |
| |
| // Information about the status of Windows Defender, which can have a |
| // significant impact on build speed. We check whether realtime scanning is |
| // enabled, and if so, whether several important directories are excluded from |
| // scanning. This message is sent once per project, since the project root is |
| // one such directory. |
| message WindowsDefenderStatus { |
| // Overall status of Windows Defender |
| optional Status status = 1; |
| // Whether the project root directory is excluded from scanning. |
| optional bool project_dir_excluded = 2; |
| |
| // Status of Windows Defender - either scanning is disabled, or all, some, or |
| // none of the important directories are excluded, or there was some problem |
| // determining the status. |
| enum Status { |
| UNKNOWN_STATUS = 0; |
| SCANNING_DISABLED = 1; |
| // Deprecated, excluded paths information not available anymore |
| ALL_EXCLUDED = 2 [deprecated = true]; |
| // Deprecated, excluded paths information not available anymore |
| SOME_EXCLUDED = 3 [deprecated = true]; |
| // Deprecated, excluded paths information not available anymore |
| NONE_EXCLUDED = 4 [deprecated = true]; |
| CHECK_IGNORED = 5; |
| ENABLED_AUTO = 6; |
| ENABLED_MANUAL = 7; |
| } |
| } |
| |
| // Event for memory settings configuration and recommendation |
| message MemorySettingsEvent { |
| // Kind of the event. |
| optional EventKind kind = 1; |
| // Current memory settings. |
| optional MemorySettings current = 2; |
| // Recommended memory settings. |
| optional MemorySettings recommended = 3; |
| // New memory settings changed by users (may or may not be saved yet). |
| optional MemorySettings changed = 4; |
| |
| enum EventKind { |
| UNKNOWN = 0; |
| // Configuration dialog shown. |
| SHOW_CONFIG_DIALOG = 1; |
| // Users change the settings and save. |
| SETTINGS_CHANGE_SAVED = 2; |
| // Users change the settings but do not save. |
| SETTINGS_CHANGE_CANCELLED = 3; |
| // Session uses the non-default recommended heap size. |
| NON_DEFAULT_RECOMMENDATION_USED = 4; |
| // Users click the "Apply recommendation" button in the memory panel. |
| APPLY_RECOMMENDATION_BUTTON_CLICKED = 5; |
| // Recommendation notification shown. |
| SHOW_RECOMMENDATION = 6; |
| // Users click "Save and Restart" from recommendation notification. |
| SAVE_AND_RESTART = 7; |
| // Users click "Configure" from recommendation notification. |
| CONFIGURE = 8; |
| // Users click "Remind me later" from recommendation notification. |
| REMIND_ME_LATER = 9; |
| // Users click "Do not ask again" from recommendation notification. |
| DO_NOT_ASK = 10; |
| } |
| } |
| |
| message MemorySettings { |
| optional int32 ide_xmx = 1; |
| optional int32 gradle_daemon_xmx = 2; |
| optional int32 kotlin_daemon_xmx = 3; |
| } |
| |
| // Event related to studion update flow |
| message StudioUpdateFlowEvent { |
| optional Kind event_kind = 1; |
| |
| // Version we are updating to, e.g. "182.5107.16.33.5314842" |
| optional string studio_new_version = 2; |
| |
| // Set when event_kind = DIALOG_OPEN |
| optional DialogTrigger dialog_trigger = 3; |
| |
| // Set when event_kind = DIALOG_CLICK_ACTION |
| // Some extra buttons can be added to the update dialog with |
| // the build xml entry. The action is to open provided link in the browser. |
| // Typically it is 'Release notes' button, but since it is not fixed, |
| // seems good to send the name of the action. |
| // This text comes as part of an update information xml from Google |
| // and does not contain any end user information. |
| optional string action_name = 4; |
| |
| enum Kind { |
| UNKNOWN_KIND = 0; |
| NOTIFICATION_SHOWN = 1; |
| // User clicked on the notification update action |
| NOTIFICATION_UPDATE_LINK_CLICKED = 2; |
| // Update dialog was opened |
| DIALOG_OPEN = 3; |
| |
| // Dialog button clicks |
| DIALOG_CLICK_UPDATE = 4; |
| DIALOG_CLICK_IGNORE = 5; |
| DIALOG_CLICK_LATER = 6; |
| // Other non-fixed actions (typically 'Release notes' link) |
| DIALOG_CLICK_ACTION = 7; |
| |
| // Patch download result |
| PATCH_DOWNLOAD_SUCCESS = 8; |
| PATCH_DOWNLOAD_FAILURE = 9; |
| } |
| |
| // What triggers update dialog to open |
| enum DialogTrigger { |
| UNKNOWN_DIALOG_TRIGER = 0; |
| // User clicks check for updates action to open dialog |
| MANUAL = 1; |
| // User clicked on the notification update action to open dialog |
| NOTIFICATION = 2; |
| } |
| } |
| |
| // Contains information on what we show on the build output window when the |
| // build fails. |
| message BuildErrorMessage { |
| enum ErrorType { |
| UNKNOWN_ERROR_TYPE = 0; |
| JAVA_COMPILER = 1; |
| KOTLIN_COMPILER = 2; |
| CLANG = 3; |
| CMAKE = 4; |
| DATA_BINDING = 5; |
| XML_PARSER = 6; |
| AAPT = 7; |
| D8 = 8; |
| R8 = 9; |
| RESOURCE_AND_ASSET_MERGER = 10; |
| GENERAL_ANDROID_GRADLE_PLUGIN = 11; |
| INVALID_TOML_DEFINITION = 12; |
| CONFIGURATION_CACHE = 13; |
| } |
| |
| enum FileType { |
| UNKNOWN_FILE_TYPE = 0; |
| // The file location is pointing to a build generated file. |
| BUILD_GENERATED_FILE = 1; |
| // The file location is pointing to a project file. |
| PROJECT_FILE = 2; |
| } |
| |
| // The tool produced the error. |
| optional ErrorType error_shown_type = 1; |
| // Whether the file location was parsed and shown successfully. |
| optional bool file_location_included = 2; |
| // The included file type. |
| optional FileType file_included_type = 3; |
| // Whether the line location in file was parsed and shown successfully. |
| optional bool line_location_included = 4; |
| } |
| |
| // Statistics for what we show on the build output window. |
| message BuildOutputWindowStats { |
| repeated BuildErrorMessage build_error_messages = 1; |
| } |
| |
| // Statistics for Android Gradle Plugin DSL methods that are invoked in |
| // build scripts or by other Gradle plugins. |
| message GradlePluginDslUsageStats { |
| // A data point for each DSL method the user invokes. |
| repeated DslElementUse dsl_element_use = 1; |
| |
| // Statistics for an individual Android Gradle Plugin DSL method |
| message DslElementUse { |
| // The DSL method called in the build script or by another Gradle Plugin |
| // This is an enum in android git: |
| // tools/analytics-library/protos/src/main/proto/analytics_enums.proto |
| // DslElementType |
| optional int32 type = 1; |
| // The number of times this method is called within this multi-project build |
| optional int32 count = 2; |
| } |
| } |
| |
| // Information about how long DefaultActivityLocator blocked on getting |
| // a list of activities from the merged manifest. |
| message DefaultActivityLocatorStats { |
| // Whether getting information from the merged manifest blocked the UI thread. |
| optional bool blocks_ui_thread = 1; |
| // Whether we're leveraging an index to determine the module's activities. |
| optional bool index_based = 2; |
| // Whether DefaultActivityLocator used a potentially stale manifest (as |
| // opposed to blocking on a fresh view of the merged manifest). |
| optional bool used_potentially_stale_manifest = 3; |
| // How long it took us to obtain the list of activiteis |
| // from the merged manifest. |
| optional uint64 latency_ms = 4; |
| } |
| |
| // Details for motion layout editor events |
| message MotionLayoutEditorEvent { |
| // List of event types available in motion layout editor |
| enum MotionLayoutEditorEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| CREATE_CONSTRAINT = 1; |
| CREATE_TRANSITION = 2; |
| CREATE_ONCLICK = 3; |
| TOGGLE_LAYOUT = 4; |
| CREATE_KEY_POSITION = 5; |
| CREATE_KEY_ATTRIBUTES = 6; |
| CREATE_KEY_CYCLE = 7; |
| CREATE_KEY_TRIGGER = 8; |
| CREATE_KEY_TIME_CYCLE = 9; |
| CONVERT_TO_CONSTRAINT = 10; |
| CONVERT_TO_SECTIONED_CONSTRAINT = 11; |
| CLEAR_CONSTRAINT = 12; |
| SHOW_TIMELINE = 13; |
| SHOW_CONSTRAINTSET = 14; |
| SHOW_LAYOUT = 15; |
| CONSTRAINT_TABLE_SELECT = 16; |
| LAYOUT_TABLE_SELECT = 17; |
| TIMELINE_TABLE_SELECT = 18; |
| MOTION_PLAY = 19; |
| MOTION_SPEED = 20; |
| MOTION_PAUSE = 21; |
| MOTION_DIRETION_TOGGLE = 22; |
| } |
| |
| // Type of event |
| optional MotionLayoutEditorEventType type = 1; |
| } |
| |
| // Details for Validation Tool events |
| // Note: Validation Tool was called multi view or visualization tool. |
| message MultiViewEvent { |
| // List of event types available in Validation Tool |
| enum MultiViewEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| OPEN_PIXEL_DEVICES = 1; |
| OPEN_PROJECT_LOCALES = 2; |
| OPEN_CUSTOM_CONFIGURATION_SETS = 3; |
| OPEN_COLOR_BLIND_MODE = 4; |
| OPEN_LARGE_FONT = 5; |
| OPEN_LARGE_DISPLAY = 6; |
| // Select wear device category in Validation Tool |
| OPEN_WEAR_DEVICES = 7; |
| OPEN_REFERENCE_DEVICES = 8; |
| // Select custom category which is created by user. |
| OPEN_USER_DEFINED_CUSTOM_SETS = 9; |
| } |
| |
| // Mode of the editor associated to this Validation Tool |
| enum AssociatedSplitEditorMode { |
| UNKNOWN_MODE = 0; |
| TEXT_MODE = 1; |
| SPLIT_MODE = 2; |
| VISUAL_MODE = 3; |
| } |
| |
| enum ToggleIssuePanel { |
| UNKNOWN_OPERATION = 0; |
| // Open issue panel from Validation Tool |
| OPEN_ISSUE_PANEL = 1; |
| // Close issue panel from Validation Tool |
| CLOSE_ISSUE_PANEL = 2; |
| } |
| |
| // Type of event |
| optional MultiViewEventType type = 1; |
| // The mode of the editor to the Validation Tool window |
| optional AssociatedSplitEditorMode associated_split_editor_mode = 2; |
| // The event of opening or closing the issue panel in Validation Tool |
| optional ToggleIssuePanel toggle_issue_panel = 3; |
| } |
| |
| // Details for Compose animation tooling event |
| message ComposeAnimationToolingEvent { |
| enum ComposeAnimationToolingEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| OPEN_ANIMATION_INSPECTOR = 1; |
| CLOSE_ANIMATION_INSPECTOR = 2; |
| // Track when the animation inspector is available for Compose previews. |
| ANIMATION_INSPECTOR_AVAILABLE = 3; |
| TRIGGER_PLAY_ACTION = 4; |
| TRIGGER_PAUSE_ACTION = 5; |
| ENABLE_LOOP_ACTION = 6; |
| DISABLE_LOOP_ACTION = 7; |
| CHANGE_ANIMATION_SPEED = 8; |
| TRIGGER_JUMP_TO_START_ACTION = 9; |
| TRIGGER_JUMP_TO_END_ACTION = 10; |
| CHANGE_START_STATE = 11; |
| CHANGE_END_STATE = 12; |
| TRIGGER_SWAP_STATES_ACTION = 13; |
| CLICK_ANIMATION_INSPECTOR_TIMELINE = 14; |
| DRAG_ANIMATION_INSPECTOR_TIMELINE = 15; |
| EXPAND_ANIMATION_CARD = 16; |
| COLLAPSE_ANIMATION_CARD = 17; |
| OPEN_ANIMATION_IN_TAB = 18; |
| CLOSE_ANIMATION_TAB = 19; |
| LOCK_ANIMATION = 20; |
| UNLOCK_ANIMATION = 21; |
| RESET_TIMELINE = 22; |
| DRAG_TIMELINE_LINE = 23; |
| // Open the picker to change the state of the animation. |
| OPEN_PICKER = 24; |
| } |
| |
| // Type of event. |
| optional ComposeAnimationToolingEventType type = 1; |
| // Multiplier of the animation speed (e.g. 1.5x, 0.25x). |
| // Set when type is CHANGE_ANIMATION_SPEED. |
| optional float animation_speed_multiplier = 2; |
| } |
| |
| // Details for Compose MultiPreview event |
| message ComposeMultiPreviewEvent { |
| // One for each new or modified node in the MultiPreview graph, in terms of |
| // annotation relations, detected when the process of finding preview |
| // elements is executed in a file. |
| repeated ComposeMultiPreviewNodeInfo multi_preview_nodes = 1; |
| |
| // True if Compose Preview Lite Mode is enabled when logging the event. |
| optional bool is_compose_preview_lite_mode = 2; |
| |
| // Information about MultiPreview, in particular as information about a node |
| // in the directed graph formed by a Composable function, and its related |
| // Preview and MultiPreview annotations. |
| message ComposeMultiPreviewNodeInfo { |
| enum NodeType { |
| UNKNOWN_NODE_TYPE = 0; |
| ROOT_COMPOSABLE_FUNCTION_NODE = 1; |
| MULTIPREVIEW_NODE = 2; |
| PREVIEW_NODE = 3; |
| } |
| // Type of node in the MultiPreview graph. |
| optional NodeType node_type = 1; |
| // Anonymized id for the Composable node that is the root of this graph. |
| optional int64 anonymized_composable_id = 2; |
| // Number of direct childs which are Preview annotations. |
| optional int32 preview_childs_count = 3; |
| // Number of direct childs which are MultiPreview annotations. |
| optional int32 multi_preview_childs_count = 4; |
| // Number of nodes in the subtree rooted at this node and defined by the |
| // graph traversal, which are Preview annotations. |
| optional int32 subtree_previews_count = 5; |
| // Number of nodes in the subtree rooted at this node and defined by the |
| // graph traversal, which are MultiPreview annotations. |
| optional int32 subtree_multi_previews_count = 6; |
| // Number of nodes in the subtree rooted at this node and defined by the |
| // graph traversal, which are not important for MultiPreview. |
| optional int32 subtree_useless_nodes_count = 7; |
| // Length of the path traversed from the root Composable to this node. |
| optional int32 depth_level = 8; |
| } |
| } |
| |
| // Details for Compose Preview Lite Mode event |
| message ComposePreviewLiteModeEvent { |
| enum ComposePreviewLiteModeEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| // A file containing previews is opened and the preview(s) render. |
| OPEN_AND_RENDER = 1; |
| // Compose Preview Lite Mode was enabled/disabled. |
| PREVIEW_LITE_MODE_SWITCH = 2; |
| // Android Studio Essentials Mode was enabled/disabled. |
| STUDIO_ESSENTIALS_MODE_SWITCH = 3; |
| } |
| |
| // Type of event |
| optional ComposePreviewLiteModeEventType type = 1; |
| |
| // True if Compose Preview Lite Mode is enabled when logging the event. |
| // For switch events, the value is logged after the switch happens. |
| optional bool is_compose_preview_lite_mode = 2; |
| } |
| |
| // Details for Preview refresh event |
| message PreviewRefreshEvent { |
| // A type corresponding to a preview tool or context in which the refresh |
| // happened |
| enum PreviewType { |
| UNKNOWN_TYPE = 0; |
| COMPOSE = 1; |
| WEAR = 2; |
| GLANCE = 3; |
| CUSTOM_VIEW = 4; |
| } |
| // The result of the refresh process as a whole. Note that this is not |
| // directly tied to the RenderResult of each preview being refreshed |
| enum RefreshResult { |
| UNKNOWN_RESULT = 0; |
| SUCCESS = 1; |
| SKIPPED = 2; |
| USER_CANCELLED = 3; |
| AUTOMATICALLY_CANCELLED = 4; |
| FAILED = 5; |
| } |
| optional PreviewType type = 1; |
| optional RefreshResult result = 2; |
| // The in queue time corresponds to the time that a refresh request waits |
| // inside the queue of a RefreshManager before being processed or skipped |
| optional int32 in_queue_time_millis = 3; |
| // The refresh time starts when the refresh request is taken out of the |
| // queue and starts to be processed and ends when the refresh process |
| // finishes or gets cancelled. |
| optional int32 refresh_time_millis = 4; |
| // The total number of previews not filtered out by the flows and present |
| // in the panel at once |
| optional int32 previews_count = 5; |
| // The number of previews out of previews_count that this refresh should |
| // have refreshed |
| optional int32 previews_to_refresh = 6; |
| // Some information for each preview that was actually rendered |
| repeated SinglePreviewRender preview_renders = 7; |
| |
| message SinglePreviewRender { |
| enum RenderResult { |
| UNKNOWN_RESULT = 0; |
| SUCCESS = 1; |
| ERROR = 2; |
| } |
| optional RenderResult result = 1; |
| // True when the render also included executing the inflation step |
| optional bool inflate = 2; |
| // Quality value between 0 and 1 used for rendering |
| optional float render_quality = 3; |
| // Time taken by the render, including inflation time when corresponds |
| optional int32 render_time_millis = 4; |
| // Simple class name of the exception thrown in a render error, e.g. |
| // IllegalStateException or ClassNotFoundException |
| optional string render_exception_simple_name = 5; |
| } |
| } |
| |
| // Details for Compose deploy event |
| message ComposeDeployEvent { |
| enum ComposeDeployEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| DEPLOY_FROM_GUTTER = 1; |
| DEPLOY_FROM_TOOLBAR = 2; |
| } |
| |
| // Type of event. |
| optional ComposeDeployEventType type = 1; |
| } |
| |
| // Details for Compose sample event |
| message ComposeSampleEvent { |
| enum ComposeSampleEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| // Sample project is opened (package name matches) |
| OPEN = 1; |
| } |
| |
| // Type of event |
| optional ComposeSampleEventType type = 1; |
| } |
| |
| // Details for import sample event |
| message ImportSampleEvent { |
| // The ID of the sample imported. This is not user content, it will always be |
| // a string generated by us since we publish the samples to the GitHub |
| // repositories |
| optional string import_sample_id = 1; |
| } |
| |
| // The plugin identifier used in build attribution |
| message BuildAttributionPluginIdentifier { |
| enum PluginType { |
| UNKNOWN_TYPE = 0; |
| BUILD_SCRIPT = 1; |
| // Deprecated, use OTHER_PLUGIN instead |
| BINARY_PLUGIN = 2 [deprecated = true]; |
| BUILD_SRC = 3; |
| OTHER_PLUGIN = 4; |
| } |
| |
| // Either a binary plugin or a build script plugin |
| optional PluginType type = 1; |
| // The display name of the plugin, that is the string used in the build script |
| // when calling apply. ex: com.android.application, kotlin-android |
| // Should not be set in the case of a build script |
| optional string plugin_display_name = 2; |
| // The class name of the gradle plugin. |
| // ex: org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPluginWrapper |
| optional string plugin_class_name = 3; |
| } |
| |
| // The task identifier used in build attribution |
| message BuildAttribuitionTaskIdentifier { |
| // The class name of the task |
| // ex: MergeResources, JavaPreCompileTask |
| optional string task_class_name = 1; |
| // The plugin that registered this task |
| optional BuildAttributionPluginIdentifier origin_plugin = 2; |
| } |
| |
| // Data about tasks that always run |
| message AlwaysRunTasksAnalyzerData { |
| message AlwaysRunTask { |
| enum AlwaysRunReason { |
| UNKNOWN_REASON = 0; |
| NO_OUTPUTS_WITHOUT_ACTIONS = 1; |
| NO_OUTPUTS_WITH_ACTIONS = 2; |
| UP_TO_DATE_WHEN_FALSE = 3; |
| } |
| |
| // Reason the task is always running |
| optional AlwaysRunReason reason = 1; |
| // The origin plugin of the always running task |
| // Deprecated, use task_identifier instead |
| optional BuildAttributionPluginIdentifier plugin_identifier = 2 |
| [deprecated = true]; |
| // The always running task identifier |
| optional BuildAttribuitionTaskIdentifier task_identifier = 3; |
| } |
| |
| // The always running tasks detected by the analyzer |
| repeated AlwaysRunTask always_run_tasks = 1; |
| } |
| |
| // Data about non incremental annotation processors |
| message AnnotationProcessorsAnalyzerData { |
| message NonIncrementalAnnotationProcessor { |
| // The duration of applying the annotation processor |
| optional int64 compilation_duration_ms = 1; |
| // The class name of the annotation processor. |
| // ex: dagger.internal.codegen.ComponentProcessor, |
| // com.google.auto.value.processor.AutoValueProcessor |
| optional string annotation_processor_class_name = 2; |
| } |
| |
| // The non incremental annotation processors detected by the analyzer |
| repeated NonIncrementalAnnotationProcessor |
| non_incremental_annotation_processors = 1; |
| } |
| |
| // Data about the critical path of the build |
| message CriticalPathAnalyzerData { |
| message PluginBuildData { |
| // Sum of build duration of tasks on the critical path that this plugin |
| // created |
| optional int64 build_duration_ms = 1; |
| // The plugin identifier |
| optional BuildAttributionPluginIdentifier plugin_identifier = 2; |
| } |
| |
| // The total duration of the critical path |
| optional int64 critical_path_duration_ms = 1; |
| // The number of tasks on the critical path |
| optional int32 number_of_tasks_on_critical_path = 2; |
| // The critical path grouped by plugin contribution |
| repeated PluginBuildData plugins_critical_path = 3; |
| // The total duration of the tasks determining build duration |
| optional int64 tasks_determining_build_duration_ms = 4; |
| // The number of tasks determining build duration |
| optional int32 number_of_tasks_determining_build_duration = 5; |
| } |
| |
| // Data about project configuration phase |
| message ProjectConfigurationAnalyzerData { |
| // Configuration data for a plugin |
| message PluginConfigurationData { |
| // The time it took to configure the plugin |
| optional int64 plugin_configuration_time_ms = 1; |
| // The plugin identifier |
| optional BuildAttributionPluginIdentifier plugin_identifier = 2; |
| } |
| |
| message ConfigurationStep { |
| enum StepType { |
| UNKNOWN_STEP = 0; |
| NOTIFYING_BUILD_LISTENERS = 1; |
| RESOLVING_DEPENDENCIES = 2; |
| COMPILING_BUILD_SCRIPTS = 3; |
| EXECUTING_BUILD_SCRIPT_BLOCKS = 4; |
| OTHER = 5; |
| } |
| // The type of the configuration step |
| optional StepType type = 1; |
| // Configuration step duration |
| optional int64 configuration_time_ms = 2; |
| } |
| |
| // Configuration data for a subproject |
| message ProjectConfigurationData { |
| // The total configuration time for the subproject |
| optional int64 configuration_time_ms = 1; |
| // The plugin configuration data for the subproject |
| repeated PluginConfigurationData plugins_configuration_data = 2; |
| // Project configuration steps that are not plugins configuration |
| repeated ConfigurationStep configuration_steps = 3; |
| } |
| |
| // The configuration data for all subprojects configured during the build |
| repeated ProjectConfigurationData project_configuration_data = 1; |
| // The configuration data summed for all subproject configured during the |
| // build |
| optional ProjectConfigurationData overall_configuration_data = 2; |
| } |
| |
| // Data about misconfigured tasks |
| message TasksConfigurationIssuesAnalyzerData { |
| // Set of tasks that declare the same output |
| message TasksSharingOutputData { |
| // Plugins that created the tasks declaring the same output |
| // Deprecated, use tasks_sharing_output instead |
| repeated BuildAttributionPluginIdentifier |
| plugins_created_sharing_output_tasks = 1 [deprecated = true]; |
| // The tasks that are sharing the same output |
| repeated BuildAttribuitionTaskIdentifier tasks_sharing_output = 2; |
| } |
| |
| // The sets of tasks that declare the same output as detected by the analyzer |
| repeated TasksSharingOutputData tasks_sharing_output_data = 1; |
| } |
| |
| // Data about configuration cache compatibility |
| message ConfigurationCacheCompatibilityData { |
| enum CompatibilityState { |
| UNKNOWN_STATE = 0; |
| // Configuration cache property not set, AGP version is incompatible |
| AGP_NOT_COMPATIBLE = 1; |
| AGP_DOES_NOT_PROVIDE_PLUGINS_DATA = 2; |
| // CC property not set, some plugins detected as incompatible |
| INCOMPATIBLE_PLUGINS_DETECTED = 3; |
| // CC property not set, no plugins detected as incompatible |
| // but some unknown plugins or buildSrc code might be incompatible |
| INCOMPATIBLE_PLUGINS_NOT_DETECTED = 4; |
| // CC property set to true |
| CONFIGURATION_CACHE_TURNED_ON = 5; |
| CONFIGURATION_CACHE_TRIAL_FLOW_BUILD = 6; |
| // CC property set to false |
| CONFIGURATION_CACHE_TURNED_OFF = 7; |
| } |
| |
| optional CompatibilityState compatibility_state = 1; |
| // Non empty only if INCOMPATIBLE_PLUGINS_DETECTED state. |
| repeated BuildAttributionPluginIdentifier incompatible_plugins = 2; |
| } |
| |
| // Data about jetifier usage in the project |
| message JetifierUsageData { |
| enum JetifierUsageState { |
| UNKNOWN_STATE = 0; |
| JETIFIER_NOT_USED = 1; |
| // Jetifier is used in project |
| // but no existing checkJetifier task results found |
| JETIFIER_USED_CHECK_REQUIRED = 2; |
| JETIFIER_CAN_BE_REMOVED = 3; |
| JETIFIER_REQUIRED_FOR_LIBRARIES = 4; |
| } |
| optional JetifierUsageState jetifier_usage_state = 1; |
| // Size of the libraries list found by checkJetifier task |
| optional int32 number_of_libraries_require_jetifier = 2; |
| // True if this build had ran checkJetifier task |
| optional bool check_jetifier_task_build = 3; |
| } |
| |
| message BuildDownloadsAnalysisData { |
| message RepositoryStats { |
| enum RepositoryType { |
| UNKNOWN_REPOSITORY = 0; |
| GOOGLE = 1; |
| MAVEN_CENTRAL = 2; |
| JCENTER = 3; |
| OTHER_REPOSITORY = 4; |
| } |
| // Type of the repository, if it is one of the known ones. |
| optional RepositoryType repository_type = 1; |
| optional int32 success_requests_count = 2; |
| optional int64 success_requests_total_time_ms = 3; |
| optional int64 success_requests_total_bytes_downloaded = 4; |
| optional int32 failed_requests_count = 5; |
| optional int64 failed_requests_total_time_ms = 6; |
| optional int64 failed_requests_total_bytes_downloaded = 7; |
| // Missed request is when file was not found in the repository. |
| // These are not marked as failed but data downloaded is 0 bytes. |
| optional int32 missed_requests_count = 8; |
| optional int64 missed_requests_total_time_ms = 9; |
| } |
| |
| // Aggregated result per repository requested for file downloads. |
| repeated RepositoryStats repositories = 1; |
| } |
| |
| message TaskCategoryIssuesData { |
| enum TaskCategoryIssue { |
| UNKNOWN_ISSUE = 0; |
| NON_FINAL_RES_IDS_DISABLED = 1; |
| NON_TRANSITIVE_R_CLASS_DISABLED = 2; |
| RESOURCE_VALIDATION_ENABLED = 3; |
| MINIFICATION_ENABLED_IN_DEBUG_BUILD = 4; |
| } |
| |
| repeated TaskCategoryIssue reported_issues = 1 [packed = true]; |
| } |
| |
| // Data about build attribution analyzers |
| message BuildAttributionAnalyzersData { |
| // Total build time in microseconds |
| optional int64 total_build_time_ms = 1; |
| // Data from the always running tasks analyzer |
| optional AlwaysRunTasksAnalyzerData always_run_tasks_analyzer_data = 2; |
| // Data from the annotation processors analyzer |
| optional AnnotationProcessorsAnalyzerData |
| annotation_processors_analyzer_data = 3; |
| // Data from the critical path analyzer |
| optional CriticalPathAnalyzerData critical_path_analyzer_data = 4; |
| // Data from the project configuration analyzer |
| optional ProjectConfigurationAnalyzerData |
| project_configuration_analyzer_data = 5; |
| // Data from the tasks configuration issues analyzer |
| optional TasksConfigurationIssuesAnalyzerData |
| tasks_configuration_issues_analyzer_data = 6; |
| // Data from configuration caching compatibility analyzer |
| optional ConfigurationCacheCompatibilityData |
| configuration_cache_compatibility_data = 7; |
| // Data from jetifier usage analyzer |
| optional JetifierUsageData jetifier_usage_data = 8; |
| // Data from downloads analyzer |
| optional BuildDownloadsAnalysisData downloads_analysis_data = 9; |
| // Data from task category issues |
| optional TaskCategoryIssuesData task_category_issues_data = 10; |
| } |
| |
| // Data about build attribution performance |
| message BuildAttributionPerformanceStats { |
| // The duration it takes from when the build is finished, until all build |
| // attribution analyzers finish |
| optional int64 post_build_analysis_duration_ms = 1; |
| // The duration it takes to build the UI |
| optional int64 ui_creation_duration_ms = 2; |
| // The latency introduced by the tooling API events (the duration from |
| // when the build is finished until when the build finished event is received) |
| optional int64 tooling_api_build_finished_event_latency_ms = 3; |
| // The number of partial result files generated in AGP which corresponds to |
| // the number of build services created per the build, which corresponds to |
| // the number of classloaders. |
| optional int32 number_of_generated_partial_results = 4; |
| } |
| |
| // Stats about build attribution |
| message BuildAttributionStats { |
| enum BuildAnalysisStatus { |
| UNKNOWN_STATUS = 0; |
| // Build successful, analysis successful. |
| SUCCESS = 1; |
| // Build failed, no analysis done. |
| BUILD_FAILURE = 2; |
| // Build analyzer failed during events processing or post-processing. |
| ANALYSIS_FAILURE = 3; |
| } |
| enum BuildType { |
| UNKNOWN_BUILD_TYPE = 0; |
| REGULAR_BUILD = 1; |
| // Build triggered from Build Analyzer configuration cache warning page. |
| CONFIGURATION_CACHE_TRIAL_FLOW_BUILD = 2; |
| // Build triggered from Build Analyzer jetifier warning page. |
| CHECK_JETIFIER_BUILD = 3; |
| } |
| // Data from build attribution analyzers |
| optional BuildAttributionAnalyzersData build_attribution_analyzers_data = 1; |
| // Stats about the performance of build attribution |
| optional BuildAttributionPerformanceStats |
| build_attribution_performance_stats = 2; |
| // The session id is a UUID tracking a single build report generated |
| // to associate build attribution events together |
| optional string build_attribution_report_session_id = 3; |
| optional BuildAnalysisStatus build_analysis_status = 4; |
| optional BuildType build_type = 5; |
| } |
| |
| // Tracks user interaction with build attribution UI. |
| message BuildAttributionUiEvent { |
| enum EventType { |
| UNKNOWN_TYPE = 0; |
| // New build attribution tab created. |
| TAB_CREATED = 1; |
| // Tab was opened by the user. |
| TAB_OPENED_WITH_TAB_CLICK = 2; |
| TAB_OPENED_WITH_BUILD_OUTPUT_LINK = 3; |
| // User closed the tab completely. |
| TAB_CLOSED = 4; |
| // User switched to another tab (e.g. back to build or sync). |
| TAB_HIDDEN = 5; |
| // New content is shown in existing build attribution tab. |
| CONTENT_REPLACED = 6; |
| // User clicked 'more info' link on one of the report pages. |
| HELP_LINK_CLICKED = 7; |
| // User switched to another page of the report. |
| PAGE_CHANGE_TREE_CLICK = 8; |
| PAGE_CHANGE_TREE_KEYBOARD = 9; |
| PAGE_CHANGE_LINK_CLICK = 10; |
| // User clicked on issue report link. |
| GENERATE_REPORT_LINK_CLICKED = 11; |
| // User used copy button from report dialog. |
| REPORT_DIALOG_TEXT_COPY_CLICKED = 12; |
| // User closed report dialog. |
| REPORT_DIALOG_CLOSED = 13; |
| // Sent to mark the moment when current build info becomes inaccessible. |
| // It can be as a result of a new build or closing the project. |
| USAGE_SESSION_OVER = 14; |
| // Tab was opened using button in What's New Assistant. |
| TAB_OPENED_WITH_WNA_BUTTON = 15; |
| // View changed using data combo box. |
| DATA_VIEW_COMBO_SELECTED = 16; |
| // Data grouping changed using grouping control. |
| GROUPING_CHANGED = 17; |
| // Open memory settings button clicked. |
| OPEN_MEMORY_SETTINGS_BUTTON_CLICKED = 18; |
| // Applied filter state change on tasks or warnings page. |
| FILTER_APPLIED = 19; |
| CONFIGURE_GC_WARNING_SUSPEND_CLICKED = 20; |
| UPGRADE_AGP_BUTTON_CLICKED = 21; |
| RERUN_BUILD_WITH_CONFIGURATION_CACHE_CLICKED = 22; |
| TURN_ON_CONFIGURATION_CACHE_IN_PROPERTIES_LINK_CLICKED = 23; |
| // Update plugin button on configuration cache warnings. |
| UPDATE_PLUGIN_BUTTON_CLICKED = 24; |
| RUN_CHECK_JETIFIER_TASK_CLICKED = 25; |
| REMOVE_JETIFIER_PROPERTY_CLICKED = 26; |
| // Use of an action on jetifier warning page that searches for where |
| // the problematic library is defined in build files. |
| FIND_LIBRARY_DECLARATION_CLICKED = 27; |
| // Sent when tool window balloon is shown notifying about warnings. |
| TOOL_WINDOW_BALLOON_SHOWN = 28; |
| TOOL_WINDOW_BALLOON_DETAILS_LINK_CLICKED = 29; |
| TOOL_WINDOW_BALLOON_DONT_SHOW_AGAIN_LINK_CLICKED = 30; |
| MIGRATE_NON_TRANSITIVE_R_CLASS_ACTION_CLICKED = 31; |
| TAB_OPENED_WITH_ACTION = 32; |
| DEFENDER_WARNING_SUPPRESS_CLICKED = 33; |
| DEFENDER_WARNING_AUTO_EXCLUDE_SUCCESS = 34; |
| DEFENDER_WARNING_AUTO_EXCLUDE_FAILURE = 35; |
| DEFENDER_WARNING_SUPPRESS_GLOBALLY_CLICKED = 36; |
| DEFENDER_WARNING_MANUAL_INSTRUCTIONS_CLICKED = 37; |
| } |
| |
| message Page { |
| // All different page types shown in build attribution report. |
| enum PageType { |
| UNKNOWN_PAGE = 0; |
| BUILD_SUMMARY = 1; |
| CRITICAL_PATH_TASKS_ROOT = 2; |
| CRITICAL_PATH_TASK_PAGE = 3; |
| PLUGINS_ROOT = 4; |
| PLUGIN_PAGE = 5; |
| PLUGIN_CRITICAL_PATH_TASKS_ROOT = 6; |
| PLUGIN_CRITICAL_PATH_TASK_PAGE = 7; |
| PLUGIN_TASK_SETUP_ISSUE_ROOT = 8; |
| PLUGIN_TASK_SETUP_ISSUE_PAGE = 9; |
| PLUGIN_ALWAYS_RUN_ISSUE_ROOT = 10; |
| PLUGIN_ALWAYS_RUN_NO_OUTPUTS_PAGE = 11; |
| PLUGIN_ALWAYS_RUN_UP_TO_DATE_OVERRIDE_PAGE = 12; |
| TASK_SETUP_ISSUE_ROOT = 13; |
| TASK_SETUP_ISSUE_PAGE = 14; |
| ALWAYS_RUN_ISSUE_ROOT = 15; |
| ALWAYS_RUN_NO_OUTPUTS_PAGE = 16; |
| ALWAYS_RUN_UP_TO_DATE_OVERRIDE_PAGE = 17; |
| ANNOTATION_PROCESSORS_ROOT = 18; |
| ANNOTATION_PROCESSOR_PAGE = 19; |
| CONFIGURATION_TIME_ROOT = 20; |
| CONFIGURATION_TIME_PROJECT = 21; |
| CONFIGURATION_TIME_PLUGIN = 22; |
| // Plugin warnings page when grouped by plugin. |
| PLUGIN_WARNINGS_ROOT = 23; |
| WARNINGS_ROOT = 24; |
| // Task warnings page when grouped by plugin. |
| PLUGIN_TASK_WARNINGS = 25; |
| CONFIGURATION_CACHE_ROOT = 26; |
| CONFIGURATION_CACHE_PLUGIN_WARNING = 27; |
| JETIFIER_USAGE_WARNING = 28; |
| DOWNLOADS_INFO = 29; |
| // Group by Task Category page in critical path window. |
| TASK_CATEGORY_PAGE = 30; |
| // Single task category page. |
| TASK_CATEGORY_CRITICAL_PATH_TASKS_ROOT = 31; |
| // Task page in Group by Category page. |
| TASK_CATEGORY_CRITICAL_PATH_TASK_PAGE = 32; |
| // Task category warning on 'Warnings' page |
| TASK_CATEGORY_WARNING_ROOT = 33; |
| WINDOWS_DEFENDER_WARNING_PAGE = 34; |
| // Not a page inside Build Analyzer but a place containing user actions |
| // so can be used to distinguish those from the value above. |
| WINDOWS_DEFENDER_NOTIFICATION = 35; |
| } |
| // Type of current page. |
| optional PageType page_type = 1; |
| // Page number of this type in current report. |
| // Used to distinguish different pages of the same type in the same report. |
| // ex: 1, 2, 3, 4... |
| optional int32 page_entry_index = 2; |
| } |
| |
| // All external links used in the report. |
| enum OutgoingLinkTarget { |
| UNKNOWN_OUTGOING_LINK_TARGET = 0; |
| CRITICAL_PATH_HELP = 1; |
| DUPLICATE_OUTPUT_FOLDER_ISSUE_HELP = 2; |
| NO_OUTPUTS_DECLARED_ISSUE_HELP = 3; |
| UP_TO_DATE_EQUALS_FALSE_ISSUE_HELP = 4; |
| NON_INCREMENTAL_ANNOTATION_PROCESSORS_HELP = 5; |
| OPTIMIZE_CONFIGURATION_PHASE_HELP = 6; |
| CONFIGURE_GC = 7; |
| CONFIGURATION_CACHING = 8; |
| JETIFIER_MIGRATION = 9; |
| DOWNLOADS_INFO = 10; |
| RENDERSCRIPT_MIGRATE = 11; |
| AIDL_INFO = 12; |
| NON_TRANSITIVE_R_CLASS = 13; |
| WINDOWS_DEFENDER_INSTRUCTIONS = 14; |
| } |
| |
| // Filter consists of items that might be included or not. |
| // Current filter state is represented by items that are included (turned on). |
| // Next ID: 11 |
| enum FilterItem { |
| UNKNOWN_FILTER_ITEM = 0; |
| // Filters by task type. |
| SHOW_ANDROID_PLUGIN_TASKS = 1; |
| SHOW_THIRD_PARTY_TASKS = 2; |
| SHOW_PROJECT_CUSTOMIZATION_TASKS = 3; |
| // Filters by warning type. |
| SHOW_ALWAYS_RUN_TASK_WARNINGS = 4; |
| SHOW_TASK_SETUP_ISSUE_WARNINGS = 5; |
| SHOW_ANNOTATION_PROCESSOR_WARNINGS = 6; |
| SHOW_CONFIGURATION_CACHE_WARNINGS = 9; |
| SHOW_JETIFIER_USAGE_WARNINGS = 10; |
| // Other task attributes filters |
| SHOW_WARNINGS_FOR_TASK_NOT_FROM_CRITICAL_PATH = 7; |
| SHOW_TASKS_WITHOUT_WARNINGS = 8; |
| } |
| |
| // Type of this build attribution UI event. |
| optional EventType event_type = 1; |
| // What page was opened when this event happened. |
| optional Page current_page = 2; |
| // What page will be opened because of this event (if page changes). |
| optional Page target_page = 3; |
| // The session id is a UUID tracking a single build report generated |
| // to associate build attribution events together |
| optional string build_attribution_report_session_id = 4; |
| // Target of the external link clicked. Set when event type HELP_LINK_CLICKED. |
| optional OutgoingLinkTarget link_target = 5; |
| // List of filter items applied now, set when event type FILTER_APPLIED. |
| repeated FilterItem applied_filters = 6; |
| // How much time did it take to react on this user action. |
| optional int64 event_processing_time_ms = 7; |
| // Width of the Build Analyzer tool window in pixels. |
| optional int64 width = 8; |
| // Height of the Build Analyzer tool window in pixels. |
| optional int64 height = 9; |
| } |
| |
| message VsPluginEvent { |
| enum VsPluginEventType { |
| UNSPECIFIED_VS_PLUGIN_EVENT_TYPE = 0; |
| BUILD = 1; |
| DEBUG = 2; |
| } |
| |
| optional VsPluginEventType type = 1; |
| |
| optional BuildEvent build_event = 2; |
| optional DebugEvent debug_event = 3; |
| |
| message BuildEvent { |
| // A GUID for the build session, this session ID is per project and is |
| // intended to correlate build events for a particular project. |
| optional string build_session = 1; |
| optional string msbuild_version = 2; |
| |
| optional DeviceInfo.ApplicationBinaryInterface platform = 3; |
| optional string ndk_version = 4; |
| |
| optional bool is_debug_build = 5; |
| optional int64 duration_ms = 6; |
| optional bool is_using_incredibuild = 7; |
| |
| // The absolute path of the project on user's computer being built. This |
| // value is anonymized before uploaded with salt. |
| optional string msbuild_project_path = 12; |
| |
| optional BuildEventType type = 8; |
| |
| enum BuildEventType { |
| UNSPECIFIED_BUILD_EVENT_TYPE = 0; |
| BUILD_COMPLETE = 1; |
| COMPILE_COMPLETE = 2; |
| LINK_COMPLETE = 3; |
| GRADLE_COMPLETE = 4; |
| } |
| |
| optional BuildCompleteInfo build_complete_info = 9; |
| |
| // Information about building the whole project. This event is sent when the |
| // build completes. |
| message BuildCompleteInfo { |
| optional bool succeeded = 1; |
| optional int32 c_source_file_count = 3; |
| optional int32 cpp_source_file_count = 4; |
| } |
| |
| optional CompileCompleteInfo compile_complete_info = 10; |
| |
| // Information about compiling a batch of C/C++ files, e.g. one event per |
| // ClangCompile task run. |
| message CompileCompleteInfo { |
| // The language level of the majority of files. |
| optional LanguageLevel language_level = 1; |
| // The number of source files of this language level. |
| optional int32 source_file_count = 2; |
| |
| // All batches of various language level in this project. |
| repeated LanguageLevelBatch all_languge_levels = 3; |
| |
| message LanguageLevelBatch { |
| // The language level of this batch. |
| optional LanguageLevel language_level = 1; |
| // The number of source files in this batch. |
| optional int32 source_file_count = 2; |
| } |
| } |
| |
| optional LinkCompleteInfo link_complete_info = 11; |
| |
| // Information about linking. |
| message LinkCompleteInfo { |
| enum WellKnownLibraries { |
| UNSPECIFIED_WELL_KNOWN_LIBRARIES = 0; |
| ANGLE = 1; |
| BORINGSSL = 2; |
| CARTOGRAPHER = 3; |
| COCOS2D = 4; |
| DAYDREAM = 5; |
| FLATBUFFER = 6; |
| FREEGLUT = 7; |
| GAMESDK = 8; |
| GAUSSIANLIB = 9; |
| OGRE = 10; |
| OPENCV = 11; |
| OPENVR = 12; |
| OPEN_GL = 13; |
| OPEN_SSL = 14; |
| QT5 = 15; |
| SDL2 = 16; |
| SDL3 = 17; |
| SHADERC = 18; |
| SQLITE = 19; |
| UNITY = 20; |
| UNREAL = 21; |
| VULKAN = 22; |
| } |
| repeated WellKnownLibraries library_dependencies = 1; |
| } |
| |
| enum LanguageLevel { |
| UNSPECIFIED_LANGUAGE_LEVEL = 0; |
| C89 = 1; |
| GNU89 = 2; |
| CPP98 = 3; |
| GNUPP98 = 4; |
| C99 = 5; |
| GNU99 = 6; |
| C11 = 7; |
| GNU11 = 8; |
| CPP11 = 9; |
| GNUPP11 = 10; |
| CPP14 = 11; |
| GNUPP14 = 12; |
| C17 = 13; |
| GNU17 = 14; |
| CPP17 = 15; |
| GNUPP17 = 16; |
| CPP20 = 17; |
| GNUPP20 = 18; |
| } |
| |
| optional NativeBuildBackend native_build_backend = 13; |
| |
| enum NativeBuildBackend { |
| UNSPECIFIED_NATIVE_BUILD_BACKEND = 0; |
| ORIGINAL_MSBUILD = 1; |
| MULTITOOLTASK_MSBUILD = 2; |
| NINJA = 3; |
| } |
| |
| // TODO: try adding gradle info like the app_id. |
| } |
| |
| message DebugEvent { |
| // A GUID for the debug session |
| optional string session = 1; |
| |
| // The numerical version of Visual Studio, For example, 15.9. |
| optional string vs_version = 2; |
| |
| optional DeviceInfo.ApplicationBinaryInterface platform = 3; |
| |
| optional bool is_using_emulator = 4; |
| |
| optional bool is_debug_build = 5; |
| |
| // Time that it takes each debugging event to complete. For example, if the |
| // type is `START_WITHOUT_DEBUGGING`, this duration is how long it takes |
| // Visual Studio to send the intent to launch the main activity after build |
| // finishes. |
| optional int64 duration_ms = 6; |
| |
| optional DebugEventType type = 7; |
| |
| enum DebugEventType { |
| UNSPECIFIED_DEBUG_EVENT_TYPE = 0; |
| START_WITHOUT_DEBUGGING = 1; |
| START_WITH_DEBUGGING = 2; |
| // User cancels debugging/launching before app starts running or device is |
| // attached. |
| CANCEL = 3; |
| DEVICE_ATTACHED = 4; |
| ADD_BREAKPOINT = 5; |
| REMOVE_BREAKPOINT = 6; |
| HIT_BREAKPOINT = 7; |
| STEP_OVER = 8; |
| STEP_INTO = 9; |
| STEP_OUT = 10; |
| SUSPEND = 11; |
| STOP = 12; |
| CONTINUE = 13; |
| EXECUTE_COMMAND = 14; |
| } |
| } |
| } |
| |
| message AppInspectionEvent { |
| enum Type { |
| UNKNOWN_EVENT_TYPE = 0; |
| |
| // This is a wrapped event fired by an inspector. One of the inspector |
| // fields below should be set |
| INSPECTOR_EVENT = 1; |
| |
| ERROR_OCCURRED = 2; |
| |
| TOOL_WINDOW_OPENED = 3; |
| TOOL_WINDOW_HIDDEN = 4; |
| |
| PROCESS_SELECTED = 5; |
| |
| // To distinguish between user-initiated stops vs. crash-initiated stops, |
| // compare with |ERROR_OCCURRED| counts. |
| INSPECTION_STOPPED = 6; |
| // Inspection restarted after a crash |
| INSPECTION_RESTARTED = 7; |
| } |
| |
| enum ErrorKind { |
| UNKNOWN_ERROR_KIND = 0; |
| INSPECTOR_CRASHED = 1; |
| APP_DISCONNECTED = 2; |
| } |
| |
| message EnvironmentMetadata { |
| optional uint32 num_processes = 1; |
| optional uint32 num_devices = 2; |
| } |
| |
| // The detailed type of this event |
| optional Type type = 1; |
| |
| // Set if |type| is |INSPECTOR_EVENT| |
| oneof inspector_event { |
| // Event associated with the user interacting with the database inspector |
| DatabaseInspectorEvent database_inspector_event = 2; |
| // Event associated with the user interacting with the WorkManager inspector |
| WorkManagerInspectorEvent work_manager_inspector_event = 3; |
| // Event associated with the user interacting with the Network inspector |
| NetworkInspectorEvent network_inspector_event = 4; |
| // Event associated with the user interacting with background task inspector |
| BackgroundTaskInspectorEvent background_task_inspector_event = 5; |
| } |
| |
| // Set if |type| is |ERROR_OCCURRED| |
| optional ErrorKind error_kind = 101; |
| |
| // Set if |type| is |TOOL_WINDOW_OPENED|, |PROCESS_SELECTED| |
| optional EnvironmentMetadata environment_metadata = 102; |
| |
| // App inspection fields above this point |
| // Inspector definitions below this point |
| |
| message DatabaseInspectorEvent { |
| enum Type { |
| UNKNOWN_EVENT_TYPE = 0; |
| |
| ERROR_OCCURRED = 1; |
| |
| // A user modified a cell in a table |
| TABLE_CELL_EDITED = 2; |
| // A user manually requested refreshing some (potentially stale) data |
| TARGET_REFRESHED = 3; |
| |
| STATEMENT_EXECUTED = 4; |
| STATEMENT_EXECUTION_CANCELED = 5; |
| |
| LIVE_UPDATES_TOGGLED = 8; |
| |
| OFFLINE_MODE_ENTERED = 9; |
| ENTER_OFFLINE_MODE_USER_CANCELED = 10; |
| OFFLINE_DATABASE_DOWNLOAD_FAILED = 11; |
| |
| EXPORT_DIALOG_OPENED = 12; |
| EXPORT_OPERATION_COMPLETED = 13; |
| } |
| |
| enum ErrorKind { |
| UNKNOWN_ERROR_KIND = 0; |
| IS_RECOVERABLE_TRUE = 1; |
| IS_RECOVERABLE_FALSE = 2; |
| IS_RECOVERABLE_UNKNOWN = 3; |
| } |
| |
| enum TargetType { |
| UNKNOWN_TARGET_TYPE = 0; |
| SCHEMA_TARGET = 1; |
| TABLE_TARGET = 2; |
| } |
| |
| enum StatementContext { |
| UNKNOWN_STATEMENT_CONTEXT = 0; |
| SCHEMA_STATEMENT_CONTEXT = 1; |
| GUTTER_STATEMENT_CONTEXT = 2; |
| USER_DEFINED_STATEMENT_CONTEXT = 3; |
| } |
| |
| enum ConnectivityState { |
| UNKNOWN_CONNECTIVITY_STATE = 0; |
| CONNECTIVITY_ONLINE = 1; |
| CONNECTIVITY_OFFLINE = 2; |
| } |
| |
| // Information relevant when we switch to offline mode |
| message OfflineModeMetadata { |
| // How long it takes to download database data from the device |
| optional int32 total_download_time_ms = 1; |
| // How many bytes of database data were downloaded |
| optional int64 total_download_size_bytes = 2; |
| } |
| |
| // Information related to the opening of an "export data" dialog |
| message ExportDialogOpenedEvent { |
| enum Origin { |
| UNKNOWN_ORIGIN = 0; |
| SCHEMA_TREE_CONTEXT_MENU = 1; |
| SCHEMA_TREE_EXPORT_BUTTON = 2; |
| QUERY_RESULTS_EXPORT_BUTTON = 3; |
| TABLE_CONTENTS_EXPORT_BUTTON = 4; |
| } |
| // What context kicked off the opening of the export dialog? |
| optional Origin origin = 1; |
| } |
| |
| // Information about an export that successfully completed. |
| message ExportOperationCompletedEvent { |
| enum Source { |
| UNKNOWN_SOURCE = 0; |
| DATABASE_SOURCE = 1; |
| TABLE_SOURCE = 2; |
| QUERY_SOURCE = 3; |
| } |
| |
| enum SourceFormat { |
| UNKNOWN_SOURCE_FORMAT = 0; |
| FILE_FORMAT = 1; |
| IN_MEMORY_FORMAT = 2; |
| } |
| |
| enum Destination { |
| UNKNOWN_DESTINATION = 0; |
| DB_DESTINATION = 1; |
| SQL_DESTINATION = 2; |
| CSV_DESTINATION = 3; |
| } |
| |
| enum Outcome { |
| UNKNOWN_OUTCOME = 0; |
| SUCCESS_OUTCOME = 1; |
| CANCELLED_BY_USER_OUTCOME = 2; |
| // Export operation was cancelled due to entering/leaving offline mode. |
| CANCELLED_BY_OFFLINE_MODE_CHANGE_OUTCOME = 3; |
| // Cancelled due to normal flow, e.g. Studio shutting down. |
| CANCELLED_OTHER_OUTCOME = 4; |
| // Genuine error while performing an export operation. |
| ERROR_OUTCOME = 5; |
| } |
| |
| // What kind of data was being exported |
| optional Source source = 1; |
| // What is the format of the source data |
| optional SourceFormat source_format = 2; |
| // What file type was the data exported as |
| optional Destination destination = 3; |
| // How long did the export take in milliseconds? |
| optional int32 export_duration_ms = 4; |
| // Was the operation successful? If not, how did it fail? |
| optional Outcome outcome = 5; |
| } |
| |
| // The detailed type of this event |
| optional Type type = 1; |
| |
| // Set if |type| is |ERROR_OCCURRED| |
| optional ErrorKind error_kind = 2; |
| |
| // Set if |type| is |TARGET_REFRESHED| |
| optional TargetType target_type = 3; |
| |
| // Set if |type| is |STATEMENT_EXECUTED|, |STATEMENT_EXECUTION_CANCELED| |
| optional StatementContext statement_context = 4; |
| |
| // Set if |type| is |LIVE_UPDATING_TOGGLED| |
| optional bool live_updating_enabled = 5; |
| |
| // Set if |type| is |STATEMENT_EXECUTED|, |STATEMENT_EXECUTION_CANCELED|, |
| // |EXPORT_OPERATION_COMPLETED| |
| optional ConnectivityState connectivity_state = 6; |
| |
| // Set if |type| is |OFFLINE_MODE_ENTERED| |
| optional OfflineModeMetadata offline_mode_metadata = 7; |
| |
| // Set if |type| is |EXPORT_DIALOG_OPENED| |
| optional ExportDialogOpenedEvent export_dialog_opened_event = 8; |
| |
| // Set if |type| is |EXPORT_OPERATION_COMPLETED| |
| optional ExportOperationCompletedEvent export_completed_event = 9; |
| } |
| |
| // Deprecated. Use BackgroundTaskInspectorEvent instead. |
| // Event associated with the user interacting with the WorkManager inspector |
| message WorkManagerInspectorEvent { |
| // The detailed type of this event |
| enum Type { |
| UNKNOWN_EVENT_TYPE = 0; |
| |
| // Global events |
| |
| // Fired when the user requests viewing data in table form |
| TABLE_MODE_SELECTED = 1; |
| // Fired when the user requests viewing data in graph form |
| GRAPH_MODE_SELECTED = 2; |
| |
| // Worker-centric events |
| |
| // Fired when a worker is actively selected by the user |
| WORK_SELECTED = 101; |
| |
| // Fired when the user clicks on a link that jumps into code |
| JUMPED_TO_SOURCE = 102; |
| |
| // Fired when the user requests stopping a running worker |
| WORK_CANCELED = 103; |
| } |
| |
| // UI context associated with the current event |
| enum Context { |
| UNKNOWN_CONTEXT = 0; |
| |
| // The current event is related to the table view |
| TABLE_CONTEXT = 1; |
| |
| // The current event is related to the graph view |
| GRAPH_CONTEXT = 2; |
| |
| // The current event is related to the details panel |
| DETAILS_CONTEXT = 3; |
| |
| // The current event is related to the tool buttons bar |
| TOOL_BUTTON_CONTEXT = 4; |
| } |
| |
| // Active UI layout when the current event was sent |
| enum Mode { |
| UNKNOWN_MODE = 0; |
| |
| // The table view is currently active |
| TABLE_MODE = 1; |
| |
| // The graph view is currently active |
| GRAPH_MODE = 2; |
| } |
| |
| // Information about the chain of workers a worker is part of |
| message ChainInfo { |
| // The total number of all workers in this work chain |
| optional int32 worker_count = 1; |
| // The total number of all connections between workers |
| optional int32 dependency_count = 2; |
| // The longest chain of parents / children |
| optional int32 max_depth = 3; |
| // The widest chain of siblings |
| optional int32 max_width = 4; |
| } |
| |
| // The detailed type of this event |
| optional Type type = 1; |
| // UI context associated with the current event |
| optional Context context = 2; |
| // Active UI layout when the current event was sent |
| optional Mode mode = 3; |
| |
| // Set if event indicates we're going to update the graph view, i.e. |
| // |type| is |GRAPH_MODE_SELECTED|, |
| // |type| is |WORK_SELECTED| when |mode| is |GRAPH_MODE| |
| optional ChainInfo chain_info = 4; |
| } |
| |
| // Events associated with users interacting with the network inspector |
| message NetworkInspectorEvent { |
| enum Type { |
| UNKNOWN_EVENT_TYPE = 0; |
| |
| // User clicks on the migration prompt in profilers |
| MIGRATION_LINK_SELECTED = 1; |
| |
| // User selects a connection to bring up the details panel |
| CONNECTION_DETAIL_SELECTED = 2; |
| |
| // Connection details panel |
| // User selects the request tab |
| REQUEST_TAB_SELECTED = 3; |
| // User selects the response tab |
| RESPONSE_TAB_SELECTED = 4; |
| // User selects the callstack tab |
| CALLSTACK_TAB_SELECTED = 5; |
| |
| // User creates a new rule |
| RULE_CREATED = 6; |
| // User edits the rule details panel |
| RULE_UPDATED = 7; |
| // A network response is intercepted |
| RESPONSE_INTERCEPTED = 8; |
| } |
| |
| message RuleUpdatedEvent { |
| enum Component { |
| UNKNOWN_COMPONENT = 0; |
| URL_PROTOCOL = 1; |
| URL_HOST = 2; |
| URL_PORT = 3; |
| URL_PATH = 4; |
| URL_QUERY = 5; |
| FIND_CODE = 6; |
| FIND_REPLACE_CODE = 7; |
| ADD_HEADER = 8; |
| FIND_REPLACE_HEADER = 9; |
| FIND_REPLACE_BODY = 10; |
| REPLACE_BODY = 11; |
| } |
| optional Component component = 1; |
| } |
| |
| message ResponseInterceptedEvent { |
| optional bool status_code = 1; |
| optional bool header_added = 2; |
| optional bool header_replaced = 3; |
| optional bool body_replaced = 4; |
| optional bool body_modified = 5; |
| } |
| |
| optional Type type = 1; |
| optional RuleUpdatedEvent rule_detail_updated = 2; |
| optional ResponseInterceptedEvent response_intercepted = 3; |
| } |
| |
| // Events associated with users interacting with the background task inspector |
| message BackgroundTaskInspectorEvent { |
| enum Type { |
| UNKNOWN_EVENT_TYPE = 0; |
| |
| // General events |
| // User clicks on the migration prompt in profilers |
| MIGRATION_LINK_SELECTED = 1; |
| // Fired when the user requests viewing data in table form |
| TABLE_MODE_SELECTED = 2; |
| // Fired when the user requests viewing data in graph form |
| GRAPH_MODE_SELECTED = 3; |
| // Fired when the user clicks on a link that jumps into code |
| JUMPED_TO_SOURCE = 4; |
| |
| // Entry selection events |
| // Clicks on a standalone job |
| JOB_SELECTED = 101; |
| // Clicks on a job associated with a work |
| JOB_UNDER_WORK_SELECTED = 102; |
| // Clicks on an alarm |
| ALARM_SELECTED = 103; |
| // Clicks on a standalone wake lock |
| WAKE_LOCK_SELECTED = 104; |
| // Clicks on a wake lock associated with a job |
| WAKE_LOCK_UNDER_JOB_SELECTED = 105; |
| // Fired when a worker is actively selected by the user |
| WORK_SELECTED = 106; |
| |
| // Work events |
| // Fired when the user requests stopping a running worker |
| WORK_CANCELED = 201; |
| } |
| |
| // UI context associated with the current event |
| enum Context { |
| UNKNOWN_CONTEXT = 0; |
| |
| // The current event is related to the table view |
| TABLE_CONTEXT = 1; |
| |
| // The current event is related to the graph view |
| GRAPH_CONTEXT = 2; |
| |
| // The current event is related to the details panel |
| DETAILS_CONTEXT = 3; |
| |
| // The current event is related to the tool buttons bar |
| TOOL_BUTTON_CONTEXT = 4; |
| } |
| |
| // Active UI layout when the current event was sent |
| enum Mode { |
| UNKNOWN_MODE = 0; |
| |
| // The table view is currently active |
| TABLE_MODE = 1; |
| |
| // The graph view is currently active |
| GRAPH_MODE = 2; |
| } |
| |
| // Information about the chain of workers a worker is part of |
| message ChainInfo { |
| // The total number of all workers in this work chain |
| optional int32 worker_count = 1; |
| // The total number of all connections between workers |
| optional int32 dependency_count = 2; |
| // The longest chain of parents / children |
| optional int32 max_depth = 3; |
| // The widest chain of siblings |
| optional int32 max_width = 4; |
| } |
| |
| // The detailed type of this event |
| optional Type type = 1; |
| // UI context associated with the current event |
| optional Context context = 2; |
| // Active UI layout when the current event was sent |
| optional Mode mode = 3; |
| |
| // Set if event indicates we're going to update the graph view, i.e. |
| // |type| is |GRAPH_MODE_SELECTED|, |
| // |type| is |WORK_SELECTED| when |mode| is |GRAPH_MODE| |
| optional ChainInfo chain_info = 4; |
| } |
| } |
| |
| message AvdLaunchEvent { |
| // Describes how the AVD was launched. Always present. |
| optional LaunchType launch_type = 1; |
| |
| // The class of the launched AVD. Always present. |
| optional AvdClass avd_class = 2; |
| |
| enum LaunchType { |
| UNKNOWN_LAUNCH_TYPE = 0; |
| STANDALONE = 1; |
| IN_TOOL_WINDOW = 2; |
| } |
| |
| enum AvdClass { |
| UNKNOWN_AVD_CLASS = 0; |
| GENERIC = 1; |
| FOLDABLE = 2; |
| TV = 3; |
| AUTOMOTIVE = 4; |
| WEARABLE = 5; |
| } |
| } |
| |
| // Tracks user interaction with tooling support for Dagger |
| message DaggerEditorEvent { |
| enum Type { |
| UNKNOWN_EVENT_TYPE = 0; |
| NAVIGATED = 1; |
| OPENED_LINK_FROM_ERROR = 2; |
| FIND_USAGES_NODE_WAS_DISPLAYED = 3; |
| CLICKED_ON_GUTTER = 4; |
| GUTTER_WAS_DISPLAYED = 5; |
| } |
| |
| enum ElementType { |
| UNKNOWN_ELEMENT_TYPE = 0; |
| PROVIDER = 1; |
| CONSUMER = 2; |
| COMPONENT = 3; |
| SUBCOMPONENT = 4; |
| MODULE = 5; |
| ENTRY_POINT = 6; |
| COMPONENT_METHOD = 7; |
| ENTRY_POINT_METHOD = 8; |
| ASSISTED_INJECTED_CONSTRUCTOR = 9; |
| ASSISTED_FACTORY_METHOD = 10; |
| } |
| |
| // Detailed description of naviganion event |
| message NavigationMetadata { |
| enum NavigationContext { |
| UNKNOWN_CONTEXT = 0; |
| CONTEXT_GUTTER = 1; |
| CONTEXT_USAGES = 2; |
| } |
| |
| // Context from which a navigation was called |
| optional NavigationContext context = 1; |
| // ElementType that is source of navigation |
| optional ElementType from_element = 2; |
| // ElementType that is target of navigation |
| optional ElementType to_element = 3; |
| } |
| |
| // The detailed type of this event |
| optional Type type = 1; |
| |
| // Set if |type| is |NAVIGATED| |
| optional NavigationMetadata navigation_metadata = 2; |
| |
| // Set if |type| is |FIND_USAGES_NODE_WAS_DISPLAYED|, |CLICKED_ON_GUTTER|, |
| // |GUTTER_WAS_DISPLAYED| |
| optional ElementType owner_element_type = 3; |
| |
| // Set if |type| is |FIND_USAGES_NODE_WAS_DISPLAYED|, |GUTTER_WAS_DISPLAYED| |
| optional int64 calculation_time_ms = 4; |
| |
| // Indicates whether built-in (true) or custom Dagger (false) annotation |
| // search is in use. |
| optional bool using_built_in_annotation_search = 5; |
| } |
| |
| // Track Android Test Retention events. |
| message AndroidTestRetentionEvent { |
| // Compatibility check result related to one retention snapshot. |
| message SnapshotCompatibility { |
| enum Result { |
| UNKNOWN_FAILURE = 0; |
| LOADABLE = 1; |
| SNAPSHOT_FILE_NOT_FOUND = 2; |
| EMULATOR_EXEC_NOT_FOUND = 3; |
| SNAPSHOT_PROTO_FILE_NOT_FOUND = 4; |
| EMULATOR_LOADABLE_CHECK_FAILURE = 5; |
| } |
| // Compatibility check result. |
| optional Result result = 1; |
| // More detailed failure reason returned by the emulator. Only set when |
| // result=EMULATOR_LOADABLE_CHECK_FAILURE. |
| optional EmulatorSnapshotFailureReason emulator_check_failure_reason = 2; |
| } |
| optional SnapshotCompatibility snapshot_compatibility = 1; |
| } |
| |
| // Tracks UI impressions and user interactions in the test report UI. |
| message ParallelAndroidTestReportUiEvent { |
| // IDs to identify UI element. |
| enum UiElement { |
| UNKNOWN_UI_ELEMENT = 0; |
| TEST_SUITE_VIEW = 1; |
| TEST_SUITE_VIEW_TABLE_ROW = 2; |
| TEST_SUITE_DETAILS_HORIZONTAL_VIEW = 3; |
| TEST_SUITE_DETAILS_VERTICAL_VIEW = 4; |
| TEST_SUITE_LOG_VIEW = 5; |
| TEST_SUITE_DEVICE_INFO_VIEW = 6; |
| TEST_SUITE_OPT_IN_BANNER = 7; |
| TEST_SUITE_RETENTION_VIEW = 8; |
| |
| // A dialog that is displayed after you click on run button |
| // to promote Android instrumentation test execution using |
| // Gradle from Android Studio. b/190209774. |
| GRADLE_ANDROID_TEST_RUNNER_OPT_IN_DIALOG = 9; |
| } |
| |
| // All IDs of UI element that are displayed to users. |
| repeated UiElement impressions = 1; |
| |
| // Tracks details information of a user interaction. |
| message UserInteraction { |
| // Represents type of a user interaction. |
| enum UserInteractionType { |
| UNKNOWN_UI_INTERACTION = 0; |
| CLICK = 1; |
| } |
| optional UserInteractionType type = 1; |
| // The UI element ID of which this user interaction occurred. |
| optional UiElement ui_element = 2; |
| |
| // Represents result type of a user interaction. |
| enum UserInteractionResultType { |
| UNKNOWN_UI_INTERACTION_RESULT = 0; |
| ACCEPT = 1; |
| DISMISS = 2; |
| } |
| optional UserInteractionResultType result = 3; |
| } |
| |
| // All interactions occurred. |
| repeated UserInteraction interactions = 2; |
| } |
| |
| message ApplyChangesAgentError { |
| enum AgentPurpose { |
| UNKNOWN_PURPOSE = 0; |
| STARTUP_AGENT = 1; |
| APPLY_CHANGES = 2; |
| APPLY_CODE_CHANGES = 3; |
| } |
| |
| // Framework & runtime classes that the Apply Changes agent may instrument. |
| enum TargetClass { |
| UNKNOWN_TARGET_CLASS = 0; |
| ACTIVITY_THREAD = 1; |
| DEX_PATH_LIST_ELEMENT = 2; |
| DEX_PATH_LIST = 3; |
| RESOURCES_MANAGER = 4; |
| THREAD = 5; |
| } |
| |
| // When the last agent was attached, measured on the device's steady clock. |
| optional int64 agent_attach_time_ms = 1; |
| |
| // How many times the AC agent has attached to this VM. |
| optional int32 agent_attach_count = 2; |
| |
| // When this crash occurred, measured on the device's steady clock. |
| optional int64 event_time_ms = 3; |
| |
| // The operation that caused the most recent agent to attach. |
| optional AgentPurpose agent_purpose = 4; |
| |
| // If the failure was related to an instrumentation failure, this contains |
| // a list of classes that could not be instrumented. |
| repeated TargetClass target_classes = 5; |
| } |
| |
| // Record of a single variant API use. Each variant API used will be recorded |
| // and can either be a Variant API method call, a VariantProperties API method |
| // call or an access to the Gradle public artifacts. |
| message VariantApiUsage { |
| // this represents a method call on the Variant interface and sub types. |
| repeated VariantAccess variant_access = 1; |
| |
| // this represents a method call on the VariantProperties interface and sub |
| // types. |
| repeated VariantPropertiesAccess variant_properties_access = 2; |
| |
| // this represents an access to any of the public artifact type we make |
| // available through the [Artifacts] interface. Access can be reading (GET) or |
| // producing (CREATE, APPEND, ...). |
| repeated ArtifactAccess artifact_access = 3; |
| } |
| |
| // Record of a single public artifact access through the public variant API. |
| message ArtifactAccess { |
| // Identification of the type of artifact access. |
| optional AccessType type = 1; |
| |
| // The artifact type used as an input (read). |
| // This is an enum in android git: |
| // tools/analytics-library/protos/src/main/proto/analytics_enums.proto |
| // will only be set when type == TRANSFORM_MANY |
| optional int32 input_artifact_type = 2; |
| |
| // The artifact type used as an output. |
| // This is an enum in android git: |
| // tools/analytics-library/protos/src/main/proto/analytics_enums.proto |
| optional int32 output_artifact_type = 3; |
| |
| enum AccessType { |
| UNKNOWN_ACCESS_TYPE = 0; |
| GET = 1; |
| GET_ALL = 2; |
| CREATE = 3; |
| APPEND = 4; |
| TRANSFORM = 5; |
| TRANSFORM_MANY = 6; |
| } |
| } |
| |
| // Record of a single Variant API method call. |
| message VariantAccess { |
| // The method enum value that was used. |
| // This is the VariantMethodType enum in android git: |
| // tools/analytics-library/protos/src/main/proto/analytics_enums.proto |
| optional int32 type = 1; |
| } |
| |
| // Record of a single VariantProperties API method call. |
| message VariantPropertiesAccess { |
| // The method enum value that was used. |
| // This is the VariantPropertiesMethodType enum in android git: |
| // tools/analytics-library/protos/src/main/proto/analytics_enums.proto |
| optional int32 type = 1; |
| } |
| |
| message UpgradeAssistantComponentInfo { |
| enum UpgradeAssistantComponentKind { |
| UNKNOWN_ASSISTANT_COMPONENT_KIND = 0; |
| AGP_CLASSPATH_DEPENDENCY = 1; |
| GMAVEN_REPOSITORY = 2; |
| GRADLE_VERSION = 3; |
| JAVA8_DEFAULT = 4; |
| COMPILE_RUNTIME_CONFIGURATION = 5; |
| FABRIC_CRASHLYTICS = 6; |
| MIGRATE_TO_BUILD_FEATURES = 7; |
| REMOVE_SOURCE_SET_JNI = 8; |
| MIGRATE_TO_ANDROID_RESOURCES = 9; |
| REMOVE_BUILD_TYPE_USE_PROGUARD = 10; |
| REMOVE_IMPLEMENTATION_PROPERTIES = 11; |
| GRADLE_PLUGINS = 12; |
| MIGRATE_TO_INSTALLATION = 13; |
| MIGRATE_TO_EMULATOR_SNAPSHOTS = 14; |
| MIGRATE_TO_TEST_COVERAGE = 15; |
| MIGRATE_PACKAGING_OPTIONS = 16; |
| MIGRATE_TO_LINT = 17; |
| REWRITE_DEPRECATED_OPERATORS = 18; |
| REDUNDANT_PROPERTIES = 19; |
| ANDROID_MANIFEST_PACKAGE = 20; |
| R8_FULL_MODE_DEFAULT = 21; |
| RENDER_SCRIPT_DEFAULT = 22; |
| NON_TRANSITIVE_R_CLASS_DEFAULT = 23; |
| AIDL_DEFAULT = 24; |
| BUILD_CONFIG_DEFAULT = 25; |
| PROJECT_JDK = 26; |
| NON_CONSTANT_R_CLASS_DEFAULT = 27; |
| ANDROID_MANIFEST_EXTRACT_NATIVE_LIBS = 28; |
| ANDROID_MANIFEST_USE_EMBEDDED_DEX = 29; |
| SHADERS_DEFAULT = 30; |
| MIGRATE_TEST_COVERAGE_ENABLED = 31; |
| } |
| |
| message Java8DefaultProcessorSettings { |
| enum NoLanguageLevelAction { |
| UNKNOWN_NO_LANGUAGE_LEVEL_ACTION = 0; |
| ACCEPT_NEW_DEFAULT = 1; |
| INSERT_OLD_DEFAULT = 2; |
| } |
| optional NoLanguageLevelAction no_language_level_action = 1; |
| } |
| |
| message R8FullModeDefaultProcessorSettings { |
| enum NoPropertyPresentAction { |
| UNKNOWN_NO_PROPERTY_PRESENT_ACTION = 0; |
| ACCEPT_NEW_DEFAULT = 1; |
| INSERT_OLD_DEFAULT = 2; |
| } |
| optional NoPropertyPresentAction no_property_present_action = 1; |
| } |
| |
| // The kind of processor. |
| optional UpgradeAssistantComponentKind kind = 1; |
| // Whether the processor is enabled. |
| optional bool is_enabled = 2; |
| // Settings of the processor. Will be set if kind is |
| // JAVA8_DEFAULT. |
| optional Java8DefaultProcessorSettings java8_default_settings = 3; |
| // Settings of the processor. Will be set if kind is |
| // R8_FULL_MODE_DEFAULT. |
| optional R8FullModeDefaultProcessorSettings r8_full_mode_default_settings = 4; |
| } |
| |
| message UpgradeAssistantEventInfo { |
| enum UpgradeAssistantEventKind { |
| UNKNOWN_UPGRADE_ASSISTANT_EVENT_KIND = 0; |
| FIND_USAGES = 1; |
| PREVIEW_REFACTORING = 2; |
| EXECUTE = 3; |
| FAILURE_PREDICTED = 4; |
| SYNC_SKIPPED = 5; |
| SYNC_FAILED = 6; |
| SYNC_SUCCEEDED = 7; |
| INTERNAL_ERROR = 8; |
| BLOCKED = 9; |
| } |
| |
| // The kind of event. |
| optional UpgradeAssistantEventKind kind = 1; |
| // The number of usages. Will be set if kind is FIND_USAGES, |
| // PREVIEW_REFACTORING, EXECUTE, SYNC_SKIPPED, SYNC_FAILED, or |
| // SYNC_SUCCEEDED. |
| optional int32 usages = 2; |
| // The number of files involved in the build. Will be set if |
| // kind is FIND_USAGES, PREVIEW_REFACTORING, EXECUTE, |
| // SYNC_SKIPPED, SYNC_FAILED, or SYNC_SUCCEEDED. |
| optional int32 files = 3; |
| } |
| |
| message UpgradeAssistantComponentEvent { |
| // The uuid for a session of the upgrade assistant. |
| optional string upgrade_uuid = 1; |
| // The software version of AGP used by the project. |
| optional string current_agp_version = 2; |
| // The software version of AGP after upgrade. |
| optional string new_agp_version = 3; |
| // The software version of Gradle used by the project. |
| optional string current_gradle_version = 4; |
| // The software version of Gradle after upgrade. |
| optional string new_gradle_version = 5; |
| // Information about the component involved in the event. |
| optional UpgradeAssistantComponentInfo component_info = 6; |
| // Information about the event. |
| optional UpgradeAssistantEventInfo event_info = 7; |
| } |
| |
| message UpgradeAssistantProcessorEvent { |
| // The uuid for a session of the upgrade assistant. |
| optional string upgrade_uuid = 1; |
| // The software version of AGP used by the project. |
| optional string current_agp_version = 2; |
| // The software version of AGP after upgrade. |
| optional string new_agp_version = 3; |
| // The software version of Gradle used by the project. |
| optional string current_gradle_version = 4; |
| // The software version of Gradle after upgrade. |
| optional string new_gradle_version = 5; |
| // Information about the components involved in the event. |
| repeated UpgradeAssistantComponentInfo component_info = 6; |
| // Information about the event. |
| optional UpgradeAssistantEventInfo event_info = 7; |
| } |
| |
| // Details for interactive preview event |
| message InteractivePreviewEvent { |
| // List of event types available in an interactive preview |
| enum InteractivePreviewEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| REPORT_FPS = 1; |
| REPORT_STARTUP_TIME = 2; |
| } |
| |
| // Type of event |
| optional InteractivePreviewEventType type = 1; |
| // Frame rate (frames per second) in the interactive preview session |
| optional int32 fps = 2; |
| // Interactive session duration in milliseconds |
| optional int32 duration_ms = 3; |
| // Number of user actions during the interactive session |
| optional int32 actions = 4; |
| // Startup time of the interactive session in milliseconds |
| optional int32 startup_time_ms = 5; |
| // Number of the previews on the surface the preview for this interactive |
| // session belongs to |
| optional int32 peer_previews = 6; |
| } |
| |
| // A user's response to a survey |
| message SurveyResponse { |
| // Name of the survey |
| // This is one of a set of string constants set by Google, |
| // i.e. "analytics/surveys/satisfaction" |
| optional string name = 1; |
| // One or more responses selected by the user |
| repeated int32 responses = 2; |
| } |
| |
| // Record of a registered transform |
| message AsmClassesTransformRegistration { |
| // List of scopes available for transforming |
| enum Scope { |
| UNKNOWN_SCOPE = 0; |
| PROJECT = 1; |
| ALL = 2; |
| } |
| |
| // Name of the factory class supplied in registration. |
| // Example: FireperfClassVisitorFactory |
| optional string class_visitor_factory_class_name = 1; |
| |
| // Scope of the classes to be transformed |
| optional Scope scope = 2; |
| } |
| |
| // An action to set the asm frames computation mode for the asm classes |
| // transforms |
| message AsmFramesComputationModeUpdate { |
| // List of frames computation modes |
| enum Mode { |
| UNKNOWN_MODE = 0; |
| COPY_FRAMES = 1; |
| COMPUTE_FRAMES_FOR_INSTRUMENTED_METHODS = 2; |
| COMPUTE_FRAMES_FOR_INSTRUMENTED_CLASSES = 3; |
| COMPUTE_FRAMES_FOR_ALL_CLASSES = 4; |
| } |
| |
| // The requested frames computation mode |
| optional Mode mode = 1; |
| } |
| |
| // Deprecated, use SuggestedImportEvent instead. |
| // Tracks user interaction with auto-import support. |
| message AutoImportEvent { |
| option deprecated = true; |
| |
| // GMaven coordinate, which is generated by Google(not user data). |
| optional string artifact_id = 1; |
| } |
| |
| // Data collected by IntelliJ's FileTypeUsageCounterCollector regarding files |
| message FileUsage { |
| enum EventType { |
| UNKNOWN_TYPE = 0; |
| SELECT = 1; |
| EDIT = 2; |
| OPEN = 3; |
| CLOSE = 4; |
| } |
| |
| // Anonymized guid representing file path |
| optional string file_path = 1; |
| // Type of file, i.e. kotlin, java |
| optional string file_type = 2; |
| // Plugin type |
| optional string plugin_type = 3; |
| // Plugin version |
| optional string plugin_version = 4; |
| // Event type |
| optional EventType event_type = 5; |
| } |
| |
| // Details for live literal events |
| message LiveLiteralsEvent { |
| enum LiveLiteralsEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| |
| // User manually enabled live literals |
| USER_ENABLE = 1; |
| // User manually disabled live literals |
| USER_DISABLE = 2; |
| |
| // Device with live literals started |
| START = 3; |
| // Device with live literals stopped |
| STOP = 4; |
| // Aggregated live literals deployment stats |
| DEPLOY_STATS = 5; |
| } |
| |
| // Describes the type of device used for LiveLiterals |
| enum LiveLiteralsDeviceType { |
| UNKNOWN_DEVICE_TYPE = 0; |
| |
| PHYSICAL = 1; |
| EMULATOR = 2; |
| PREVIEW = 3; |
| } |
| |
| // Type of event |
| optional LiveLiteralsEventType event_type = 1; |
| // Device type for [START, STOP] events |
| optional LiveLiteralsDeviceType device_type = 2; |
| // Deployment stats per device type |
| repeated LiveLiteralsDeployStats deploy_stats = 3; |
| |
| // Details for live literals deploy stats |
| message LiveLiteralsDeployStats { |
| // The device type for these aggregated stats. |
| optional LiveLiteralsDeviceType device_type = 1; |
| // Devices of this type. |
| optional uint32 devices_count = 2; |
| // Number of successful deployments. |
| optional uint32 successful_deployments = 3; |
| // Number of failed deployments. |
| optional uint32 failed_deployments = 4; |
| // Stats for number of reported deployment problems. |
| optional PercentileEstimator number_of_problems = 5; |
| // Stats for deployment type. |
| optional PercentileEstimator deployment_time_ms = 6; |
| } |
| } |
| |
| // Data collected when running Migrate to Non-Transitive R class action. |
| message NonTransitiveRClassMigrationEvent { |
| // The uuid for a session of the migration. |
| optional string migration_uuid = 1; |
| |
| enum NonTransitiveRClassMigrationEventKind { |
| UNKNOWN_MIGRATION_EVENT_KIND = 0; |
| FIND_USAGES = 1; |
| PREVIEW_REFACTORING = 2; |
| EXECUTE = 3; |
| SYNC_SKIPPED = 4; |
| SYNC_FAILED = 5; |
| SYNC_SUCCEEDED = 6; |
| } |
| |
| // The kind of event. |
| optional NonTransitiveRClassMigrationEventKind kind = 2; |
| |
| // The number of usages. Will be set if kind is FIND_USAGES, |
| // PREVIEW_REFACTORING or EXECUTE. |
| optional int32 usages = 3; |
| } |
| |
| // Tracks user interaction with suggested import support. |
| message SuggestedImportEvent { |
| // GMaven coordinate, which is generated by Google(not user data). |
| // E.g. androidx.recyclerview:recyclerview |
| optional string artifact_id = 1; |
| } |
| |
| // Data collected by IntelliJ's RefreshProgress |
| message VfsRefresh { |
| // Duration of the VFS refresh in milliseconds |
| optional uint64 duration_ms = 1; |
| } |
| |
| // Tracks user interactions with signing wizard |
| message SigningWizardEvent { |
| enum SigningWizardFailureCause { |
| FAILURE_CAUSE_UNKNOWN = 0; |
| FAILURE_CAUSE_NO_MODULE_FACET = 1; |
| FAILURE_CAUSE_NO_MODULE_ROOT_PATH = 2; |
| FAILURE_CAUSE_NO_ANDROID_MODEL = 3; |
| FAILURE_CAUSE_NO_VARIANTS_SELECTED = 4; |
| FAILURE_CAUSE_ENCRYPTION_ERROR = 5; |
| FAILURE_CAUSE_COMPILE_ABORTED = 6; |
| FAILURE_CAUSE_COMPILE_ERRORS = 7; |
| FAILURE_CAUSE_CANNOT_CREATE_APK = 8; |
| FAILURE_CAUSE_ZIP_ALIGN_ERROR = 9; |
| } |
| |
| enum SigningTargetType { |
| TARGET_TYPE_UNKNOWN = 0; |
| TARGET_TYPE_APK = 1; |
| TARGET_TYPE_BUNDLE = 2; |
| } |
| |
| // Specify cause when signing fails |
| optional SigningWizardFailureCause failure_cause = 1; |
| |
| // Details when building and signing a Gradle project |
| optional SigningTargetType target_type = 2; |
| // Number of modules in project |
| optional uint32 number_of_modules = 3; |
| // Number of variants selected for signing |
| optional uint32 number_of_variants = 4; |
| // Private key is stored? |
| optional bool is_private_key_exported = 5; |
| } |
| |
| // File type information for a project |
| message FileType { |
| // Type of file, i.e. kotlin, java, xml |
| optional string file_type = 1; |
| // Plugin type, i.e. platform |
| optional string plugin_type = 2; |
| // Number of files of this type in the project |
| optional uint32 number_of_files = 3; |
| } |
| |
| // Kotlin project configuration information logged by IntelliJ |
| message KotlinProjectConfiguration { |
| enum EventType { |
| TYPE_UNKNOWN = 0; |
| BUILD = 1; |
| } |
| |
| // Build system, i.e. Gradle |
| optional string system = 1; |
| // plugin version |
| optional string plugin_version = 2; |
| // plugin name, i.e. org.jetbrains.kotlin |
| optional string plugin = 3; |
| // plugin type, i.e. JB_BUNDLED |
| optional string plugin_type = 4; |
| // platform, i.e. jvm |
| optional string platform = 5; |
| // indicates whether this a kotlin multiplatform programming project |
| optional bool is_multiplatform = 6; |
| // indicates the type of the configuration event (i.e. build) |
| optional EventType event_type = 7; |
| // bitfield for future flags added by kotlin plugin |
| optional uint64 event_flags = 8; |
| } |
| |
| // Data collected by IntelliJ when a run is started |
| message RunStartData { |
| // Unique id for activity. This number is generated sequentially |
| // and exists only across the lifetime of the process. |
| optional int32 ide_activity_id = 1; |
| // Type of launch performed, i.e. Run, Debug, etc. |
| optional string executor = 2; |
| // Type of run configuration, i.e. AndroidRunConfigurationType |
| optional string run_configuration = 3; |
| } |
| |
| // Data collected by IntelliJ when a run is finished |
| message RunFinishData { |
| // duration of the run in ms |
| optional int64 duration_ms = 1; |
| // Unique id for activity |
| optional int32 ide_activity = 2; |
| } |
| |
| // Event related to the device manager tool window, the replacement for the AVD |
| // manager |
| message DeviceManagerEvent { |
| // The kind of DeviceManagerEvent |
| optional EventKind kind = 1; |
| |
| // The count of devices under the Virtual tab. Set when kind = |
| // VIRTUAL_DEVICE_COUNT. |
| optional int32 virtual_device_count = 2; |
| |
| // The kind of DeviceManagerEvent |
| enum EventKind { |
| // Default kind |
| UNSPECIFIED = 0; |
| |
| // The count of devices under the Virtual tab |
| VIRTUAL_DEVICE_COUNT = 1; |
| |
| // The Launch action under the Virtual tab was clicked |
| VIRTUAL_LAUNCH_ACTION = 2; |
| |
| // The Device file explorer action under the Virtual tab was clicked |
| VIRTUAL_DEVICE_FILE_EXPLORER_ACTION = 3; |
| |
| // The Edit action under the Virtual tab was clicked |
| VIRTUAL_EDIT_ACTION = 4; |
| |
| // The Pair device action under the Virtual tab was clicked |
| VIRTUAL_PAIR_DEVICE_ACTION = 5; |
| |
| // The Duplicate action under the Virtual tab was clicked |
| VIRTUAL_DUPLICATE_ACTION = 6; |
| |
| // The Wipe data action under the Virtual tab was clicked |
| VIRTUAL_WIPE_DATA_ACTION = 7; |
| |
| // The Cold boot now action under the Virtual tab was clicked |
| VIRTUAL_COLD_BOOT_NOW_ACTION = 8; |
| |
| // The Show on disk action under the Virtual tab was clicked |
| VIRTUAL_SHOW_ON_DISK_ACTION = 9; |
| |
| // The Delete action under the Virtual tab was clicked |
| VIRTUAL_DELETE_ACTION = 10; |
| |
| // The Stop action under the Virtual tab was clicked |
| VIRTUAL_STOP_ACTION = 11; |
| |
| // The Device file explorer action under the Physical tab was clicked |
| PHYSICAL_DEVICE_FILE_EXPLORER_ACTION = 12; |
| |
| // The Pair device action under the Physical tab was clicked |
| PHYSICAL_PAIR_DEVICE_ACTION = 13; |
| |
| // The Delete action under the Physical tab was clicked |
| PHYSICAL_DELETE_ACTION = 14; |
| |
| // The Unpair device action under the Virtual tab was clicked |
| VIRTUAL_UNPAIR_DEVICE_ACTION = 15; |
| |
| // The Unpair device action under the Physical tab was clicked |
| PHYSICAL_UNPAIR_DEVICE_ACTION = 16; |
| } |
| } |
| |
| // Event related to Wear OS emulator pairing assistant |
| message WearPairingEvent { |
| // The kind of WearPairingEvent |
| optional EventKind kind = 1; |
| |
| // The kind of WearPairingEvent |
| enum EventKind { |
| // Default kind |
| UNSPECIFIED = 0; |
| |
| // Assistant was launched with no pre-selected device (ie two columns) |
| SHOW_ASSISTANT_FULL_SELECTION = 1; |
| |
| // Assistant was launched with a pre-selected device (ie single column) |
| SHOW_ASSISTANT_PRE_SELECTION = 2; |
| |
| // "Successful Pairing" screen is displayed |
| SHOW_SUCCESSFUL_PAIRING = 3; |
| |
| // "Install Wear OS Companion" screen is displayed |
| SHOW_INSTALL_WEAR_OS_COMPANION = 4; |
| |
| // Devices lost connection and then automatically reconnected |
| AUTOMATIC_RECONNECT = 5; |
| } |
| } |
| |
| // Event related to Wear Health Services Tool Window |
| message WearHealthServicesEvent { |
| // The kind of Wear Health Services event |
| optional EventKind kind = 1; |
| |
| // Definition for the kind of Wear Health Services event |
| enum EventKind { |
| // Default |
| UNSPECIFIED = 0; |
| |
| // WHS tool was bound to the emulator |
| EMULATOR_BOUND = 1; |
| |
| // WHS tool had a connection error |
| CONNECTION_ERROR = 2; |
| |
| // WHS tool successfully applied changes |
| APPLY_CHANGES_SUCCESS = 3; |
| |
| // WHS tool failed to apply changes |
| APPLY_CHANGES_FAILURE = 4; |
| } |
| } |
| |
| // Event for UiSettingsPanel in the Running Devices Tool Window |
| message UiDeviceSettingsEvent { |
| // The kind of UiSettingsPanel operation |
| optional OperationKind operation = 1; |
| |
| enum OperationKind { |
| // Default |
| UNSPECIFIED = 0; |
| |
| // Dark Theme or night mode was changed |
| DARK_THEME = 1; |
| |
| // App Language was changed |
| APP_LANGUAGE = 2; |
| |
| // TalkBack was turned on or off |
| TALKBACK = 3; |
| |
| // Select to Speak was turned on or off |
| SELECT_TO_SPEAK = 4; |
| |
| // Font Size was changed |
| FONT_SIZE = 5; |
| |
| // Screen Density was changed |
| SCREEN_DENSITY = 6; |
| |
| // Reset all UI settings to factory default values |
| RESET = 7; |
| |
| // Gesture Navigation was changed |
| GESTURE_NAVIGATION = 8; |
| |
| // Debug Layout was changed |
| DEBUG_LAYOUT = 9; |
| } |
| } |
| |
| message GradleJdkInvalidEvent { |
| // Reason to consider JDK as invalid |
| optional InvalidJdkReason reason = 1; |
| |
| // List of invalid JDK reasons |
| enum InvalidJdkReason { |
| // Default (not specified) |
| INVALID_JDK_UNSPECIFIED_REASON = 0; |
| // JDK is not specified (Neither gradleJvm nor project-jdk-name are defined) |
| INVALID_JDK_UNDEFINED_JDK = 1; |
| // gradleJvm is set to #USE_PROJECT_JDK but project-jdk-name is not defined |
| INVALID_JDK_PROJECT_JDK_UNDEFINED = 2; |
| // gradleJvm set to #USE_JAVA_HOME but JAVA_HOME is not a valid path |
| INVALID_JDK_JAVA_HOME_INVALID = 3; |
| // gradleJvm set to #USE_INTERNAL_JAVA but SystemProperties.javaHome is not |
| // a valid JDK |
| INVALID_JDK_INTERNAL_JAVA_INVALID = 4; |
| // A JDK name is defined but the JDK table does not have it |
| INVALID_JDK_NAME_NOT_IN_TABLE = 5; |
| // JDK can be found in the JDK table but the home path is not defined on it |
| INVALID_JDK_HOME_PATH_NOT_DEFINED = 6; |
| // There is no bin/javac in the JDK path |
| INVALID_JDK_NO_JAVAC = 7; |
| // Some required files are missing from the JDK path |
| INVALID_JDK_MISSING_FILES = 8; |
| // The java.home isn't defined in the project .gradle/config.properties |
| UNDEFINED_GRADLE_LOCAL_JAVA_HOME = 9; |
| // The java.home defined in the project .gradle/config.properties is invalid |
| INVALID_GRADLE_LOCAL_JAVA_HOME = 10; |
| // The org.gradle.java.home isn't defined in the gradle.properties |
| UNDEFINED_GRADLE_PROPERTIES_JAVA_HOME = 11; |
| // The org.gradle.java.home defined in the gradle.properties is invalid |
| INVALID_GRADLE_PROPERTIES_JAVA_HOME = 12; |
| // The system environment variable JAVA_HOME isn't defined |
| UNDEFINED_ENVIRONMENT_VARIABLE_JAVA_HOME = 13; |
| // The system environment variable JAVA_HOME is invalid |
| INVALID_ENVIRONMENT_VARIABLE_JAVA_HOME = 14; |
| // The system environment variable STUDIO_GRADLE_JDK isn't defined |
| UNDEFINED_ENVIRONMENT_VARIABLE_STUDIO_GRADLE_JDK = 15; |
| // The system environment variable STUDIO_GRADLE_JDK is invalid |
| INVALID_ENVIRONMENT_VARIABLE_STUDIO_GRADLE_JDK = 16; |
| // The studio config jdk.table.xml doesn't contain gradleJvm table entry |
| UNDEFINED_GRADLE_JVM_TABLE_ENTRY = 17; |
| // The studio config jdk.table.xml contains gradleJvm table entry with |
| // undefined javaHome path |
| UNDEFINED_GRADLE_JVM_TABLE_ENTRY_JAVA_HOME = 18; |
| // The studio config jdk.table.xml contains gradleJvm table entry with |
| // invalid javaHome path |
| INVALID_GRADLE_JVM_TABLE_ENTRY_JAVA_HOME = 19; |
| // Unsupported gradleJvm #GRADLE_LOCAL_JAVA_HOME macro to configure JDK |
| UNSUPPORTED_GRADLE_LOCAL_JAVA_HOME_MACRO = 20; |
| } |
| } |
| |
| message GradleJdkConfigurationEvent { |
| // Gradle JDK configuration defined for the project |
| optional GradleJdkConfiguration configuration = 1; |
| |
| // List of supported Gradle JDK configurations |
| enum GradleJdkConfiguration { |
| // Undefined Gradle JDK configuration |
| UNDEFINED_JDK_CONFIGURATION = 0; |
| // Use #JAVA_INTERNAL macro pointing to the studio embedded JDK |
| JAVA_INTERNAL = 1; |
| // Use #JAVA_HOME macro pointing to defined java home environment variable |
| JAVA_HOME = 2; |
| // Use #GRADLE_JAVA_HOME from org.gradle.java.home property value defined on |
| // gradle.properties file under GRADLE_USER_HOME, project or installation |
| GRADLE_JAVA_HOME = 3; |
| // Use #GRADLE_LOCAL_JAVA_HOME macro pointing to java.home property value |
| // defined on project ./gradle/config.properties file |
| GRADLE_LOCAL_JAVA_HOME = 4; |
| // Use STUDIO_GRADLE_JDK custom naming pointing to the environment variable |
| STUDIO_GRADLE_JDK = 5; |
| // Use jdk.table.xml entry defined under studio configuration directory |
| JDK_TABLE_ENTRY = 6; |
| } |
| } |
| |
| message DeviceExplorerEvent { |
| optional Action action = 1; |
| |
| // Number of files (Only valid for transfer actions) |
| optional int32 transfer_file_count = 2; |
| |
| // Total size in bytes (Only valid for transfer actions) |
| optional int32 transfer_total_size = 3; |
| |
| // Total time in ms (Only valid for transfer actions) |
| optional int32 transfer_time_ms = 4; |
| |
| enum Action { |
| // Default |
| UNSPECIFIED = 0; |
| // The user changed the device in the dropdown. |
| DEVICE_CHANGE = 1; |
| // The user created a new file |
| NEW_FILE = 2; |
| // The user created a new directory |
| NEW_DIRECTORY = 3; |
| // The user downloaded a file using "save as" |
| SAVE_AS = 4; |
| // The user uploaded a file using "upload..." |
| UPLOAD = 5; |
| // The user uploaded a file using drag and drop |
| DROP = 6; |
| // The user deleted a path |
| DELETE = 7; |
| // The user resync'ed a path |
| SYNC = 8; |
| // The user copied a path |
| COPY_PATH = 9; |
| // The user expanded a data/data/* directory |
| EXPAND_APP_DATA = 10; |
| // The user force stopped a process |
| FORCE_STOP = 11; |
| // The user killed a process |
| KILL = 12; |
| // The user attached the debugger to a process |
| ATTACH_DEBUGGER = 13; |
| // The user refreshed the process list |
| REFRESH_PROCESSES = 14; |
| // The user toggled application ID filtering |
| APPLICATION_ID_FILTER_TOGGLED = 15; |
| // The user clicked on the files tab |
| FILES_TAB_CLICKED = 16; |
| // The user clicked on the process tab |
| PROCESS_TAB_CLICKED = 17; |
| // The user toggled on application ID filtering |
| APPLICATION_ID_FILTER_TOGGLED_ON = 18; |
| // The user toggled off application ID filtering |
| APPLICATION_ID_FILTER_TOGGLED_OFF = 19; |
| } |
| } |
| |
| // Event raised when user opts in to metrics |
| message OptInToMetrics {} |
| |
| // Event raised when user opts out of metrics |
| message OptOutOfMetrics {} |
| |
| // Event related to detection of Version Catalog use in a project |
| message GradleVersionCatalogDetectorEvent { |
| // The state of Version Catalog use as detected |
| optional State state = 1; |
| |
| enum State { |
| // Default state |
| UNKNOWN_GRADLE_VERSION_CATALOG_DETECTOR_STATE = 0; |
| // The build system does not support Version Catalogs |
| UNSUPPORTED = 1; |
| // The project does not use Version Catalogs |
| NONE = 2; |
| // There is explicit configuration or use of Version Catalogs in |
| // the project configuration files |
| EXPLICIT = 3; |
| // There is implicit use of Version Catalogs in the project |
| // without explicit mention in configuration files |
| IMPLICIT = 4; |
| } |
| } |
| |
| // Events raised by user interactions with the coroutine debugger |
| message CoroutineDebuggerEvent { |
| enum Type { |
| // Default |
| UNKNOWN_EVENT_TYPE = 0; |
| // Studio tried to launch the coroutine debugger |
| LAUNCH_EVENT = 1; |
| } |
| |
| optional Type type = 1; |
| |
| // can be set if event type is LAUNCH_EVENT |
| // the user can enable or disable the coroutine debugger from studio settings |
| optional bool disabled_in_settings = 2; |
| } |
| |
| // Events raised by user interactions with Splitting Tabs tool windows |
| message SplittingTabsUsageEvent { |
| // The type of Splitting Tabs tool window |
| optional ToolWindowType tool_window_type = 1; |
| |
| // The event type |
| optional EventType event_type = 2; |
| |
| // Set if type is PANEL_SPLIT |
| optional SplitType split_type = 3; |
| |
| // The tool window subsystem using the Splitting Tabs component |
| enum ToolWindowType { |
| // Default |
| UNKNOWN_TOOL_WINDOW_TYPE = 0; |
| // A Logcat tool window. |
| LOGCAT_TOOL_WINDOW = 1; |
| } |
| |
| // The type of event |
| enum EventType { |
| // Default |
| UNKNOWN_EVENT_TYPE = 0; |
| // A panel is created. |
| PANEL_CREATED = 1; |
| // A tab is created. |
| TAB_CREATED = 2; |
| // A panel is split. |
| PANEL_SPLIT = 3; |
| // A panel is moved. |
| PANEL_MOVED = 4; |
| // A panel is renamed. |
| PANEL_RENAMED = 5; |
| // A panel is closed. |
| PANEL_CLOSED = 6; |
| } |
| |
| // Details of a Split event. Set if event_type is a PANEL_SPLIT |
| message SplitType { |
| // The orientation of the split |
| optional Orientation orientation = 1; |
| // The UI component the Split event was initiated from |
| optional Source source = 2; |
| |
| // The orientation of the Split |
| enum Orientation { |
| // Default |
| UNKNOWN_ORIENTATION = 0; |
| // Horizontal orientation |
| HORIZONTAL = 1; |
| // Vertical orientation |
| VERTICAL = 2; |
| } |
| |
| // The source of the event |
| enum Source { |
| // Default |
| UNKNOWN_SOURCE = 0; |
| // The split action in the Tab header |
| TAB = 1; |
| // The aplit action in the panel context menu |
| PANEL = 2; |
| } |
| } |
| } |
| |
| // Events raised by user interactions with Logcat tool windows |
| message LogcatUsageEvent { |
| // The event type |
| optional Type type = 1; |
| |
| // Historical, no longer used for writing as of 02/2022 |
| optional LogcatFormatConfiguration format_dialog = 2 [deprecated = true]; |
| |
| // A logcat filter. Set when type is FILTER_ADDED_TO_HISTORY. |
| optional LogcatFilterEvent logcat_filter = 3; |
| |
| // The Logcat format configuration set by the format dialog |
| optional LogcatFormatDialog format_dialog_applied = 4; |
| |
| // A Logcat panel was added |
| optional LogcatPanelEvent panel_added = 5; |
| |
| // The type of event |
| enum Type { |
| // Default |
| UNKNOWN_EVENT_TYPE = 0; |
| |
| // Format Dialog Applied |
| FORMAT_DIALOG = 1; |
| |
| // We don't want to log filters on every keystroke so we only log when a |
| // filter is added to history which is much less frequent. |
| FILTER_ADDED_TO_HISTORY = 2; |
| |
| // A Logcat panel was added |
| PANEL_ADDED = 3; |
| } |
| |
| // The state of a Logcat format dialog when applied |
| message LogcatFormatDialog { |
| // The Logcat format configuration the dialog represents |
| optional LogcatFormatConfiguration configuration = 1; |
| |
| // The state of the "set as default" checkbox |
| optional bool is_default_preset = 2; |
| |
| // True if the "Apply" button was used as opposed to "OK" |
| optional bool is_apply_button_used = 3; |
| } |
| |
| // The state of a Logcat Format Dialog |
| message LogcatFormatConfiguration { |
| // Show timestamp field |
| optional bool is_show_timestamp = 1; |
| |
| // Timestamp format includes the date |
| optional bool is_show_date = 2; |
| |
| // Show the process id field |
| optional bool is_show_process_id = 3; |
| |
| // Show the thread id field |
| optional bool is_show_thread_id = 4; |
| |
| // Show the tag field |
| optional bool is_show_tags = 5; |
| |
| // Show repeated tags |
| optional bool is_show_repeated_tags = 6; |
| |
| // The width of the tag field |
| optional int32 tag_width = 7; |
| |
| // Show the package field |
| optional bool is_show_packages = 8; |
| |
| // Show repeated packages |
| optional bool is_show_repeated_packages = 9; |
| |
| // The width of the package field |
| optional int32 package_width = 10; |
| |
| // The preset configuration if applicable |
| optional Preset preset = 11; |
| |
| // Historical, no longer used for writing as of 02/2022 |
| optional bool is_default_preset = 12 [deprecated = true]; |
| |
| // Historical, no longer used for writing as of 02/2022 |
| optional bool is_apply_button_used = 13 [deprecated = true]; |
| |
| // Logcat Format presets |
| enum Preset { |
| // Default |
| UNKNOWN_PRESET = 0; |
| |
| // The standard format |
| STANDARD = 1; |
| |
| // The compact format |
| COMPACT = 2; |
| } |
| } |
| |
| // A summary of a logcat search filter |
| // (Logcat is the logging from an Android device the developer is testing |
| // their app on) |
| message LogcatFilterEvent { |
| // Summary of search terms pertaining to the log entry 'tag' field |
| optional TermVariants tag_terms = 1; |
| |
| // Summary of search terms pertaining to the log entry 'package' field |
| optional TermVariants package_terms = 2; |
| |
| // Summary of search terms pertaining to the log entry 'message' field |
| optional TermVariants message_terms = 3; |
| |
| // Summary of search terms pertaining to entire log entry |
| optional TermVariants line_terms = 4; |
| |
| // Number of search terms pertaining to entire log entry. Differs from the |
| // above as these terms do not use the 'line:' prefix. |
| optional int32 implicit_line_terms = 5; |
| |
| // Number of search terms pertaining to the 'level' field. |
| optional int32 level_terms = 6; |
| |
| // Number of search terms pertaining to the 'timestamp' field. As in |
| // "how long ago the entry was logged" |
| optional int32 age_terms = 7; |
| |
| // Number of the search terms of the form 'package:mine'. |
| optional int32 package_project_terms = 8; |
| |
| // Number of or operators in the expression |
| optional int32 or_operators = 9; |
| |
| // Number of and operators in the expression |
| optional int32 and_operators = 10; |
| |
| // Number of parentheses pairs in the expressions |
| optional int32 parentheses = 11; |
| |
| // Does the filter contain an error |
| optional bool contains_errors = 12; |
| |
| // Is this filter saved as a favorite |
| optional bool is_favorite = 13; |
| |
| // Number of 'is:crash' search terms. |
| optional int32 crash_terms = 14; |
| |
| // Number of 'is:stacktrace' search terms. |
| optional int32 stacktrace_terms = 15; |
| |
| // Summary of search terms pertaining to the log entry 'process' field |
| optional TermVariants process_terms = 16; |
| |
| // A summary of a term with regex and negated variants |
| message TermVariants { |
| // Number of normal terms (for example 'tag:foo') |
| optional int32 count = 1; |
| |
| // Number of negated terms (for example '-tag:foo') |
| optional int32 count_negated = 2; |
| |
| // Number of regex terms (for example 'tag~:foo') |
| optional int32 count_regex = 3; |
| |
| // Number of negated regex terms (for example '-tag~:foo') |
| optional int32 count_negated_regex = 4; |
| } |
| } |
| |
| // Details of a Logcat panel |
| message LogcatPanelEvent { |
| // True if the panel is created from a restore-state. |
| optional bool is_restored = 1; |
| |
| // The formatting configuration of the panel |
| optional LogcatFormatConfiguration format_configuration = 2; |
| |
| // The panel filter. |
| optional LogcatFilterEvent filter = 3; |
| |
| // The buffer size. |
| optional int32 buffer_size = 4; |
| } |
| } |
| |
| // Memory and CPU counters as reported by the OS |
| message OSMetrics { |
| // Processes started by Android Studio |
| // (Android Studio itself, daemons, emulator, etc.) |
| repeated Process processes = 1; |
| |
| // Process details: start time, memory and CPU usage |
| message Process { |
| // Process ID |
| optional int32 pid = 1; |
| // Parent's process ID |
| optional int32 parent_pid = 2; |
| // Process start time |
| optional int64 start_timestamp_ms = 3; |
| // Total CPU used by the process so far |
| optional int64 total_cpu_use_milliseconds = 4; |
| // Detected process type |
| optional ProcessType type = 5; |
| // Type of last not-unknown parent process |
| optional ProcessType last_known_parent_type = 6; |
| // Linux, MacOS: Resident Set Size in 1024-units. |
| // Memory allocated to this process and currently in RAM |
| optional int64 rss = 7; |
| // Windows: Working Set Size (in bytes). |
| // Amount of memory this process needs to execute efficiently |
| optional int64 working_set_size = 8; |
| // Windows: Private Page Count (in bytes). |
| // Count of bytes accessible only by this process |
| optional int64 private_page_count = 9; |
| } |
| |
| // Known processes started by Android Studio |
| enum ProcessType { |
| // Unknown process |
| UNKNOWN_PROCESS_TYPE = 0; |
| // Instance of Android Studio's JVM |
| ANDROID_STUDIO = 1; |
| // File-system notifier |
| FS_NOTIFIER = 2; |
| // Gradle daemon |
| GRADLE_DAEMON = 3; |
| // Emulator |
| EMULATOR = 4; |
| // Kotlin daemon |
| KOTLIN_DAEMON = 5; |
| // Console host (Windows only) |
| CONSOLE_HOST = 6; |
| } |
| } |
| |
| message SdkIndexLibraryDetails { |
| // Group Id of library |
| optional string group_id = 1; |
| // Artifact Id of library |
| optional string artifact_id = 2; |
| // Version of library |
| optional string version_string = 3; |
| // Is this library reported as blocking publishing on Google Play? |
| optional bool is_blocking = 4; |
| } |
| |
| message SdkIndexLoadingDetails { |
| enum SourceType { |
| UNKNOWN_SOURCE = 0; |
| // Test data, not to be used in production |
| TEST_DATA = 1; |
| // Cache file is too old but no network is available |
| CACHE_FILE_EXPIRED_NO_NETWORK = 2; |
| // Cache file is too old, network is available but was not able to update |
| CACHE_FILE_EXPIRED_NETWORK_ERROR = 3; |
| // Cache file exist but cannot tell if too old |
| CACHE_FILE_EXPIRED_UNKNOWN = 4; |
| // Cache file exists and has not expired |
| CACHE_FILE_RECENT = 5; |
| // Cache file and was just downloaded |
| CACHE_FILE_NEW = 6; |
| // Default data was used |
| DEFAULT_DATA = 7; |
| // Cache file exists and expired but server reported not modified |
| CACHE_FILE_NOT_MODIFIED = 8; |
| } |
| |
| enum ReadErrorType { |
| NO_ERROR = 0; |
| // Function used to get the data caused an exception |
| DATA_FUNCTION_EXCEPTION = 1; |
| // Function used to get the data returned null |
| DATA_FUNCTION_NULL_ERROR = 2; |
| // There was an exception while decompressing the raw data |
| GZIP_EXCEPTION = 3; |
| // Exception while parsing decompressed data |
| INDEX_PARSE_EXCEPTION = 4; |
| // Resulted Index was null after parsing |
| INDEX_PARSE_NULL_ERROR = 5; |
| } |
| |
| // Specify the source of the Index data |
| optional SourceType source_type = 1; |
| // What is the type of error when the Index could not be loaded |
| optional ReadErrorType read_error_type = 2; |
| } |
| |
| message LiveEditEvent { |
| enum Status { |
| UNKNOWN = 0; |
| // LiveEdit push succeeded |
| SUCCESS = 1; |
| // LiveEdit push failed due to transport issues |
| PUSH_FAILED = 2; |
| // LiveEdit failed because the user added a method |
| UNSUPPORTED_ADDED_METHOD = 3; |
| // LiveEdit failed because the user removed a method |
| UNSUPPORTED_REMOVED_METHOD = 4; |
| // LiveEdit failed because the user added a class |
| UNSUPPORTED_ADDED_CLASS = 5; |
| // LiveEdit failed because the user added a field |
| UNSUPPORTED_ADDED_FIELD = 6; |
| // LiveEdit failed because the user removed a field |
| UNSUPPORTED_REMOVED_FIELD = 7; |
| // LiveEdit failed because of an error with inlining |
| UNSUPPORTED_MODIFY_INLINE = 8; |
| // LiveEdit failed because the user changed the class hierarchy |
| // DEPRECATED |
| // USE UNSUPPORTED_SUPER_CLASS or UNSUPPORTED_INTERFACE |
| UNSUPPORTED_MODIFY_INHERITANCE = 9 [deprecated = true]; |
| |
| // The following are from LiveEditUpdateException.Error |
| // We DO NOT log this. If this shows up in metrics, we know we have a bug at |
| // hand. |
| ANALYSIS_ERROR = 10; |
| // We DO NOT log this. If this shows up in metrics, we know we have a bug at |
| // hand. |
| COMPILATION_ERROR = 11; |
| |
| NON_KOTLIN = 12; |
| NON_PRIVATE_INLINE_FUNCTION = 13; |
| UNABLE_TO_INLINE = 14; |
| UNABLE_TO_LOCATE_COMPOSE_GROUP = 15; |
| UNSUPPORTED_BUILD_SRC_CHANGE = 16; |
| // DEPRECATED |
| UNSUPPORTED_SRC_CHANGE_RECOVERABLE = 17 [deprecated = true]; |
| // DEPRECATED |
| UNSUPPORTED_SRC_CHANGE_UNRECOVERABLE = 18 [deprecated = true]; |
| UNSUPPORTED_TEST_SRC_CHANGE = 19; |
| UNABLE_TO_DESUGAR = 20; |
| INTERNAL_ERROR = 21; |
| KNOWN_ISSUE = 22; |
| |
| // Semantic unsafe operations |
| PENDING_ERROR_IN_ANOTHER_FILE_AUTO_MODE = 23; |
| |
| UNSUPPORTED_BUILD_LIBRARY_DESUGAR = 24; |
| BAD_MIN_API = 25; |
| |
| UNSUPPORTED_COMPOSE_RUNTIME_VERSION = 26; |
| UNKNOWN_LIVE_UPDATE_DEPLOYER_ERROR = 27; |
| |
| UNSUPPORTED_ADDED_ACCESS = 28; |
| UNSUPPORTED_REMOVED_ACCESS = 29; |
| UNSUPPORTED_MODIFIED_FIELD = 30; |
| |
| UNSUPPORTED_CONSTRUCTOR = 31; |
| UNSUPPORTED_CLINIT = 32; |
| UNSUPPORTED_INIT = 33; |
| UNSUPPORTED_ENCLOSING_METHOD = 34; |
| |
| UNSUPPORTED_INTERFACE = 35; |
| UNSUPPORTED_SUPER_CLASS = 36; |
| |
| UNSUPPORTED_SIGNATURE = 37; |
| UNSUPPORTED_USER_CLASS_ADDED = 38; |
| UNSUPPORTED_WHEN_ENUM_PATH = 39; |
| |
| KOTLIN_EAP = 40; |
| VIRTUAL_FILE_NOT_EXIST = 41; |
| |
| INTERNAL_ERROR_NO_BINDING_CONTEXT = 42; |
| INTERNAL_ERROR_NO_COMPILER_OUTPUT = 43; |
| INTERNAL_ERROR_FILE_OUTSIDE_MODULE = 44; |
| INTERNAL_ERROR_FILE_CODE_GEN = 45; |
| INTERNAL_ERROR_FILE_COMPILE_COMMAND_EXCEPTION = 46; |
| INTERNAL_ERROR_FILE_MULTI_MODULE = 47; |
| |
| NO_COMPOSE_PLUGIN = 48; |
| NO_IWI = 49; |
| } |
| |
| enum Mode { |
| UNKNOWN_MODE = 0; |
| // The LiveEdit push was triggered automatically. |
| AUTO = 1; |
| // The LiveEdit push was triggered by the user on hot key. |
| MANUAL = 2; |
| // The LiveEdit push was triggered by the user on save. |
| ON_SAVE = 3; |
| } |
| |
| // Result of the LiveEdit device push |
| optional Status status = 1; |
| // Whether the changed code involves a non-@Composable method |
| optional bool has_non_compose = 2; |
| // The duration of the LiveEdit compile, in milliseconds |
| optional int64 compile_duration_ms = 3; |
| // The duration of the LiveEdit push, in milliseconds |
| optional int64 push_duration_ms = 4; |
| // How the LiveEdit push was triggered |
| optional Mode mode = 5; |
| // Client-side salted (rotating every 28 days), sha256 of the project base |
| // path. Used to correlate LiveEdit usage with Compose projects. |
| optional string project_id = 6; |
| |
| enum Device { |
| NONE = 0; // Possible bug or device disconnected between actions. |
| PHYSICAL = 1; |
| EMULATOR = 2; |
| MULTI = 3; |
| } |
| |
| optional Device target_device = 7; |
| } |
| |
| message GoogleLoginPluginEvent { |
| enum EventKind { |
| UNKNOWN_EVENT_TYPE = 0; |
| LOGIN_WITH_SUCCESS = 1; |
| LOGIN_WITH_FAILURE = 2; |
| // Forced logout is performed as a first step to recover from |
| // `TokenResponseException` |
| FORCE_LOGOUT = 3; |
| LOGOUT_WITH_SUCCESS = 5; |
| LOGOUT_WITH_FAILURE = 6; |
| LOGGED_IN_ON_STUDIO_START = 7; |
| } |
| |
| message LoginFeatures { |
| repeated string features = 1; // e.g. "Gemini"; |
| } |
| |
| optional EventKind event = 1; |
| optional LoginFeatures features = 2; |
| } |
| |
| message DeviceMirroringSession { |
| enum DeviceKind { |
| UNKNOWN_DEVICE_KIND = 0; |
| PHYSICAL = 1; |
| VIRTUAL = 2; |
| } |
| optional DeviceKind device_kind = 1; |
| optional int64 duration_sec = 2; |
| // Time it took to push the Screen Sharing Agent to the device. |
| optional int64 agent_push_time_millis = 3; |
| // Time between the end of agent push and the arrival of the first frame. |
| optional int64 first_frame_delay_millis = 4; |
| } |
| |
| message DeviceMirroringAbnormalAgentTermination { |
| optional int32 exit_code = 1; |
| optional int64 run_duration_millis = 2; |
| } |
| |
| message SystemHealthEvent { |
| enum SystemHealthEventType { |
| UNKNOWN_EVENT = 0; |
| |
| // UI freeze detected |
| UI_FREEZE_STARTED = 1; |
| // Periodic update on freeze status |
| UI_FREEZE_UPDATE = 2; |
| // UI Freeze finished |
| UI_FREEZE_FINISHED = 3; |
| |
| // Studio ecnountered JVM crash |
| EXIT_JVM_CRASH = 4; |
| // Graceful Studio exit |
| EXIT_GRACEFUL = 5; |
| // Studio shutdown without calling app exit hooks |
| // (but not due to JVM crash) |
| EXIT_NONGRACEFUL = 6; |
| |
| // GC reported low memory warning |
| MEMORY_LOW_MEMORY_WARNING = 7; |
| // Long GC pause detected |
| MEMORY_LONG_GC_PAUSE = 8; |
| // OOM error detected |
| MEMORY_OOM_ERROR = 9; |
| |
| // Exception reported to crash |
| EXCEPTION = 10; |
| } |
| |
| enum DeadlockStatus { |
| UNKNOWN = 0; |
| // Always sent on UI_FREEZE_FINISHED |
| NO_DEADLOCK = 1; |
| // Likely a deadlock, but couldn't make final determination |
| SUSPECTED = 2; |
| // Deadlock detected |
| CONFIRMED = 3; |
| } |
| |
| enum LowMemoryWarningType { |
| UNKNOWN_TYPE = 0; |
| // Low memory before GC |
| BEFORE_GC = 1; |
| // Low memory after GC |
| AFTER_GC = 2; |
| } |
| |
| message UIFreeze { |
| // Unique freeze id (per session) |
| optional int64 freeze_id = 1; |
| // Duration of the freeze so far. Total duration when UI_FREEZE_FINISHED |
| optional int64 duration_ms = 2; |
| // Current status of deadlock detection |
| optional DeadlockStatus deadlock = 3; |
| } |
| |
| message Exit { |
| // Session ID of: |
| // * previous session when EXIT_JVM_CRASH or EXIT_NONGRACEFUL |
| // * current session when EXIT_GRACEFUL |
| optional string studio_session_id = 1; |
| |
| // For EXIT_JVM_CRASH, UNIX signal number |
| optional int32 jvm_signal_number = 2; |
| } |
| |
| message Memory { |
| optional LowMemoryWarningType low_memory_warning_type = 1; |
| |
| // Time spent in GC over reported period (GC pause reporting) |
| optional int64 period_cumulative_gc_time_ms = 2; |
| |
| // Duration of the sampled period (GC pause reporting) |
| optional int64 period_duration_ms = 3; |
| } |
| |
| message Exception { |
| // Stable signature for the exception |
| optional string stable_signature = 1; |
| // Crash ReportID if assigned for the report |
| // Special value "[timeout]" indicates report id was not set in required |
| // time. |
| optional string crash_report_id = 2; |
| // Index of the exception in this session |
| optional int64 exception_index = 3; |
| // Index of exception with this signature in this session |
| optional int64 signature_index = 4; |
| // As some reports may be skipped if they happen too often, |
| // this field tells how many were skipped for the given signature |
| optional int64 signature_reports_skipped = 5; |
| } |
| |
| optional SystemHealthEventType event_type = 1; |
| // Additional information about current UI freeze |
| optional UIFreeze ui_freeze = 2; |
| // Additional information how this/previous session terminated |
| optional Exit exit = 3; |
| // Additional information about memory events |
| optional Memory memory = 4; |
| // Exception details |
| optional Exception exception = 5; |
| // Whether the IDE is in Essentials Mode |
| optional bool essentials_mode = 6; |
| } |
| |
| message ComposePreviewCanvasEvent { |
| enum EventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| SELECT_LAYOUT = 1; |
| } |
| enum LayoutName { |
| UNKNOWN_LAYOUT_NAME = 0; |
| LIST = 1; |
| GRID = 2; |
| GROUPED_LIST = 3; |
| GROUPED_GRID = 4; |
| GALLERY = 5; |
| } |
| // What kind of interaction or event happens in the compose preview canvas |
| optional EventType event_type = 1; |
| // The chosen layout id in the compose preview canvas, i.e. ListLayout |
| optional LayoutName layout_name = 2; |
| } |
| |
| message AppQualityInsightsUsageEvent { |
| enum AppQualityInsightsUsageEventType { |
| UNKNOWN_EVENT = 0; |
| // AQI Panel is opened |
| ZERO_STATE = 1; |
| |
| // AQI Fetches Crashes |
| CRASHES_FETCHED = 2; |
| |
| // Interactions with Crash Details view |
| CRASH_LIST_DETAILS_VIEW = 3; |
| |
| // AQI Stacktrace clicked |
| STACKTRACE_CLICKED = 4; |
| |
| // AQI User leaves to see crash in console |
| FB_CONSOLE_LINK_CLICKED = 5; |
| |
| // AQI matchers run |
| MATCHERS_INITIATED = 6; |
| |
| // AQI Experiences an error |
| ERROR = 7; |
| |
| // User closed/opened the issue from AQI |
| ISSUE_STATUS_CHANGED = 8; |
| |
| // User added/removed/edited a note to an issue |
| NOTE = 9; |
| |
| // AQI transitioned to offline or online mode |
| MODE_TRANSITION = 10; |
| |
| // For measuring performance in AQI |
| PERFORMANCE_STATS = 11; |
| } |
| |
| enum CrashType { |
| UNKNOWN_TYPE = 0; |
| FATAL = 1; |
| NON_FATAL = 2; |
| } |
| enum Confidence { |
| UNKNOWN_CONFIDENCE = 0; |
| LOW = 1; |
| MEDIUM = 2; |
| HIGH = 3; |
| } |
| enum Resolution { |
| UNKNOWN_RESOLUTION = 0; |
| LINE = 1; |
| METHOD = 2; |
| CLASS = 3; |
| FAILED = 4; |
| } |
| message AppQualityInsightsZeroStateDetails { |
| enum EmptyState { |
| UNKNOWN_STATE = 0; |
| // User isn't logged into Android Studio |
| NO_LOGIN = 1; |
| // User doesn't have a google-services.json in the module |
| // Deprecated by NO_ACCESS below |
| NO_FIREBASE = 2 [deprecated = true]; |
| // User doesn't have access to any apps |
| NO_ACCESS = 3; |
| } |
| optional EmptyState empty_state = 1; |
| } |
| |
| message AppQualityInsightsFetchDetails { |
| message VcsIntegrationDetails { |
| optional bool has_app_vcs_info = 1; |
| } |
| |
| enum TimeFilter { |
| UNKNOWN_FILTER = 0; |
| THIRTY_DAYS = 1; |
| SIXTY_DAYS = 2; |
| NINETY_DAYS = 3; |
| SEVEN_DAYS = 4; |
| TWENTYFOUR_HOURS = 5; |
| } |
| enum FetchSource { |
| UNKNOWN_SOURCE = 0; |
| // Passive background refresh |
| BACKGROUND = 1; |
| // User initiated refresh |
| REFRESH = 2; |
| // User applied filter |
| FILTER = 3; |
| // User selected a different project |
| PROJECT_SELECTION = 4; |
| } |
| enum SeverityFilter { |
| UNKNOWN_SEVERITY = 0; |
| FATAL = 1; |
| NON_FATAL = 2; |
| ALL = 3; |
| } |
| enum SignalFilter { |
| UNKNOWN_SIGNAL = 0; |
| ALL_SIGNAL = 1; |
| EARLY_SIGNAL = 2; |
| FRESH_SIGNAL = 3; |
| REGRESSIVE_SIGNAL = 4; |
| REPETITIVE_SIGNAL = 5; |
| } |
| enum VisibilityFilter { |
| UNKNOWN_VISIBILITY = 0; |
| ALL_VISIBILITY = 1; |
| USER_PERCEIVED = 2; |
| } |
| |
| // The Time filter used for this fetch of crashes |
| optional TimeFilter time_filter = 1; |
| // Whether the version filter is enabled for this fetch (false means all |
| // versions) |
| optional bool version_filter = 2; |
| // The Severity filter used for this fetch of crashes |
| optional SeverityFilter severity_filter = 3; |
| // True if the project fetched for was the default project for the variant |
| optional bool default_project = 4; |
| // The source triggering this fetch |
| optional FetchSource fetch_source = 5; |
| // The number of retries required to get the data (0 means it got it first |
| // try) |
| optional int32 num_retries = 6; |
| // Whether the fetch hit a cached result (true means no network request was |
| // made) |
| optional bool cache = 7; |
| // The signal filter used for this fetch |
| optional SignalFilter signal_filter = 8; |
| // Whether the os filter is enabled for this fetch (false means all OSes) |
| optional bool os_filter = 9; |
| // Whether the device filter is enabled for this fetch (false means all |
| // devices) |
| optional bool device_filter = 10; |
| // The visibility type used for this fetch. |
| optional VisibilityFilter visibility_filter = 11; |
| // The app vcs info got from this fetch. |
| optional VcsIntegrationDetails vcs_integration_details = 12; |
| } |
| |
| message AppQualityInsightsCrashOpenDetails { |
| enum CrashOpenSource { |
| UNKNOWN_SOURCE = 0; |
| // Crash was opened in AQI panel |
| LIST = 1; |
| // Crash was opened directly from codebase |
| INSPECTION = 2; |
| } |
| |
| optional CrashType crash_type = 1; |
| optional CrashOpenSource source = 2; |
| } |
| |
| message AppQualityInsightsStacktraceDetails { |
| enum ClickLocation { |
| // Old events will by default have ClickLocation set to UNKNOWN_LOCATION |
| // when they should be treated as TARGET_FILE_HYPER_LINK |
| UNKNOWN_LOCATION = 0; |
| // Click on a resolved file target from the parsed trace |
| TARGET_FILE_HYPER_LINK = 1; |
| // Click on an attached "diff link" inlay element where the app vcs info |
| // is available |
| DIFF_INLAY = 2; |
| } |
| |
| optional CrashType crash_type = 1; |
| // True if the file is part of the users project (ie: not a library) |
| optional bool local_file = 2; |
| optional Confidence confidence = 3; |
| optional Resolution resolution = 4; |
| optional ClickLocation click_location = 5; |
| } |
| |
| message AppQualityInsightsConsoleLinkDetails { |
| enum ConsoleOpenSource { |
| UNKNOWN_SOURCE = 0; |
| // Console was opened from details view |
| DETAILS = 1; |
| // Console was opened by inspection quick-fix action |
| INSPECTION = 2; |
| } |
| |
| optional CrashType crash_type = 1; |
| optional ConsoleOpenSource source = 2; |
| optional Confidence confidence = 3; |
| optional Resolution resolution = 4; |
| } |
| |
| message AppQualityInsightsMatcherDetails { |
| enum MatcherSource { |
| UNKNOWN_SOURCE = 0; |
| // Matcher was run to fill in details panel |
| DETAILS = 1; |
| // Matcher was run to populate in code highlighting |
| INSPECTION = 2; |
| } |
| |
| optional Confidence confidence = 1; |
| optional Resolution resolution = 2; |
| optional MatcherSource source = 3; |
| optional CrashType crash_type = 4; |
| } |
| |
| message AppQualityInsightsErrorDetails { |
| enum ErrorSource { |
| UNKNOWN_SOURCE = 0; |
| // Occurred during scan for google-services.json |
| CONFIG_SCAN = 1; |
| // Occurred during RPC (fetching data) |
| RPC = 2; |
| // Occurred while trying to match stacktrace to local code |
| MATCHERS = 3; |
| // Occurred during authentication (fetching auth token) |
| AUTHENTICATION = 4; |
| } |
| optional ErrorSource source = 1; |
| optional int32 api_error_code = 2; |
| } |
| |
| message AppQualityInsightsIssueChangedDetails { |
| enum StatusChange { |
| UNKNOWN_CHANGE = 0; |
| OPENED = 1; |
| CLOSED = 2; |
| } |
| optional StatusChange status_change = 1; |
| } |
| |
| message AppQualityInsightsNotesDetails { |
| enum NoteEvent { |
| UNKNOWN_EVENT = 0; |
| ADDED = 1; |
| REMOVED = 2; |
| } |
| optional NoteEvent note_event = 1; |
| } |
| |
| enum AppQualityInsightsModeTransitionDetails { |
| UNKNOWN_TRANSITION = 0; |
| ONLINE_TO_OFFLINE = 1; |
| OFFLINE_TO_ONLINE = 2; |
| } |
| |
| message PerformanceStats { |
| message VersionControlBasedLineNumberMappingLatency { |
| optional int64 min_latency_ms = 1; |
| optional int64 p50_latency_ms = 2; |
| optional int64 p90_latency_ms = 3; |
| optional int64 max_latency_ms = 4; |
| } |
| |
| optional VersionControlBasedLineNumberMappingLatency |
| vc_based_line_number_mapping_latency = 1; |
| } |
| |
| enum AppQualityInsightsProductType { |
| UNKNOWN_PRODUCT_TYPE = 0; |
| CRASHLYTICS = 1; |
| PLAY_VITALS = 2; |
| } |
| |
| // The app_id is the id for the user's android app |
| // which we salt on the client (28 day rotation) then sha256 |
| // so it is anonymized and is unique per user, but has a 1-N relation. |
| optional string app_id = 1; |
| |
| // Type of event |
| optional AppQualityInsightsUsageEventType type = 2; |
| |
| // set when type = ZERO_STATE |
| optional AppQualityInsightsZeroStateDetails zero_state_details = 3; |
| |
| // set when type = CRASHES_FETCHED |
| optional AppQualityInsightsFetchDetails fetch_details = 4; |
| |
| // set when type = CRASH_LIST_DETAILS_VIEW |
| optional AppQualityInsightsCrashOpenDetails crash_open_details = 5; |
| |
| // set when type = STACKTRACE_CLICKED |
| optional AppQualityInsightsStacktraceDetails stacktrace_details = 6; |
| |
| // set when type = FB_CONSOLE_LINK_CLICKED |
| optional AppQualityInsightsConsoleLinkDetails console_link_details = 7; |
| |
| // set when type = MATCHERS_INITIATED |
| optional AppQualityInsightsMatcherDetails matcher_details = 8; |
| |
| // set when type = ERROR |
| optional AppQualityInsightsErrorDetails error_details = 9; |
| |
| // set when type = ISSUE_STATUS_CHANGED |
| optional AppQualityInsightsIssueChangedDetails issue_changed_details = 10; |
| |
| // set when type = NOTE |
| optional AppQualityInsightsNotesDetails notes_details = 11; |
| |
| // This event occurred while AQI was in offline mode |
| optional bool is_offline = 12; |
| |
| // set when type = MODE_TRANSITION |
| optional AppQualityInsightsModeTransitionDetails mode_transition_details = 13; |
| |
| // Required for all event types. |
| optional AppQualityInsightsProductType product_type = 14; |
| |
| // set when type = PERFORMANCE_STATS |
| optional PerformanceStats performance_stats = 15; |
| } |
| |
| message FastPreviewEvent { |
| enum Type { |
| UNKNOWN = 0; |
| // Fast Preview was enabled by the user |
| USER_ENABLED = 1; |
| // Fast Preview was disable by the user |
| USER_DISABLED = 2; |
| // Fast Preview was disabled automatically after an error |
| AUTO_DISABLED = 3; |
| // Fast Preview compilation completed |
| COMPILE = 4; |
| } |
| |
| message CompilationResult { |
| enum Status { |
| UNKNOWN = 0; |
| // Compilation was successful |
| SUCCESS = 1; |
| // The code could not be compiled because the compiler daemon |
| // failed to start |
| DAEMON_START_ERROR = 2; |
| // Compilation failed |
| FAILED = 3; |
| } |
| |
| // Result of the Compilation |
| optional Status status = 1; |
| // Number of files compiled |
| optional int64 compiled_files = 2; |
| // The duration of the compilation, in milliseconds |
| optional int64 compile_duration_ms = 3; |
| // The duration of the refresh, in milliseconds |
| optional int64 refresh_duration_ms = 4; |
| } |
| |
| // Result of the LiveEdit device push |
| optional Type type = 1; |
| // The compilation result when type = COMPILE |
| optional CompilationResult compilation_result = 2; |
| } |
| |
| // Event containing a report on the memory usage of Android Studio components |
| message MemoryUsageReportEvent { |
| // Number of objects and their total size |
| message ObjectsStatistics { |
| // Number of objects |
| optional uint32 objects_count = 1; |
| // Total size of objects in bytes |
| optional uint64 total_size_bytes = 2; |
| } |
| |
| // Characteristics of the object tree. It contains total number of objects in |
| // the subtree and their total size. It also contains the number and total |
| // size of objects declared in IntelliJ platform code from the subtree. |
| // |
| // MemoryTrafficStatistics is an outdated name: data here no longer represents |
| // memory traffic, but the name was kept to maintain backward compatibility. |
| // ObjectTreeStatistics is |
| // a better name. |
| message MemoryTrafficStatistics { |
| // Statistics of a subtree objects. |
| optional ObjectsStatistics total_stats = 1; |
| |
| // Historical: we no longer track object creation timestamps |
| optional ObjectsStatistics new_generation_stats = 2 [deprecated = true]; |
| // Historical: we no longer track object creation timestamps |
| repeated ObjectsStatistics old_generations_stats = 3 [deprecated = true]; |
| |
| // Statistics of IntelliJ platform declared objects from the subtree. |
| optional ObjectsStatistics platform_objects_stats = 4; |
| // Statistics of the objects from the subtree that are retained by the |
| // IntelliJ platform declared objects. |
| optional ObjectsStatistics platform_retained_stats = 5; |
| } |
| |
| // Statistics of objects of the cluster(component or category). Contains data |
| // on the subtrees owned and retained by the cluster. |
| message ClusterObjectsStatistics { |
| // Statistics of the subtree owned by the cluster. |
| optional MemoryTrafficStatistics owned_cluster_stats = 1; |
| // Statistics of the subtree retained by the cluster. |
| optional MemoryTrafficStatistics retained_cluster_stats = 2; |
| } |
| |
| // Statistics of the cluster. |
| message ClusterMemoryUsage { |
| // Label of the component/category. |
| optional string label = 1; |
| // Statistics of the cluster objects. |
| optional ClusterObjectsStatistics stats = 2; |
| // Number of the instances of tracked classes. |
| // (these class names are listed in memory_usage_reporting.textproto) |
| map<string, int32> instance_count_per_class_name = 3; |
| } |
| |
| // Information about the cluster for which the owning component wasn't |
| // unambiguously determined |
| message SharedClusterMemoryUsage { |
| // Ids of the components, enumerated according to used_components field |
| repeated int32 ids = 1 [packed = true]; |
| // Statistics of the objects from the shared cluster. |
| optional MemoryTrafficStatistics stats = 2; |
| } |
| |
| // Metadata of the report collection |
| message MemoryUsageCollectionMetadata { |
| // Status code of the report collection. |
| enum StatusCode { |
| NO_ERROR = 0; |
| HEAP_IS_TOO_BIG = 1; |
| CANT_TAG_OBJECTS = |
| 2; // JVM doesn't have a capability of tagging objects configured |
| OBJECTS_MAP_IS_TOO_BIG = |
| 3; // The size of the object map exceeded the limit |
| CLASS_FIELDS_CACHE_IS_TOO_BIG = |
| 4; // The size of the class fields cache exceeded the limit |
| WRONG_ROOT_OBJECT_ID = 5; // Something went wrong: one of the root |
| // objects had the wrong id after enumeration |
| LOW_MEMORY = 6; // LowMemory state occurred during the heap traversal |
| // (and collecting was immediately stopped) |
| AGENT_LOAD_FAILED = 7; // Loading object tagging java agent failed |
| POWER_SAVING_MODE_ENABLED = 8; // Power saving mode is enabled, report |
| // collection will be aborted to reduce |
| // the CPU load. |
| } |
| |
| // Status code of the report collection |
| optional StatusCode status_code = 1; |
| // Statistics of the total memory used by Android Studio |
| optional MemoryTrafficStatistics total_heap_objects_stats = 2; |
| // Peak size of internal field cache |
| optional uint32 field_cache_count_peak = 3; |
| // Peak length of object queue used for traverse BFS |
| optional uint32 object_queue_length_peak = 4; |
| // number of objects that were enumerated during the first traverse, but |
| // GCed after that and were not reached during the second pass. |
| optional uint32 garbage_collected_before_2pass_count = 5; |
| // The time it took to collect the report |
| optional double collection_time_seconds = 6; |
| // Was the power save mode enabled at the time of sending the report |
| optional bool is_in_power_save_mode = 7; |
| // The number of unsuccessful attempts to access the field via reflection. |
| // This may be due, for example, to the fact that VM limited the access to |
| // some fields. |
| optional uint32 unsuccessful_field_accesses_count = 8; |
| // Uptime of the Java virtual machine at the start of the report collecting |
| optional double collection_start_timestamp_seconds = 9; |
| // Sequence number of report collection iteration that happened in this |
| // IDE session. |
| optional int32 collection_iteration = 10; |
| // Was essentials mode enabled at the time of sending the report |
| optional bool is_in_essentials_mode = 11; |
| } |
| |
| // Statistics of the components |
| repeated ClusterMemoryUsage component_stats = 1; |
| // Statistics of the shared clusters |
| repeated SharedClusterMemoryUsage shared_component_stats = 2; |
| // Statistics of the categories |
| repeated ClusterMemoryUsage component_category_stats = 4; |
| // Report collection metadata |
| optional MemoryUsageCollectionMetadata metadata = 6; |
| } |
| |
| message ManifestMergerStats { |
| // The following run times measure how long it takes to creating a new |
| // MergedManifestSnapshot, including calling into the manifest merger |
| // component. This corresponds to the amount of time spent in a cancellable |
| // read action. |
| |
| // Histogram of run times with successful completion |
| optional Histogram success_run_time_ms = 1; |
| // Histogram of run times when execution was canceled due to read lock being |
| // canceled in favor of a write lock |
| optional Histogram canceled_run_time_ms = 2; |
| // Histogram of run times when execution failed with a parsing or other error |
| optional Histogram failed_run_time_ms = 3; |
| } |
| |
| message ThreadingAgentUsageEvent { |
| // The number of times the threading agent verified that a method was invoked |
| // on a UI thread |
| optional int64 verify_ui_thread_count = 1; |
| |
| // The number of times the threading agent verified that a method was invoked |
| // on a worker thread |
| optional int64 verify_worker_thread_count = 2; |
| } |
| |
| message ProjectViewSelectionChangeEvent { |
| enum ProjectViewContent { |
| UNKNOWN = 0; |
| ANDROID = 1; |
| PROJECT = 2; |
| OTHER = 3; |
| } |
| // For init event 'before' will be UNKNOWN |
| optional ProjectViewContent view_before_change = 1; |
| optional ProjectViewContent view_after_change = 2; |
| } |
| |
| message HeapReportEvent { |
| enum Status { |
| UNKNOWN = 0; |
| LOW_MEMORY_EVENT = 1; |
| INSUFFICIENT_DISK_SPACE = 2; |
| HEAP_TOO_SMALL = 3; |
| RATE_LIMITED = 4; |
| EXCESS_FREE_MEMORY = 5; |
| FORCED_GC = 6; |
| EXCESS_FREE_MEMORY_AFTER_GC = 7; |
| REPORT_ALREADY_PENDING = 8; |
| CAPTURE_SNAPSHOT_FAILED = 9; |
| ANALYSIS_STARTED = 10; |
| ERROR_DURING_ANALYSIS = 11; |
| ANALYSIS_FINISHED = 12; |
| REVIEW_DIALOG_SHOWN = 13; |
| REVIEW_ACCEPTED = 14; |
| REVIEW_DECLINED = 15; |
| REPORT_UPLOADED = 16; |
| REPORT_UPLOAD_FAILED = 17; |
| } |
| // mirrors com.android.tools.idea.diagnostic.report.MemoryReportReason |
| enum Reason { |
| NONE = 0; |
| USER_INVOKED = 1; |
| INTERNAL_USER_INVOKED = 2; |
| FREQUENT_LOW_MEMORY_NOTIFICATION = 3; |
| LOW_MEMORY = 4; |
| OUT_OF_MEMORY = 5; |
| } |
| optional Status status = 1; |
| optional Reason reason = 2; // set when status = LOW_MEMORY_EVENT |
| optional int64 freed_memory = 3; // set when status = FORCED_GC |
| } |
| |
| message CreateDiagnosticReportAction { |
| enum ActionType { |
| UNKNOWN_ACTION_TYPE = 0; |
| CANCELLED = 1; |
| CREATED = 2; |
| } |
| |
| // Indicates which action the user took |
| optional ActionType action_type = 1; |
| } |
| |
| message DirectAccessUsageEvent { |
| enum DirectAccessUsageEventType { |
| UNKNOWN_EVENT = 0; |
| // User requested to reserve a device |
| RESERVE_DEVICE = 1; |
| // Connect during initial reservation or user requested to reconnect |
| CONNECT_DEVICE = 2; |
| // Video stream started from device |
| STREAM_STARTED = 3; |
| // User requested to extend current device reservation |
| EXTEND_RESERVATION = 4; |
| // User requested to end reservation |
| END_RESERVATION = 5; |
| // Device disconnected |
| DISCONNECT_DEVICE = 6; |
| } |
| |
| enum FailureReason { |
| UNKNOWN_FAILURE = 0; |
| |
| // Generic Reasons |
| USER_LOGGED_OUT = 1; |
| // CouroutineScope was cancelled leading to the failure. |
| SCOPE_CANCELLED = 2; |
| // Studio project is closing |
| PROJECT_CLOSING = 3; |
| |
| // Disconnect Reasons |
| // Device failed to connect to ADB |
| CONNECTION_FAILED = 11; |
| // Device disconnected from ADB |
| ADB_DISCONNECTED = 12; |
| // Device disconnected due to latency |
| LATENCY_DISCONNECT = 13; |
| // Session ended normally or through ERROR |
| SESSION_ENDED = 14; |
| // User clicked disconnect before device could connect |
| DISCONNECT_BEFORE_CONNECTED = 15; |
| |
| // End Reservation Reasons |
| // Server side failed to allocate a device or the request expired in queue |
| FAILED_TO_ALLOCATE_DEVICE = 21; |
| } |
| |
| message ReserveDeviceDetails { |
| // True if reserve device request succeeded |
| optional bool success = 1; |
| // Time measured between the user clicking reserve (run) button and getting |
| // a reserved device |
| optional uint32 reserve_time_ms = 2; |
| } |
| |
| message ConnectDeviceDetails { |
| // True if connect device request succeeded |
| optional bool success = 1; |
| // Reconnecting to reserved device or connecting during reservation request |
| optional bool reconnect = 2; |
| // Time taken to connect to device |
| optional uint32 connect_time_ms = 3; |
| } |
| |
| message StreamStartedDetails { |
| // True if studio successfully received video stream from device |
| optional bool success = 1; |
| // Recorded latency of first stream |
| optional uint32 latency_ms = 2; |
| } |
| |
| message ExtendReservationDetails { |
| enum ExtendReservationDuration { |
| NONE = 0; |
| THIRTY_MINUTES = 1; |
| SIXTY_MINUTES = 2; |
| FIFTEEN_MINUTES = 3; |
| } |
| // True if extend reservation request succeeded |
| optional bool success = 1; |
| // Duration for which session should be extended |
| optional ExtendReservationDuration extend_reservation_duration = 2; |
| } |
| |
| message DisconnectDeviceDetails { |
| // True if device successfully disconnects |
| optional bool success = 1; |
| // True if user disconnected device, false if it was disconnected by other |
| // reasons such as reservation end or error |
| optional bool user_disconnected = 2; |
| } |
| |
| message ConnectionMetrics { |
| // Maximum observed latency |
| optional uint32 max_latency_ms = 1; |
| // p50 latency |
| optional uint32 p50_latency_ms = 2; |
| // p90 latency |
| optional uint32 p90_latency_ms = 3; |
| } |
| |
| message EndReservationDetails { |
| enum EndReservationType { |
| UNKNOWN = 0; |
| // Reservation ended due to an error on FTL side |
| ERROR = 1; |
| // Reservation time expired |
| EXPIRE = 2; |
| // User force checked-in the device |
| FORCE_CHECK_IN = 3; |
| } |
| // True if end reservation request succeeded |
| optional bool success = 1; |
| // User ended reservation or reservation expired |
| // Deprecated by end_reservation_type |
| optional bool user_ended = 2 [deprecated = true]; |
| // Total reservation time |
| // MAX_VALUE: 4,294,967,295 -> ~49710 days |
| optional uint32 total_reservation_time_sec = 3; |
| // Average connection latency calculated over the entire session |
| // Deprecated by ConnectionMetrics |
| optional uint32 average_connection_latency_ms = 4 [deprecated = true]; |
| // Tracks how the reservation ended. |
| optional EndReservationType end_reservation_type = 5; |
| // Connection metrics measured during the reservation |
| optional ConnectionMetrics connection_metrics = 6; |
| } |
| |
| // Type of event |
| optional DirectAccessUsageEventType type = 1; |
| // Session ID of current reservation/session for tracking events |
| // during a session |
| // Client-side salted, sha256 of session ID with salt rotated every 28 day. |
| optional string device_session_id = 2; |
| // set when type = RESERVE_DEVICE |
| optional ReserveDeviceDetails reserve_device_details = 3; |
| // set when type = CONNECT_DEVICE |
| optional ConnectDeviceDetails connect_device_details = 4; |
| // set when type = STREAM_STARTED |
| optional StreamStartedDetails stream_started_details = 5; |
| // set when type = EXTEND_RESERVATION |
| optional ExtendReservationDetails extend_reservation_details = 6; |
| // set when type = END_RESERVATION |
| optional EndReservationDetails end_reservation_details = 7; |
| // set when any of the above event fails (success bool is marked false) |
| optional FailureReason failure_reason = 8; |
| // Set when type = DISCONNECT_DEVICE |
| optional DisconnectDeviceDetails disconnect_device_details = 9; |
| } |
| |
| message SafeModeStatsEvent { |
| enum OS { |
| UNKNOWN_OS = 0; |
| WINDOWS = 1; |
| MAC = 2; |
| LINUX = 3; |
| } |
| enum EntryPoint { |
| UNKNOWN_ENTRY_POINT = 0; |
| SCRIPT = 1; |
| IDE = 2; |
| CONTEXT_MENU = 3; |
| POPUP = 4; |
| } |
| enum Trigger { |
| UNKNOWN_TRIGGER = 0; |
| STARTUP_FAILED = 1; |
| } |
| enum StartUpResult { |
| UNKNOWN_STARTUP_RESULT = 0; |
| SAFE_MODE_SUCCESS = 1; |
| STARTUP_SUCCESS_AFTER_SAFE_MODE = 2; |
| } |
| optional OS os = 1; |
| optional EntryPoint entry_point = 2; |
| optional Trigger trigger = 3; |
| optional StartUpResult start_up_result = 4; |
| optional string studio_version = 5; |
| optional string jdk_modified = 6; |
| optional string kotlin_modified = 7; |
| repeated string disabled_plugins = 8; |
| repeated string vmoptions_modified = 9; |
| } |
| |
| message TSdkUAEvent { |
| oneof content { |
| StateUpdate state_update = 1; |
| FilterRun filter_run = 2; |
| UserMotion user_motion = 3; |
| } |
| |
| message StateUpdate { |
| optional uint64 timestamp_ms = 1; |
| // The version of `active_steps`'s interpretation (step <-> bit index) |
| optional uint32 mapping_version = 2; |
| // The encoding of which step is active/inactive, as a bitvector |
| optional bytes active_steps = 3; |
| // The type of state update this entry is |
| optional Type type = 4; |
| // What does this state update describe? |
| enum Type { |
| UNSPECIFIED_TYPE = 0; |
| // The finalized initial state |
| INIT = 1; |
| // A post-init step completion change |
| DELTA = 2; |
| } |
| } |
| |
| message FilterRun { |
| optional uint32 filter_id = 1; |
| optional uint32 filter_version = 2; |
| optional uint32 elapsed_ms = 3; |
| oneof result { |
| uint32 count = 4; |
| Problem problem = 5; |
| } |
| optional Origin origin = 6; |
| enum Problem { |
| UNSPECIFIED_PROBLEM = 0; |
| TIMEOUT = 1; |
| ERROR = 2; |
| } |
| // What kicked off this filter run? |
| enum Origin { |
| UNSPECIFIED_ORIGIN = 0; |
| // The "run all filters at assistant open" behavior |
| RUN_ON_START = 1; |
| // The user pressed a "rerun filter" button |
| RERUN_BUTTON = 2; |
| } |
| } |
| |
| // Tracking user movement through the assistant |
| message UserMotion { |
| oneof motion { |
| Opened opened = 1; |
| Closed closed = 2; |
| } |
| // User opened part of the assistant |
| message Opened { |
| optional string block_id = 1; |
| } |
| // User closed part of the assistant w/ how long they were there |
| message Closed { |
| optional string block_id = 1; |
| optional uint64 elapsed_ms = 2; |
| } |
| } |
| } |
| |
| message IntelliJNewUIState { |
| // Indicates whether the user has enabled the new IntelliJ UI |
| optional bool is_enabled = 1; |
| } |
| |
| message KotlinGradlePerformance { |
| enum FirUsage { |
| UNSPECIFIED = 0; |
| NONE = 1; |
| PARTIAL = 2; |
| TOTAL = 3; |
| } |
| |
| // Indicates whether FIR usage is total, partial, or none |
| optional FirUsage use_fir = 1; |
| optional string kotlin_api_version = 2; // e.g. 1.5.0 |
| optional string kotlin_compiler_version = 3; // e.g. 1.8.0 |
| optional string kotlin_language_version = 4; // e.g. 1.5.0 |
| optional string kotlin_stdlib_version = 5; // e.g.1.8.0 |
| optional string plugin_version = 6; // e.g.223-18.0-release |
| // Flags to indicate the presence of common compiler plugins |
| optional bool enabled_compiler_plugin_all_open = 7; |
| optional bool enabled_compiler_plugin_atomicfu = 8; |
| optional bool enabled_compiler_plugin_jpa_support = 9; |
| optional bool enabled_compiler_plugin_lombok = 10; |
| optional bool enabled_compiler_plugin_no_arg = 11; |
| optional bool enabled_compiler_plugin_parcelize = 12; |
| optional bool enabled_compiler_plugin_sam_with_receiver = 13; |
| // Indicates usage of Kotlin script |
| optional bool kts_used = 14; |
| } |
| |
| message BuildOutputDownloadsInfoEvent { |
| enum View { |
| UNKNOWN_VIEW = 0; |
| SYNC_VIEW = 1; |
| BUILD_VIEW = 2; |
| } |
| enum Interaction { |
| UNKNOWN_INTERACTION = 0; |
| OPEN_DOWNLOADS_INFO_UI = 1; |
| CLICK_LEARN_MORE_LINK = 2; |
| SELECT_REPOSITORY_ROW = 3; |
| NOTIFICATION_TRIGGERED = 4; |
| NOTIFICATION_LINK_CLICK = 5; |
| } |
| |
| optional View view = 1; |
| optional Interaction interaction = 2; |
| // 'true' if this build/sync already finished, 'false' if still running |
| optional bool build_finished = 3; |
| // Indicates time of this event in ms since this build/sync started |
| optional uint32 ms_since_build_start = 4; |
| } |
| |
| message SmlResponseMetadata { |
| // Trace id (provided by the server) for this response |
| optional int64 rpc_global_id = 1; |
| |
| // AIDA server-side experiment ids. |
| repeated int32 server_experiment_ids = 2; |
| } |
| |
| message SmlCompletionEvent { |
| // DEPRECATED Use CompletionAggregateEvent instead |
| message CompletionRequest { |
| option deprecated = true; |
| |
| enum Trigger { |
| UNKNOWN = 0 [deprecated = true]; |
| USER = 1 [deprecated = true]; |
| AUTOMATIC = 2 [deprecated = true]; |
| } |
| |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional Trigger trigger = 1 [deprecated = true]; |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional EditorFileType file_type = 2 [deprecated = true]; |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional uint32 prefix_length = 3 [deprecated = true]; |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional uint32 suffix_length = 4 [deprecated = true]; |
| } |
| |
| // DEPRECATED Use CompletionAggregateEvent instead |
| message CompletionError { |
| option deprecated = true; |
| |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional int32 status_code = 1 [deprecated = true]; |
| } |
| |
| // DEPRECATED Use CompletionAggregateEvent instead |
| message CompletionResult { |
| option deprecated = true; |
| |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional SmlResponseMetadata metadata = 1 [deprecated = true]; |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional uint64 latency_ms = 2 [deprecated = true]; |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional int32 num_completions = 3 [deprecated = true]; |
| } |
| |
| // DEPRECATED Use CompletionAggregateEvent instead |
| message CompletionResponse { |
| option deprecated = true; |
| |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional CompletionResult result = 1 [deprecated = true]; |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional CompletionError backend_error = 2 [deprecated = true]; |
| } |
| |
| // DEPRECATED Use CompletionAggregateEvent instead |
| message CompletionShown { |
| option deprecated = true; |
| |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional SmlResponseMetadata metadata = 1 [deprecated = true]; |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional int32 shown_suggestion_index = 2 [deprecated = true]; |
| } |
| |
| // DEPRECATED Use CompletionAggregateEvent instead |
| message CompletionAccepted { |
| option deprecated = true; |
| |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional SmlResponseMetadata metadata = 1 [deprecated = true]; |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional int32 accepted_suggestion_index = 2 [deprecated = true]; |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| optional int32 accepted_suggestion_length = 3 [deprecated = true]; |
| } |
| |
| message CompletionAggregateEvent { |
| enum Trigger { |
| UNKNOWN = 0; |
| |
| // User explicitly triggered completion |
| USER = 1; |
| |
| // Completion was automatically triggered |
| AUTOMATIC = 2; |
| } |
| |
| optional string model_id = 1; |
| optional Trigger trigger = 2; |
| optional EditorFileType file_type = 3; |
| optional uint32 completions_shown = 4; |
| optional uint32 completions_accepted = 5; |
| optional Histogram latencies_ms = 6; |
| optional Histogram not_accepted_shown_durations_ms = 7; |
| } |
| |
| oneof completion { |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| CompletionRequest request = 1 [deprecated = true]; |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| CompletionResponse response = 2 [deprecated = true]; |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| CompletionShown shown = 3 [deprecated = true]; |
| // Historical: Not used starting with Android Studio 2023.2.1.11 |
| CompletionAccepted accepted = 4 [deprecated = true]; |
| CompletionAggregateEvent aggregate = 5; |
| } |
| } |
| |
| message SmlTransformEvent { |
| message TransformRequest { |
| // Full file size if it's attached to a request. |
| // In case of multiple files it would be a sum of all sizes. |
| optional uint32 context_length = 1; |
| // A size of a code snippet passed to models: |
| // It could be a user selection in case of simple transform, |
| // or a region extended to the closest declaration. |
| optional uint32 selection_length = 2; |
| } |
| |
| message TransformResult { |
| optional SmlResponseMetadata metadata = 1; |
| optional uint64 latency_ms = 2; |
| optional int32 num_transformations = 3; |
| } |
| |
| message TransformError { |
| optional int32 status_code = 1; |
| } |
| |
| message TransformResponse { |
| oneof response { |
| TransformResult result = 1; |
| TransformError backend_error = 2; |
| } |
| } |
| |
| message TransformShown { |
| optional SmlResponseMetadata metadata = 1; |
| } |
| |
| message TransformAccepted { |
| optional SmlResponseMetadata metadata = 1; |
| } |
| |
| oneof transform { |
| TransformRequest request = 1; |
| TransformResponse response = 2; |
| TransformShown shown = 3; |
| TransformAccepted accepted = 4; |
| } |
| |
| enum TransformKind { |
| UNKNOWN = 0; |
| CUSTOM = 1; |
| DOCUMENT = 2; |
| } |
| |
| // The kind of transform, which will be used to differentiate |
| // metrics for Document action, Custom transforms etc. |
| optional TransformKind transform_kind = 5; |
| } |
| |
| message SmlChatBotEvent { |
| message BotResponse { |
| optional SmlResponseMetadata metadata = 1; |
| optional uint64 latency_ms = 2; |
| |
| // Currently, fact retrieval is a different API from the chat API. But |
| // retrieval's only use is for the chat API, so here we model it as part |
| // of the chat event since we'll very likely want to associate it with |
| // the corresponding chat event. (Note that retrieval by itself doesn't |
| // have a trace id, so including it here allows us to associate it with the |
| // chat event). |
| optional uint64 retrieval_latency_ms = 3; |
| } |
| |
| message UserFeedback { |
| optional SmlResponseMetadata metadata = 1; |
| |
| enum Sentiment { |
| UNKNOWN = 0; |
| POSITIVE = 1; |
| NEGATIVE = 2; |
| } |
| |
| optional Sentiment sentiment = 2; |
| } |
| |
| enum EntryPoint { |
| UNKNOWN = 0; |
| DOCUMENT = 1; |
| COMMENT = 2; |
| SIMPLIFY = 3; |
| EXPLAIN = 4; |
| OTHER_EDITOR = 5; |
| IDE_ERROR = 6; |
| SYNC = 7; |
| BUILD = 8; |
| CRASHLYTICS = 9; |
| PLAY_VITALS = 10; |
| LOGCAT = 11; |
| } |
| |
| message BotInvoked { |
| optional SmlResponseMetadata metadata = 1; |
| optional EntryPoint entry_point = 2; |
| } |
| |
| enum Action { |
| INVALID = 0; |
| MOVE_TO_EDITOR = 1; |
| MOVE_TO_CARET = 2; |
| MOVE_TO_NEW_FILE = 3; |
| ADD_DEPENDENCY = 4; |
| BROWSE_TOPIC = 5; |
| EXPLORE_IN_PLAYGROUND = 6; |
| MERGE_MANIFEST = 7; |
| MERGE_SUGGESTION = 9; |
| INSERT_RESOURCES = 10; |
| INSERT_NAME_SUGGESTIONS = 11; |
| } |
| |
| message ActionInvoked { |
| optional SmlResponseMetadata metadata = 1; |
| optional Action action = 2; |
| optional EditorFileType file_type = 3; |
| } |
| |
| message ActionResult { |
| optional SmlResponseMetadata metadata = 1; |
| optional Action action = 2; |
| optional EditorFileType file_type = 3; |
| optional bool success = 4; |
| } |
| |
| message DependencySuggestion { |
| optional SmlResponseMetadata metadata = 1; |
| optional bool accepted = 2; |
| } |
| |
| enum Command { |
| CMD_OTHER = 0; |
| CMD_ABOUT = 1; |
| CMD_HELP = 2; |
| CMD_CLEAR = 3; |
| CMD_HISTORY = 4; |
| CMD_CLOSE = 5; |
| CMD_SCREENSHOT = 6; |
| CMD_SAVE = 7; |
| CMD_ME = 8; |
| CMD_EDIT = 9; |
| CMD_UNDO = 10; |
| CMD_REDO = 11; |
| CMD_FORMAT = 12; |
| CMD_RENAME = 13; |
| CMD_BUILD = 14; |
| CMD_RUN = 15; |
| CMD_DEBUG = 16; |
| CMD_PROFILE = 17; |
| CMD_TEST = 18; |
| CMD_STOP = 19; |
| CMD_SYNC = 20; |
| CMD_TERMINAL = 21; |
| CMD_SPLIT = 22; |
| CMD_UNSPLIT = 23; |
| CMD_OPEN = 24; |
| CMD_GOTOTEST = 25; |
| } |
| |
| message SlashAction { |
| optional Command command = 1; |
| } |
| |
| message ParseResult { |
| optional SmlResponseMetadata metadata = 1; |
| optional EditorFileType file_type = 2; |
| // success indicates that the code snippet was able to be parsed |
| // without throwing any errors, e.g. PSI related exceptions. |
| optional bool success = 3 [deprecated = true]; |
| // has_error indicates that the code snippet was parsed successfully, |
| // but contains one or more syntax errors. |
| optional bool has_error = 4; |
| optional bool did_timeout = 5; |
| } |
| |
| enum CodeDomain { |
| UNDEFINED = 0; |
| COMPOSE = 1; |
| } |
| |
| enum HallucinationType { |
| OTHER = 0; |
| // covers unresolved symbols, mismatched types in calls, wrong number |
| // of parameters, wrong receiver type, etc. - anything which means the |
| // model made up an API or used one in the wrong way. |
| BAD_API = 1; |
| // covers errors that arise when the semantics of composables are not |
| // followed, like invoking a composable from a non-composable context |
| COMPOSE_SEMANTICS = 2; |
| } |
| |
| message HallucinationDetectorResult { |
| optional SmlResponseMetadata metadata = 1; |
| optional bool has_hallucination = 2; |
| optional EditorFileType file_type = 3; |
| // libraries, frameworks, or other categories applicable to the code snippet |
| repeated CodeDomain code_domains = 4 [packed = true]; |
| // types of hallucinations detected in the snippet |
| repeated HallucinationType hallucination_types = 5 [packed = true]; |
| optional bool did_timeout = 6; |
| } |
| |
| oneof content { |
| BotResponse response = 1; |
| UserFeedback user_feedback = 2; |
| ActionInvoked action_invoked = 3; |
| ActionResult action_result = 4; |
| ParseResult parse_result = 5; |
| BotInvoked bot_invoked = 6; |
| SlashAction slash_action = 7; |
| DependencySuggestion dependency_suggestion = 8; |
| HallucinationDetectorResult hallucination_detector_result = 9; |
| } |
| } |
| |
| message SmlConfigurationEvent { |
| // Whether SML features are available to this user. |
| optional bool sml_available = 1; |
| |
| // Whether this user has started Studio Bot onboarding. |
| optional bool bot_onboarding_started = 4; |
| |
| // Whether this user has completed Studio Bot onboarding. |
| optional bool bot_onboarding_completed = 5; |
| |
| // User has ML completion enabled. |
| optional bool completion_enabled = 2; |
| |
| // User has ML based fixes enabled. |
| optional bool transform_enabled = 3; |
| |
| // User agrees to sending project context with queries |
| optional bool project_context_enabled = 6; |
| } |
| |
| message SmlAiExcludeEvent { |
| // Paste into chat |
| optional bool paste_blocked = 1; |
| |
| // Editor actions (e.g. document, simplify) |
| optional bool intention_action_blocked = 2; |
| |
| // Passive editor effects/actions (e.g. transform) |
| optional bool passive_action_blocked = 3; |
| |
| // Code included as context for a query |
| optional bool context_blocked = 4; |
| } |
| |
| message SmlGeolocationEvent { |
| optional string model_id = 1; |
| optional bool check_successful = 2; |
| optional int32 grpc_error_response_code = 3; |
| } |
| |
| message SmlCompletionRequestErrorEvent { |
| optional string model_id = 1; |
| optional int32 grpc_error_response_code = 3; |
| } |
| |
| message TestScenarioEvent { |
| // Logged for every test scenario model invocation |
| message TestScenarioRequest { |
| // Length of the initial test scenario prompt |
| optional uint32 context_length = 1; |
| // Deprecated. FileType of target / selected file. |
| optional FileType target_file_type = 2 [deprecated = true]; |
| // Deprecated. FileType of generated test file |
| optional FileType test_file_type = 3 [deprecated = true]; |
| // EditorFileType of target / selected file |
| optional EditorFileType target_file_language = 4; |
| // EditorFileType of generated test file |
| optional EditorFileType test_file_language = 5; |
| } |
| |
| message InconsistentCount { |
| // This is only logged if the number of test scenarios and actual test |
| // signatures do not match. |
| optional int32 test_scenarios_count = 1; |
| optional int32 test_signatures_count = 2; |
| } |
| |
| oneof transform { |
| TestScenarioRequest request = 1; |
| InconsistentCount inconsistent_count = 2; |
| } |
| } |
| |
| // An event fired up each time a device connects |
| message DeviceConnectedNotificationEvent { |
| enum DeviceConnectionType { |
| UNKNOWN_DEVICE_CONNECTION_TYPE = 0; |
| USB = 1; |
| SOCKET = 2; |
| } |
| |
| optional DeviceConnectionType type = 1; |
| |
| // ADB's detected device maximum speed (Mbps) |
| optional uint64 max_speed_mbps = 2; |
| |
| // ADB's detected device negotiated speed (Mbps) |
| optional uint64 negotiated_speed_mbps = 3; |
| |
| // Is the notification disabled by StudioFlags |
| optional bool speed_notifications_studio_disabled = 4; |
| |
| // Is the notification disabled by user preferences |
| optional bool speed_notifications_user_disabled = 5; |
| } |
| |
| message IDeviceUsageEvent { |
| // Identifier of the `IDevice` method |
| enum Method { |
| METHOD_UNSPECIFIED = 0; |
| GET_NAME = 1; |
| EXECUTE_SHELL_COMMAND_1 = 2; |
| EXECUTE_SHELL_COMMAND_2 = 3; |
| EXECUTE_SHELL_COMMAND_3 = 4; |
| EXECUTE_SHELL_COMMAND_4 = 5; |
| EXECUTE_SHELL_COMMAND_5 = 6; |
| GET_SYSTEM_PROPERTY = 7; |
| GET_SERIAL_NUMBER = 8; |
| GET_AVD_NAME = 9; |
| GET_AVD_PATH = 10; |
| GET_AVD_DATA = 11; |
| CREATE_AVD_DATA = 12; |
| GET_STATE = 13; |
| GET_PROPERTIES = 14; |
| GET_PROPERTY_COUNT = 15; |
| GET_PROPERTY = 16; |
| ARE_PROPERTIES_SET = 17; |
| SUPPORTS_FEATURE_1 = 18; |
| SUPPORTS_FEATURE_2 = 19; |
| SERVICES = 20; |
| TO_STRING = 21; |
| IS_ONLINE = 22; |
| IS_EMULATOR = 23; |
| IS_OFFLINE = 24; |
| IS_BOOT_LOADER = 25; |
| GET_CLIENTS = 26; |
| GET_CLIENT = 27; |
| GET_PROFILEABLE_CLIENTS = 28; |
| CREATE_FORWARD_1 = 29; |
| CREATE_FORWARD_2 = 30; |
| REMOVE_FORWARD = 31; |
| GET_CLIENT_NAME = 32; |
| PUSH_FILE = 33; |
| PULL_FILE = 34; |
| INSTALL_PACKAGE_1 = 35; |
| INSTALL_PACKAGE_2 = 36; |
| INSTALL_PACKAGE_3 = 37; |
| INSTALL_PACKAGES_1 = 38; |
| INSTALL_PACKAGES_2 = 39; |
| GET_LAST_INSTALL_METRICS = 40; |
| SYNC_PACKAGE_TO_DEVICE = 41; |
| INSTALL_REMOTE_PACKAGE = 42; |
| REMOVE_REMOTE_PACKAGE = 43; |
| UNINSTALL_PACKAGE = 44; |
| UNINSTALL_APP = 45; |
| ROOT = 46; |
| FORCE_STOP = 47; |
| KILL = 48; |
| IS_ROOT = 49; |
| GET_ABIS = 50; |
| GET_DENSITY = 51; |
| GET_VERSION = 52; |
| EXECUTE_REMOTE_COMMAND_1 = 53; |
| EXECUTE_REMOTE_COMMAND_2 = 54; |
| EXECUTE_REMOTE_COMMAND_3 = 55; |
| EXECUTE_REMOTE_COMMAND_4 = 56; |
| RAW_EXEC2 = 57; |
| STAT_FILE = 58; |
| UNSUPPORTED_METHOD = 59; |
| CREATE_REVERSE = 60; |
| REMOVE_REVERSE = 61; |
| } |
| |
| // Whether this event is coming from `AdblibIDeviceWrapper` or `DeviceImpl` |
| enum SourceType { |
| SOURCE_TYPE_UNSPECIFIED = 0; |
| DEVICE_IMPL = 1; |
| ADBLIB_I_DEVICE_WRAPPER = 2; |
| } |
| |
| // 'IDevice' method |
| optional Method method = 1; |
| |
| // `IDevice` implementation |
| optional SourceType source_type = 2; |
| |
| // Whether method threw an exception |
| optional bool is_exception = 3; |
| } |
| |
| message AdbUsageEvent { |
| oneof event { |
| JdwpProcessPropertiesCollectorEvent process_properties_event = 1; |
| // Add other types of events, e.g. attaching debugger, etc |
| } |
| |
| message JdwpProcessPropertiesCollectorEvent { |
| // Whether the collection is successful |
| optional bool success = 1; |
| |
| // If failed then the type of failure |
| enum FailureType { |
| FAILURE_TYPE_UNSPECIFIED = 0; |
| |
| // No response (handshake) when trying to use a `jdwp:<pid>` command |
| // to send HELO and FEAT commands |
| NO_RESPONSE = 1; |
| |
| // Properties collection failed with ClosedChannelException |
| CLOSED_CHANNEL_EXCEPTION = 2; |
| |
| // Error like: |
| // 'closed' error on device serial #emulator-5554 executing service |
| // 'jdwp:29038' |
| // at |
| // com.android.adblib.impl.services.AdbServiceRunner.readFailResponseAndThrow |
| CONNECTION_CLOSED_ERROR = 3; |
| |
| // Other `IOException` |
| IO_EXCEPTION = 5; |
| |
| // All other errors |
| OTHER_ERROR = 4; |
| } |
| optional FailureType failure_type = 2; |
| |
| // If a property collection previously failed, specifies how many times it |
| // happened |
| optional int32 previously_failed_count = 3; |
| |
| // If a property collection previously failed, specifies the type of the |
| // last failure |
| optional FailureType previous_failure_type = 4; |
| } |
| } |
| |
| message KotlinSupportDeclined { |
| // template renderer used |
| optional AndroidStudioEvent.TemplateRenderer template_renderer = 1; |
| } |
| |
| message DeviceScreenshotEvent { |
| // The type of the device the screenshot is taken on |
| optional DeviceType device_type = 1; |
| |
| // The type of decoration used for the screenshot |
| optional DecorationOption decoration_option = 2; |
| |
| enum DeviceType { |
| UNKNOWN_DEVICE_TYPE = 0; |
| PHONE = 1; |
| WEAR = 2; |
| TV = 3; |
| } |
| |
| enum DecorationOption { |
| UNKNOWN_DECORATION_OPTION = 0; |
| RECTANGULAR = 1; |
| DISPLAY_SHAPE_CLIP = 2; |
| PLAY_COMPATIBLE = 3; |
| FRAMED = 4; |
| } |
| } |
| |
| message EditorNotification { |
| // The type of notification being displayed to the user |
| optional NotificationType notification_type = 1; |
| |
| enum NotificationType { |
| UNKNOWN = 0; |
| ESSENTIALS_MODE = 1; |
| } |
| } |
| |
| message DebuggerEvent { |
| // The event type |
| optional Type type = 1; |
| |
| optional BreakpointAdded breakpoint_added = 2; |
| |
| optional FramesViewUpdated frames_view_updated = 3; |
| |
| enum Type { |
| UNKNOWN = 0; |
| BREAKPOINT_ADDED_EVENT = 1; |
| FRAMES_VIEW_UPDATED = 2; |
| } |
| |
| message BreakpointAdded { |
| optional string type = 1; |
| optional string plugin_type = 2; |
| optional bool in_session = 3; |
| } |
| |
| message FramesViewUpdated { |
| optional uint64 duration_ms = 1; |
| optional int32 total_frames = 2; |
| repeated FileTypeInfo file_type_infos = 3; |
| |
| message FileTypeInfo { |
| optional string file_type = 1; |
| optional int32 num_frames = 2; |
| } |
| } |
| } |
| |
| message SoongSyncStats { |
| // Cause of sync |
| optional Trigger trigger = 1; |
| // Status of sync |
| optional Status status = 2; |
| // Total time of the entire sync process |
| optional int64 total_time_ms = 3; |
| // Lunch target used for sync |
| optional string lunch_target = 4; |
| // Module paths that were synced. These are paths relative |
| // to the Platform repo checkout and do not contain PII. |
| repeated string module_paths = 5; |
| |
| enum Trigger { |
| TRIGGER_UNKNOWN = 0; |
| PROJECT_OPEN = 1; |
| USER_SYNC_ACTION = 2; |
| } |
| |
| enum Status { |
| STATUS_UNKNOWN = 0; |
| SUCCESS = 1; |
| FAIL = 2; |
| CANCELLED = 3; |
| } |
| } |
| |
| message IntelliJNewUISwitch { |
| enum SwitchSource { |
| SOURCE_UNKNOWN = 0; |
| ENABLE_NEW_UI_ACTION = 1; |
| DISABLE_NEW_UI_ACTION = 2; |
| WELCOME_PROMO = 3; |
| WHATS_NEW_PAGE = 4; |
| SETTINGS_PAGE = 5; |
| } |
| |
| // Source of the new ui status switch |
| optional SwitchSource switch_source = 1; |
| |
| // updated status of new ui |
| optional bool new_ui = 2; |
| } |
| |
| message EssentialsModeEvent { |
| // when the mode was just enabled or not |
| optional bool enabled = 1; |
| } |
| |
| // Logged when a user clicks a link in a Lint warning/error tooltip in the |
| // code editor. We only do this for Lint issues where the issue vendor is |
| // Google or AOSP. |
| message LintTooltipLinkEvent { |
| // The issue id is a unique identifier for each type of coding issue found by |
| // Lint. We only log a LintTooltipLinkEvent for issues where the vendor is |
| // Google or AOSP. Examples of issue ids are "HardcodedText" and "NewApi". |
| optional string issue_id = 1; |
| |
| // The URL of the link that was clicked, which will usually be to some |
| // developer documentation or article. The URL is from the issue description. |
| // The issue description was written by us (Google) as part of the lint check. |
| // Examples of some of the URLs we link to: |
| // https://developer.android.com/guide/topics/resources/localization.html |
| // https://goo.gle/GetInstance |
| // https://krebsonsecurity.com/2021/11/trojan-source-bug-threatens-the-security-of-all-code/ |
| optional string url = 2; |
| } |
| |
| message RenderSecurityManagerEvent { |
| enum Type { |
| TYPE_UNKNOWN = 0; |
| // A RenderSecurityManager was manually disabled by the user. |
| USER_DISABLED = 1; |
| // A security exception was raised to prevent using a resource. |
| RESOURCE_USAGE_DENIED = 2; |
| // A resource was used and a warning was logged in the Studio log. |
| // This is used in cases where the usage should be denied but it is not |
| // at the moment because of limitations of the implementation, for example, |
| // thread creation. |
| RESOURCE_USAGE_WARNING = 3; |
| } |
| |
| // The resource id that is trigger this security event when type is |
| // RESOURCE_USAGE_DENIED or RESOURCE_USAGE_WARNING. Example of resource ids |
| // are "Read", "Property" or "Clipboard". |
| optional Type type = 1; |
| optional string resource = 2; |
| } |
| |
| message AdbServerState { |
| enum MDNDBackend { |
| TYPE_MDNS_UNKNOWN = 0; |
| TYPE_MDNS_DEFAULT = 1; |
| TYPE_BONJOUR = 2; |
| TYPE_OPENSCREEN = 3; |
| } |
| |
| enum USBBackend { |
| TYPE_USB_UNKNOWN = 0; |
| TYPE_USB_DEFAULT = 1; |
| TYPE_LIBUSB = 2; |
| TYPE_NATIVE = 3; |
| } |
| |
| optional bool is_managed = 1; |
| optional string version = 2; |
| optional MDNDBackend mdns_backend = 3; |
| optional USBBackend usb_backend = 4; |
| } |
| |
| message ScreenshotTestComposePreviewEvent { |
| enum Type { |
| TYPE_UNKNOWN = 0; |
| PREVIEW_DISCOVERY = 1; |
| PREVIEW_RENDERING = 2; |
| } |
| |
| optional Type type = 1; |
| |
| message PreviewDiscovery { |
| // Number of processed java classes by preview annotation detector. |
| optional uint32 num_processed_classes = 1; |
| // Duration of the building multipreview in milliseconds. |
| optional uint64 duration_building_multipreview_ms = 2; |
| } |
| |
| // This message is populated when the type is PREVIEW_DISCOVERY. |
| optional PreviewDiscovery preview_discovery = 2; |
| |
| message PreviewRendering { |
| // Number of rendered images. This number includes failed rendering attempts |
| // that yields a blank image. |
| optional uint32 num_rendered_images = 1; |
| // Duration of the rendering previews in milliseconds. |
| optional uint64 duration_rendering_previews_ms = 2; |
| // Number of rendering attempts that succeeded. |
| optional uint32 num_rendering_succeeded = 3; |
| // Number of rendering attempts that failed. |
| optional uint32 num_rendering_errors = 4; |
| // Number of rendering attempts that succeeded with warning. |
| optional uint32 num_rendering_warnings = 5; |
| } |
| |
| // This message is populated when the type is PREVIEW_RENDERING. |
| optional PreviewRendering preview_rendering = 3; |
| } |
| |
| message FirebaseManagementEvent { |
| enum FirebaseManagementEventType { |
| UNKNOWN_EVENT = 0; |
| // User created a new firebase cloud project during login process |
| CREATE_FIREBASE_PROJECT = 1; |
| } |
| |
| message CreateFirebaseProjectDetails { |
| enum CreateFirebaseProjectState { |
| UNKNOWN = 0; |
| // Started the firebase project creation task |
| STARTED = 1; |
| // User did not accepted the term of service before |
| TOS_NEEDED = 2; |
| // User accepted the term of service |
| TOS_ACCEPTED = 3; |
| // Firebase project created |
| CREATED = 4; |
| // Failed to create the firebase project |
| FAILED = 5; |
| } |
| optional CreateFirebaseProjectState state = 1; |
| } |
| |
| optional FirebaseManagementEventType type = 1; |
| // Client-side salted, sha256 of firebase project ID with salt rotated every |
| // 28 days |
| optional string project_id = 2; |
| // Set when type = CREATE_FIREBASE_PROJECT |
| optional CreateFirebaseProjectDetails create_firebase_project_details = 3; |
| } |