| syntax = "proto2"; |
| |
| option java_package = "com.google.wireless.android.sdk.stats"; |
| option java_outer_classname = "AndroidStudioStats"; |
| |
| // IntelliJ gets realy 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. |
| // 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 |
| 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 |
| optional EmulatorUiEvent emulator_ui_event = 25; |
| |
| // 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 28 days), sha256 of the project id. |
| // set when kind = PROJECT_STRUCTURE_* or kind = APK_ANALYZER_STATS |
| 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 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_RENDER |
| // 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 |
| optional WhatsNewAssistantEvent whats_new_assistant_event = 60; |
| |
| // 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; |
| |
| 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; |
| // 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; |
| } |
| |
| // 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; |
| // 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. |
| 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 |
| WHATS_NEW_ASSISTANT_EVENT = 130; |
| |
| // 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; |
| } |
| |
| // 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; |
| 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; |
| RES_FOLDER = 31; |
| ANDROID_TV_ACTIVITY = 32; |
| BLANK_WEAR_ACTIVITY = 33; |
| BASIC_ACTIVITIY = 34; |
| APP_WIDGET = 35; |
| ANDROID_INSTANT_APP_PROJECT = 36; |
| ANDROID_INSTANT_APP_MODULE = 37; |
| ANDROID_INSTANT_APP_BUNDLE_PROJECT = 38; |
| ANDROID_INSTANT_APP_DYNAMIC_MODULE = 39; |
| } |
| |
| // 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; |
| 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; |
| } |
| |
| // IDE brand containing the android plugin |
| enum IdeBrand { |
| UNKNOWN_IDE_BRAND = 0; |
| ANDROID_STUDIO = 1; |
| ANDROID_STUDIO_WITH_BLAZE = 2; |
| INTELLIJ = 3; |
| } |
| |
| // 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; |
| |
| TYPE_DEPRECATED_CONFIGURATION = 29; |
| |
| // Indicates that the project uses a deprecated DSL. |
| TYPE_DEPRECATED_DSLVALUE = 30; |
| |
| // 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; |
| } |
| |
| // 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; |
| } |
| } |
| |
| // 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 archtecture 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; |
| |
| // 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; |
| } |
| |
| // Chip the software is running on. |
| enum CpuArchitecture { |
| UNKNOWN_CPU_ARCHITECTURE = 0; |
| X86 = 1; |
| X86_64 = 2; |
| } |
| |
| // 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; |
| } |
| } |
| |
| // 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; |
| |
| // 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 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; |
| } |
| } |
| |
| 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 sesssion. |
| 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; |
| } |
| |
| 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; |
| } |
| |
| // 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 { |
| optional bool gps = 1; |
| optional bool sensors = 2; |
| optional bool virtualscene_config = 3; |
| optional bool container_launch = 4; |
| } |
| |
| // 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; |
| } |
| // 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; |
| // Next tag: 11 |
| } |
| // 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 timespamp. |
| 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; |
| } |
| |
| // 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; |
| IGNORE_HOST_OPENGL_ERRORS = 21; |
| 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; |
| // Next tag: 59 |
| } |
| // 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 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 grpc invocations. |
| message EmulatorGrpc { |
| // 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; |
| } |
| |
| // 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 featurs. |
| 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; |
| // Next tag: 34 |
| |
| // 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 |
| GVM = 6; // GVM |
| // Next tag: 7 |
| } |
| } |
| |
| // 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; |
| } |
| } |
| |
| 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; |
| } |
| |
| // 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; |
| } |
| |
| // 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; |
| } |
| |
| // 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 various native build systems we support to be used from Gradle. |
| enum NativeBuildSystemType { |
| UNKNOWN_NATIVE_BUILD_SYSTEM_TYPE = 0; |
| // The Gradle epxerimental 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; |
| } |
| } |
| |
| // 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; |
| } |
| |
| optional JniInspectionType type = 1; |
| } |
| |
| // 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; |
| |
| // 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; |
| } |
| |
| // How instrumentation tests will be run |
| enum TestExecution { |
| UNKNOWN_TEST_EXECUTION = 0; |
| HOST = 1; |
| ANDROID_TEST_ORCHESTRATOR = 2; |
| } |
| } |
| |
| // Provides details on commonly used test libraries. |
| // Each string field of this message holds the exact version of the given |
| // library that the field name represents. The field is populated only if this |
| // project uses the given library. |
| // Next ID: 20 |
| message TestLibraries { |
| // "com.android.support.test.runner" or "androidx.test.runner". |
| optional string test_support_library_version = 1; // e.g. '0.5' |
| optional string espresso_version = 2; // e.g. '2.2.2' |
| optional string robolectric_version = 3; // e.g. '3.0' |
| optional string mockito_version = 4; // e.g. '1.10.19' |
| optional string espresso_contrib_version = 5; // e.g. '2.2.2' |
| optional string espresso_web_version = 6; // e.g. '2.2.2' |
| optional string espresso_intents_version = 7; // e.g. '2.2.2' |
| optional string espresso_idling_resource_version = 8; // e.g. '2.2.2' |
| optional string espresso_accessibility_version = 9; // e.g. '2.2.2' |
| optional string test_orchestrator_version = 10; // e.g. '1.0.0' |
| optional string test_rules_version = 11; // e.g. '1.0.0' |
| // "androidx.test.core". |
| optional string test_core_version = 12; // e.g. '1.0.0' |
| // "androidx.test.core-ktx". |
| optional string test_core_ktx_version = 13; // e.g. '1.0.0' |
| // "androidx.test.ext.junit". |
| optional string test_ext_junit_version = 14; // e.g. '1.0.0' |
| // "androidx.test.ext.junit-ktx". |
| optional string test_ext_junit_ktx_version = 15; // e.g. '1.0.0' |
| // "androidx.test.ext.truth". |
| optional string test_ext_truth_version = 16; // e.g. '1.0.0' |
| // "androidx.fragment.fragment-testing". |
| optional string fragment_testing_version = 17; // e.g. '1.0.0' |
| optional string junit_version = 18; // e.g. '4.2' |
| // "com.google.truth". |
| optional string truth_version = 19; // e.g. '0.40' |
| } |
| |
| // 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; |
| } |
| |
| 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; |
| |
| 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; |
| } |
| |
| 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; |
| } |
| } |
| |
| // 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 explictly 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 explictly 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 explictly 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; |
| } |
| |
| // 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 comprensive 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; |
| |
| // 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; |
| } |
| |
| // 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 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; |
| |
| 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; |
| } |
| } |
| |
| // 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; |
| 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() |
| optional bool did_work = 2; |
| |
| // Whether the task was skipped (TaskState#getSkipped()) |
| optional bool skipped = 3; |
| |
| // Whether the task was up to date (TaskState#getUpToDate()) |
| optional bool up_to_date = 4; |
| |
| // Whether the task failed |
| optional bool failed = 5; |
| } |
| |
| 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 |
| optional int32 type = 1; |
| |
| // 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; |
| } |
| |
| 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 invocated 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 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; |
| // Densitiy 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; |
| } |
| |
| // 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 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; |
| } |
| |
| // 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; |
| } |
| |
| // 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; |
| } |
| |
| // 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; |
| } |
| |
| // 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; |
| } |
| |
| // 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; |
| } |
| |
| // Details for navigation editor events |
| message NavEditorEvent { |
| enum NavEditorEventType { |
| UNKNOWN_EVENT_TYPE = 0; |
| |
| OPEN_FILE = 1; |
| |
| SELECT_DESIGN_TAB = 2; |
| SELECT_XML_TAB = 3; |
| |
| 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; |
| |
| ZOOM_IN = 30; |
| ZOOM_OUT = 31; |
| ZOOM_FIT = 32; |
| |
| CUT = 33; |
| COPY = 34; |
| PASTE = 35; |
| |
| // next index: 39 |
| } |
| |
| 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; |
| } |
| |
| 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; |
| } |
| 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; |
| } |
| |
| // 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; |
| |
| // UI event source. |
| enum EventSource { |
| 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 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; |
| } |
| } |
| |
| // 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 recroding, 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 O+ |
| ATRACE = 3; |
| } |
| |
| 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 |
| STOP_CAPTURING_FAILURE = 2; |
| // The capture data sent back to us could not be parsed successfully |
| PARSING_FAILURE = 3; |
| // User aborted parsing the trace after being notified it was too large |
| USER_ABORTED_PARSING = 4; |
| // There was an error while preprocessing the trace file |
| PREPROCESS_FAILURE = 5; |
| } |
| |
| // 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; |
| } |
| |
| // 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; |
| } |
| |
| // 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; |
| } |
| |
| // 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 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; |
| } |
| |
| // 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 superceded 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; |
| |
| 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; |
| } |
| |
| enum MemoryHeap { |
| UNKNOWN_HEAP = 0; |
| |
| DEFAULT_HEAP = 1; |
| IMAGE_HEAP = 2; |
| ZYGOTE_HEAP = 3; |
| APP_HEAP = 4; |
| JNI_HEAP = 5; |
| } |
| |
| 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; |
| |
| /// General |
| |
| CHANGE_DEVICE = 101; |
| CHANGE_PROCESS = 102; |
| GO_BACK = 103; |
| SELECT_MONITOR = 104; |
| ZOOM_IN = 105; |
| ZOOM_OUT = 106; |
| ZOOM_RESET = 107; |
| 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; |
| |
| /// 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; |
| |
| /// 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| |
| |
| /// 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; |
| |
| /// 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; |
| } |
| } |
| |
| // 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; |
| |
| // 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; |
| // 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; |
| // 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; |
| // 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; |
| // 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; |
| } |
| |
| // 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; |
| } |
| } |
| |
| // 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; |
| } |
| |
| // 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; |
| } |
| |
| // 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; |
| } |
| |
| // 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 |
| message WhatsNewAssistantEvent { |
| 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; |
| } |
| |
| // 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 |
| ABORT = 3; |
| } |
| |
| 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; |
| } |
| |
| 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 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; |
| } |
| |
| // Statistics regarding IntelliJ project sizes |
| message IntellijProjectSizeStats { |
| enum FileType { |
| UNKNOWN_FILE_TYPE = 0; |
| JAVA = 1; |
| XML = 2; |
| DOT_CLASS = 3; |
| KOTLIN = 4; |
| } |
| // 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; |
| } |
| 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; |
| } |
| // Id of the tool window |
| // e.g. 'Assistant' |
| optional string tool_window_id = 1; |
| |
| optional EventType event_type = 2; |
| } |
| |
| // 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 fileds, 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; |
| |
| // 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; |
| } |
| |
| // All of the 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; |
| |
| /// These are set when the message is a |DATA_BINDING_BUILD_EVENT| |
| // # 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; |
| |
| // 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; |
| } |
| } |
| } |
| |
| enum EditorFileType { |
| UNKNOWN = 0; |
| JAVA = 1; |
| KOTLIN = 2; |
| XML = 3; |
| GROOVY = 4; |
| PROPERTIES = 5; |
| JSON = 6; |
| KOTLIN_SCRIPT = 7; // .kts |
| NATIVE = 8; // .c, .cpp, .h, etc. |
| } |
| |
| 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; |
| } |
| |
| message EditorHighlightingStats { |
| message Stats { |
| optional EditorFileType file_type = 1; |
| // Highlighting latencies in milliseconds. |
| optional Histogram histogram = 2; |
| } |
| repeated Stats by_file_type = 1; |
| } |
| |
| // Details of events relating to the Android Studio Patch Updater |
| message StudioPatchUpdaterEvent { |
| //Removed as uses reserved words when building with mingw |
| } |
| |
| // 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; |
| |
| // 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 hide libraries assets |
| LIBRARIES_SHOWN = 7; |
| LIBRARIES_HIDDEN = 8; |
| |
| // 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; |
| } |
| |
| // 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; |
| } |
| } |
| |
| 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; |
| ALL_EXCLUDED = 2; |
| SOME_EXCLUDED = 3; |
| NONE_EXCLUDED = 4; |
| } |
| } |