blob: 3d01246473b813dacff656c0a8c3cabe7b4769c5 [file] [log] [blame]
// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.
// Generated by //wireless/android/play/playlog/tools:strip_proto_file
// from logs/proto/wireless/android/sdk/stats/studio_stats.proto
// Regenerate by running
// blaze build //logs/proto/wireless/android/sdk/stats:studio_stats_stripped
// NOTE: Do not use oneof in this proto as we need to compile it with the
// open source 2.5 version of the protobuf compiler for Android Studio which
// does not support the oneof feature.
syntax = "proto2";
package android_studio;
option java_package = "com.google.wireless.android.sdk.stats";
option java_outer_classname = "AndroidStudioStats";
message AndroidStudioEvent {
// 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.
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.
PROFILING = 5;
// The event is related to Performance Monitoring.
MONITOR = 6;
// 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.
// (http://go/studio-app-indexing)
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.
GPU_PROFILER = 21;
// the event is related to the test recorder (Cassette)
TEST_RECORDER = 22;
// the event is related to the Android Studio UI.
STUDIO_UI = 23;
}
// 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.
MONITOR_ACTIVATED = 14;
// Performance monitoring is running.
MONITOR_RUNNING = 15;
// 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;
// Native debugger session has failed.
LLDB_SESSION_FAILED = 29;
// Native debugger session has completed successfully.
LLDB_SESSION_COMPLETED = 30;
// 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 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 failed as the project is missing espresso dependencies.
TEST_RECORDER_MISSING_ESPRESSO_DEPENDENCIES = 93;
// The test recorder failed as the instrumentation test folder is missing.
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;
}
// 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;
}
// 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;
}
// Describes a group of event kinds related to each other.
// Necessary only for events that were originally being reported to Google
// Analytics (GA).
optional .android_studio.AndroidStudioEvent.EventCategory category = 1;
// Specific kind of event, primary separation key of all Android Studio
// related events.
optional .android_studio.AndroidStudioEvent.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;
// set when kind = STUDIO_PING
// or kind = EMULATOR_PING
// or ANDROID_STUDIO_TEST
// or ANDROID_STUDIO_THROUGH_GRADLE
optional .android_studio.ProductDetails product_details = 4;
// set when kind = MONITOR_ACTIVATED or kind = MONITOR_RUNNING
optional .android_studio.AndroidStudioEvent.MonitorType monitor_type = 5;
// set when kind = MONITOR_RUNNING
optional bool monitor_paused = 6;
// set when kind = PROFILING_OPEN or PROFILING_CAPTURE
optional .android_studio.AndroidStudioEvent.ProfilerCaptureType profiler_capture_type = 7;
// 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;
// set when kind = LLDB_SESSION_STARTED
optional .android_studio.AndroidStudioEvent.RunConfigurationType run_configuration_type = 10;
// set when kind = LLDB_SESSION_STARTED
optional .android_studio.AndroidStudioEvent.DebuggerType debugger_type = 11;
// 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
optional .android_studio.DeviceInfo device_info = 12;
// set when kind = LLDB_SESSION_FAILED or 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 .android_studio.AndroidStudioEvent.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
optional .android_studio.AndroidStudioEvent.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 .android_studio.AndroidStudioEvent.TemplateRenderer template_renderer = 18;
// set when kind = STUDIO_CRASH
optional .android_studio.StudioCrash studio_crash = 19;
// set when kind = GRADLE_BUILD_DETAILS
optional .android_studio.GradleBuildDetails gradle_build_details = 20;
// set when kind = INSTANT_RUN
optional .android_studio.InstantRun instant_run = 21;
// set when kind = META_METRICS
optional .android_studio.MetaMetrics meta_metrics = 22;
// set when kind = EMULATOR_PING
optional .android_studio.EmulatorDetails emulator_details = 23;
// set when kind = TEST_RUN
optional .android_studio.TestRun test_run = 24;
// set when kind = EMULATOR_UI_EVENT
optional .android_studio.EmulatorUiEvent emulator_ui_event = 25;
// set when kind = HYPERVISOR
optional .android_studio.Hypervisor hypervisor = 26;
// set when kind = EMULATOR_HOST
optional .android_studio.EmulatorHost emulator_host = 27;
// set when kind = GRADLE_BUILD_PROFILE
optional .android_studio.GradleBuildProfile gradle_build_profile = 28;
// set when kind = LLDB_FRONTEND_EXITED
optional .android_studio.LLDBFrontendDetails lldb_frontend_details = 29;
// set when kind = FIREBASE_ASSISTANT_ERROR_PRESENTED or
// kind FIREBASE_ASSISTANT_SILENT_ERROR
optional .android_studio.FirebaseErrorDetails firebase_error_details = 30;
// Client-side salted (rotating every 28 days), sha256 of the project id.
// set when kind = PROJECT_STRUCTURE_*.
optional string project_id = 31;
// set when kind = GFX_TRACE_*
optional .android_studio.GfxTracingDetails gfx_tracing_details = 32;
// set when kind = TEST_RECORDER_GENERATE_TEST_CLASS
optional .android_studio.TestRecorderDetails test_recorder_details = 33;
// set when kind = STUDIO_UI_ACTION_STATS
optional .android_studio.UIActionStats ui_action_stats = 34;
// set when kind = STUDIO_PING
optional .android_studio.MachineDetails machine_details = 35;
// set when kind = STUDIO_PING
optional .android_studio.JvmDetails jvm_details = 36;
// set when kind = STUDIO_PROCESS_STATS
optional .android_studio.JavaProcessStats java_process_stats = 37;
// set when kind = STUDIO_PERFORMANCE_STATS
optional .android_studio.StudioPerformanceStats studio_performance_stats = 38;
}
// Describes a product, e.g. Android Studio or Emulator.
message ProductDetails {
// 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;
}
// Describes the various OS platforms our products run on.
enum OSKind {
UNKNOWN_OS_KIND = 0;
OTHER_OS = 1;
// Known but not in our list.
WINDOWS = 2;
MAC_OSX = 3;
LINUX = 4;
FREE_BSD = 5;
}
// Chip the software is running on.
enum CpuArchitecture {
UNKNOWN_CPU_ARCHITECTURE = 0;
X86 = 1;
X86_64 = 2;
}
// The product this event relates to.
optional .android_studio.ProductDetails.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;
// The CPU archtecture the product is running on.
optional .android_studio.ProductDetails.CpuArchitecture os_architecture = 5;
// The state in the software lifecycle of this product.
optional .android_studio.ProductDetails.SoftwareLifeCycleChannel channel = 6;
}
// Describes a emulator or physical Android Device.
message DeviceInfo {
// 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;
}
// 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'
// TODO(jvg): ask loglaunch folks: ST_SOFTWARE_ID datapol?
optional string build_tags = 2;
// Type of build this device is running.
// e.g. 'user' or 'userdebug' or 'eng' or 'alphabuild'
// TODO(jvg): ask loglaunch folks: ST_SOFTWARE_ID datapol?
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 .android_studio.DeviceInfo.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 .android_studio.DeviceInfo.DeviceType device_type = 9;
// android api level e.g. '23' or 'N'
optional string build_api_level_full = 10;
}
// 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;
}
// 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;
}
// Metrics related to the Emulator.
message EmulatorDetails {
// 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;
ERROR_IN_EMULATOR_RENDERER = 255;
}
// Cpu architecture of the guest.
optional .android_studio.EmulatorDetails.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 .android_studio.EmulatorDetails.EmulatorAdbLiveness adb_liveness = 11;
// Information about the gl implementation in the guest image.
optional .android_studio.EmulatorGuestGlInfo guest_gl = 12;
// Information about the host GPUs (one per GPU).
repeated .android_studio.EmulatorGpuInfo host_gpu = 13;
// The "phase" of an emulator session where crash happened.
optional .android_studio.EmulatorDetails.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 .android_studio.EmulatorDetails.EmulatorRenderer renderer = 16;
// Flags for the used featurs.
optional .android_studio.EmulatorFeatures used_features = 17;
}
// Describes a user clicking on some part of the Emulator UI.
message EmulatorUiEvent {
// 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;
}
// Tracks the context of the Emulator UI.
enum EmulatorUiEventContext {
UNKNOWN_EMULATOR_UI_EVENT_CONTEXT = 0;
EXTENDED_WINDOW_OPEN = 1;
}
// Id of the UI element, baked in the emulator binary.
// TODO(jvg): ask logs ticket folks what kind of datapol annotation
// it is not freeform, but we cannot make this an enum
optional string element_id = 1;
// The type of UI event
optional .android_studio.EmulatorUiEvent.EmulatorUiEventType type = 2;
// The current context of the event.
optional .android_studio.EmulatorUiEvent.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;
}
// 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 .android_studio.GradleLibrary libraries = 6;
// per module metrics.
repeated .android_studio.GradleModule modules = 7;
// per android module metrics.
repeated .android_studio.GradleAndroidModule android_modules = 8;
// per native android module metrics
repeated .android_studio.GradleNativeAndroidModule native_android_modules = 9;
}
// 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 {
// 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;
}
// 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 .android_studio.GradleNativeAndroidModule.NativeBuildSystemType build_system_type = 3;
}
// Metrics on InstantRun usage.
message InstantRun {
// 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;
}
// 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;
}
// What kind of Instant Run deployment was chosen.
optional .android_studio.InstantRun.InstantRunDeploymentKind deployment_kind = 1;
// what was the reason for chosing that kind of deployment from the gradle
// side.
optional .android_studio.InstantRun.InstantRunBuildCause instant_run_build_cause = 3;
// 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 .android_studio.InstantRun.InstantRunIdeBuildCause ide_build_cause = 6;
}
// 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.
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;
}
// Describes how tests where invoked.
optional .android_studio.TestRun.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 .android_studio.TestRun.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 .android_studio.TestLibraries test_libraries = 7;
}
// Provides details on commonly used test libraries.
message TestLibraries {
// The exact version of the given library that this project uses.
// Not present if project doesn't use a given library.
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'
}
// Describes the status of various Hypervisors
message Hypervisor {
// 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)
}
optional .android_studio.Hypervisor.HyperVState hyper_v_state = 1;
}
// 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;
}
// 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
optional int64 gc_count = 12;
// The time spent garbage collecting during this build.
optional int64 gc_time = 13;
// The projects that make up this multi-project build.
repeated .android_studio.GradleBuildProject project = 14;
// Samples of the memory state of the daemon during the build.
repeated .android_studio.GradleBuildMemorySample memory_sample = 15;
// The fine-grained execution spans which record granular timings.
repeated .android_studio.GradleBuildProfileSpan span = 16;
// For instant run builds: the resulting instant run build info.
optional .android_studio.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 permenant pseudonymous
// identifier. It is anonymized and is unique per user, but has a 1-N
// relation.
optional string project_id = 18;
}
message GradleBuildProject {
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;
}
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;
}
// 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 .android_studio.GradleBuildProject.PluginType android_plugin = 3;
// Which plugin generation is used.
optional .android_studio.GradleBuildProject.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 .android_studio.GradleBuildProjectMetrics metrics = 6;
// The variants in this project
repeated .android_studio.GradleBuildVariant variant = 7;
// For instantApps, the number of dependent atoms.
optional int64 atoms = 8;
}
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 {
// 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 a 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;
}
// 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 .android_studio.GradleBuildVariant.VariantType variant_type = 7;
// For test variants, the tested variant id. (See GradleBuildVariant.id)
optional int64 tested_id = 8;
}
message GradleBuildMemorySample {
// Garbage collection time since the current daemon started.
optional int64 gc_time_ms = 1;
// Garbage collection count since the current daemon started.
optional int64 gc_count = 2;
// Time that the memory stats were collected.
optional int64 timestamp = 3;
}
// A single execution span from a build.
// For example, a task execution or creation of some tasks for a variant.
message GradleBuildProfileSpan {
// 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;
TASK_EXECUTION = 14;
INITIAL_METADATA = 100;
FINAL_METADATA = 101;
GENERAL_CONFIG = 102;
VARIANT_CONFIG = 103;
VARIANT_MANAGER_EXTERNAL_NATIVE_CONFIG_VALUES = 104;
APK_METRICS = 105;
// ApplicationTaskManager per variant tasks.
APP_TASK_MANAGER_CREATE_MERGE_MANIFEST_TASK = 1000;
APP_TASK_MANAGER_CREATE_GENERATE_RES_VALUES_TASK = 1001;
APP_TASK_MANAGER_CREATE_CREATE_RENDERSCRIPT_TASK = 1002;
APP_TASK_MANAGER_CREATE_MERGE_RESOURCES_TASK = 1003;
APP_TASK_MANAGER_CREATE_MERGE_ASSETS_TASK = 1004;
APP_TASK_MANAGER_CREATE_BUILD_CONFIG_TASK = 1005;
APP_TASK_MANAGER_CREATE_PROCESS_RES_TASK = 1006;
APP_TASK_MANAGER_CREATE_AIDL_TASK = 1007;
APP_TASK_MANAGER_CREATE_COMPILE_TASK = 1008;
APP_TASK_MANAGER_CREATE_NDK_TASK = 1009;
APP_TASK_MANAGER_CREATE_SPLIT_TASK = 1010;
APP_TASK_MANAGER_CREATE_PACKAGING_TASK = 1011;
APP_TASK_MANAGER_CREATE_PREPROCESS_RESOURCES_TASK = 1012;
APP_TASK_MANAGER_CREATE_BACKPORT_RESOURCES_TASK = 1013;
APP_TASK_MANAGER_CREATE_LINT_TASK = 1014;
APP_TASK_MANAGER_CREATE_MERGE_JNILIBS_FOLDERS_TASK = 1015;
APP_TASK_MANAGER_CREATE_SHADER_TASK = 1016;
APP_TASK_MANAGER_CREATE_EXTERNAL_NATIVE_BUILD_TASK = 1017;
APP_TASK_MANAGER_CREATE_STRIP_NATIVE_LIBRARY_TASK = 1018;
// LibraryTaskManager per variant tasks.
LIB_TASK_MANAGER_CREATE_MERGE_MANIFEST_TASK = 2000;
LIB_TASK_MANAGER_CREATE_GENERATE_RES_VALUES_TASK = 2001;
LIB_TASK_MANAGER_CREATE_CREATE_RENDERSCRIPT_TASK = 2002;
LIB_TASK_MANAGER_CREATE_MERGE_RESOURCES_TASK = 2003;
LIB_TASK_MANAGER_CREATE_MERGE_ASSETS_TASK = 2004;
LIB_TASK_MANAGER_CREATE_BUILD_CONFIG_TASK = 2005;
LIB_TASK_MANAGER_CREATE_PROCESS_RES_TASK = 2006;
LIB_TASK_MANAGER_CREATE_AIDL_TASK = 2007;
LIB_TASK_MANAGER_CREATE_COMPILE_TASK = 2008;
LIB_TASK_MANAGER_CREATE_NDK_TASK = 2009;
LIB_TASK_MANAGER_CREATE_SPLIT_TASK = 2010;
LIB_TASK_MANAGER_CREATE_PACKAGING_TASK = 2011;
LIB_TASK_MANAGER_CREATE_MERGE_PROGUARD_FILE_TASK = 2012;
LIB_TASK_MANAGER_CREATE_POST_COMPILATION_TASK = 2013;
LIB_TASK_MANAGER_CREATE_PROGUARD_TASK = 2014;
LIB_TASK_MANAGER_CREATE_PACKAGE_LOCAL_JAR = 2015;
LIB_TASK_MANAGER_CREATE_BACKPORT_RESOURCES_TASK = 2016;
LIB_TASK_MANAGER_CREATE_LINT_TASK = 2017;
LIB_TASK_MANAGER_CREATE_SHADER_TASK = 2018;
LIB_TASK_MANAGER_CREATE_EXTERNAL_NATIVE_BUILD_TASK = 2019;
// Task execution: Deprecated, use TASK_EXECUTION and
// GradleTaskExecution#Type instead.
// Deprecated July 2016.
GENERIC_TASK_EXECUTION = 3000;
TASK_AIDL_COMPILE = 3001;
TASK_DELETE = 3002;
TASK_CHECK_MANIFEST = 3003;
TASK_PREPARE_DEPENDENCIES_TASK = 3004;
TASK_RENDERSCRIPT_COMPILE = 3005;
TASK_GENERATE_BUILD_CONFIG = 3006;
TASK_MERGE_ASSETS = 3007;
TASK_GENERATE_RES_VALUES = 3008;
TASK_MERGE_RESOURCES = 3009;
TASK_MERGE_MANIFESTS = 3010;
TASK_PROCESS_ANDROID_RESOURCES = 3011;
TASK_JAVA_COMPILE = 3012;
TASK_NDK_COMPILE = 3013;
TASK_PRE_DEX = 3014;
TASK_DEX = 3015;
TASK_PACKAGE_SPLIT_RES = 3016;
TASK_PROCESS_RESOURCES = 3017;
TASK_VALIDATE_SIGNING_TASK = 3018;
TASK_PACKAGE_APPLICATION = 3019;
TASK_SPLIT_ZIP_ALIGN = 3020;
TASK_ZIP_ALIGN = 3021;
TASK_COPY = 3022;
TASK_LINT = 3023;
TASK_FILE_VERIFICATION = 3026;
TASK_EXTERNAL_NATIVE_BUILD_GENERATE_JSON_PROCESS_PER_ABI = 3027;
TASK_EXTERNAL_NATIVE_BUILD_GENERATE_JSON_PROCESS = 3028;
// Transform execution
TASK_TRANSFORM_PREPARATION = 3024;
TASK_TRANSFORM = 3025;
// AtomTaskManager per variant tasks.
ATOM_TASK_MANAGER_CREATE_MERGE_MANIFEST_TASK = 4000;
ATOM_TASK_MANAGER_CREATE_GENERATE_RES_VALUES_TASK = 4001;
ATOM_TASK_MANAGER_CREATE_CREATE_RENDERSCRIPT_TASK = 4002;
ATOM_TASK_MANAGER_CREATE_MERGE_RESOURCES_TASK = 4003;
ATOM_TASK_MANAGER_CREATE_MERGE_ASSETS_TASK = 4004;
ATOM_TASK_MANAGER_CREATE_BUILD_CONFIG_TASK = 4005;
ATOM_TASK_MANAGER_CREATE_PROCESS_RES_TASK = 4006;
ATOM_TASK_MANAGER_CREATE_AIDL_TASK = 4007;
ATOM_TASK_MANAGER_CREATE_SHADER_TASK = 4008;
ATOM_TASK_MANAGER_CREATE_NDK_TASK = 4009;
ATOM_TASK_MANAGER_CREATE_EXTERNAL_NATIVE_BUILD_TASK = 4010;
ATOM_TASK_MANAGER_CREATE_MERGE_JNILIBS_FOLDERS_TASK = 4011;
ATOM_TASK_MANAGER_CREATE_COMPILE_TASK = 4012;
ATOM_TASK_MANAGER_CREATE_BUNDLING_TASK = 4013;
ATOM_TASK_MANAGER_CREATE_LINT_TASK = 4014;
// InstantAppTaskManager per variant tasks.
INSTANTAPP_TASK_MANAGER_CREATE_MERGE_MANIFEST_TASK = 5000;
INSTANTAPP_TASK_MANAGER_CREATE_ATOM_PACKAGING_TASKS = 5001;
INSTANTAPP_TASK_MANAGER_CREATE_PROCESS_RES_TASK = 5002;
INSTANTAPP_TASK_MANAGER_CREATE_PACKAGING_TASK = 5003;
}
// 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 .android_studio.GradleBuildProfileSpan.ExecutionType type = 5;
// More informations about the execution of TransformTasks.
// Only used when executionType is TASK_TRANSFORM_PREPARATION or
// TASK_TRANSFORM.
optional .android_studio.GradleTransformExecution transform = 6;
// More informations about the execution of Tasks.
// Only used when executionType is TASK_EXECUTION
optional .android_studio.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;
}
message GradleTaskExecution {
enum Type {
UNKNOWN_TASK_TYPE = 0;
AIDL_COMPILE = 1;
ANDROID_JAR = 2;
ANDROID_JAVA_COMPILE = 3;
ANDROID_REPORT = 4;
ANDROID_UNIT_TEST = 5;
BUILD_EMULATOR = 6;
BUILD_INFO_LOADER = 7;
CHECK_MANIFEST = 8;
COMPATIBLE_SCREENS_MANIFEST = 9;
CREATE_MANIFEST_KEEP_LIST = 10;
DATA_BINDING_EXPORT_BUILD_INFO = 11;
DATA_BINDING_PROCESS_LAYOUTS = 12;
DEPENDENCY_REPORT = 13;
DEVICE_PROVIDER_INSTRUMENT_TEST = 14;
EXTERNAL_BUILD_ANCHOR = 15;
EXTERNAL_NATIVE_BUILD_JSON = 16;
EXTERNAL_NATIVE_BUILD = 17;
EXTRACT_ANNOTATIONS = 18;
EXTRACT_JAVA_RESOURCES = 19;
EXTRACT_PROGUARD_FILES = 20;
FAST_DEPLOY_RUNTIME_EXTRACTOR = 21;
FILTERED_JAR_COPY = 22;
GENERATE_APK_DATA = 23;
GENERATE_BUILD_CONFIG = 24;
GENERATE_INSTANT_RUN_APP_INFO = 25;
GENERATE_RES_VALUES = 26;
GENERATE_SPLIT_ABI_RES = 27;
GOOGLE_SERVICES = 28;
INCREMENTAL_SAFEGUARD = 29;
INSTALL_VARIANT = 30;
INSTANT_RUN_SPLIT_APK_BUILDER = 31;
INSTANT_RUN_WRAPPER = 32;
INVOKE_MANIFEST_MERGER = 33;
JACK_JACOCO_REPORT = 34;
JACOCO_REPORT = 35;
LINT = 36;
LINT_COMPILE = 37;
MERGE_FILE = 38;
MERGE_MANIFESTS = 39;
MERGE_RESOURCES = 40;
MERGE_SOURCE_SET_FOLDERS = 41;
MOCKABLE_ANDROID_JAR = 42;
NDK_COMPILE = 43;
NDK = 44;
PACKAGE_APPLICATION = 45;
PACKAGE_SPLIT_ABI = 46;
PACKAGE_SPLIT_RES = 47;
PRE_COLD_SWAP = 48;
PREPARE_DEPENDENCIES = 49;
PREPARE_LIBRARY = 50;
PROCESS_ANDROID_RESOURCES = 51;
PROCESS_MANIFEST = 52;
PROCESS_TEST_MANIFEST = 53;
RENDERSCRIPT_COMPILE = 54;
SHADER_COMPILE = 55;
SIGNING_REPORT = 56;
SINGLE_FILE_COPY = 57;
SOURCE_SETS = 58;
SPLIT_ZIP_ALIGN = 59;
STREAM_BASED = 60;
STRIP_DEBUG_SYMBOL = 61;
STRIP_DEPENDENCIES = 62;
TEST_MODULE_PRO_GUARD = 63;
TEST_SERVER = 64;
TRANSFORM = 65;
UNINSTALL = 66;
VALIDATE_SIGNING = 67;
ZIP_ALIGN = 68;
JAVA_COMPILE = 69;
BUILD_INFO_WRITER = 70;
BUNDLE_ATOM = 71;
CHECK_MANIFEST_IN_INSTANT_RUN_MODE = 72;
EXTERNAL_NATIVE_CLEAN = 73;
GENERATE_ATOM_METADATA = 74;
GENERATE_INSTANT_APP_METADATA = 75;
JAVA_PRE_COMPILE = 76;
MERGE_DEX_ATOM_RES_CLASS = 77;
PACKAGE_ATOM = 78;
PACKAGE_INSTANT_APP = 79;
PREPARE_ATOM = 80;
PROCESS_INSTANT_APP_RESOURCES = 81;
}
// The task implementing class.
// Custom tasks are recorded as UNKNOWN_TASK_TYPE.
optional .android_studio.GradleTaskExecution.Type 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 class.
enum Type {
UNKNOWN_TRANSFORM_TYPE = 0;
DEX = 1;
EXTRACT_JARS = 2;
INSTANT_RUN_DEX = 3;
INSTANT_RUN_SLICER = 4;
INSTANT_RUN = 5;
INSTANT_RUN_VERIFER = 6;
JACK_PRE_DEX = 7;
JACK = 8;
JACOCO = 9;
JAR_MERGING = 10;
LIBRARY_JAR = 11;
LIBRARY_JNI_LIBS = 12;
MERGE_JAVA_RESOURCES = 13;
MULTI_DEX = 14;
NEW_SHRINKER = 15;
NO_CHANGES_VERIFIER = 16;
PRO_GUARD = 17;
SHRINK_RESOURCES = 18;
DATA_BINDING_MERGE_ARTIFACTS = 19;
INSTANT_RUN_VERIFIER = 20;
STRIP_DEBUG_SYMBOL = 21;
}
// The transform implementing class.
// Custom transforms are recorded as UNKNOWN_TRANSFORM_TYPE.
optional .android_studio.GradleTransformExecution.Type 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 {
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;
}
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;
}
// 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 .android_studio.InstantRunStatus.BuildMode build_mode = 1;
// The type of deploy that the build can generate artifacts for.
optional .android_studio.InstantRunStatus.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 .android_studio.InstantRunStatus.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 .android_studio.InstantRunArtifact artifact = 4;
}
message InstantRunArtifact {
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;
}
optional .android_studio.InstantRunArtifact.Type type = 1;
}
// 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;
}
// 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 {
// 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;
}
// 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 .android_studio.UIActionStats.InvocationKind invocation_kind = 3;
}
// 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 .android_studio.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;
}
// 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 .android_studio.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 {
// 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;
}
// 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 .android_studio.JvmDetails.GarbageCollector garbage_collector = 9;
}
// Stats on Studio's performance
message StudioPerformanceStats {
// Time for which the UI was blocked in milliseconds
optional int32 ui_freeze_time_ms = 1;
}