blob: f39988dc437ee14d0fa83fa5ca683969bb80206b [file] [log] [blame]
syntax = "proto3";
package com.android.build.attribution;
option java_package = "com.android.build.attribution";
option java_multiple_files = true;
option java_outer_classname = "BuildAnalysisResultsOuterClass";
message BuildAnalysisResultsMessage {
optional RequestData requestData = 12;
optional AnnotationProcessorsAnalyzerResult annotationProcessorsAnalyzerResult = 1;
optional AlwaysRunTasksAnalyzerResult alwaysRunTasksAnalyzerResult = 2;
optional CriticalPathAnalyzerResult criticalPathAnalyzerResult = 3;
optional GarbageCollectionAnalyzerResult garbageCollectionAnalyzerResult = 5;
optional ProjectConfigurationAnalyzerResult projectConfigurationAnalyzerResult = 6;
optional TasksConfigurationIssuesAnalyzerResult tasksConfigurationAnalyzerResult = 7;
optional JetifierUsageAnalyzerResult jetifierUsageAnalyzerResult = 8;
optional DownloadsAnalyzerResult downloadsAnalyzerResult = 9;
optional TaskCategoryWarningsAnalyzerResult taskCategoryWarningsAnalyzerResult = 10;
optional string buildSessionID = 11;
optional TaskCache taskCache = 13;
optional PluginCache pluginCache = 14;
message Duration {
int64 seconds = 1;
int32 nanos = 2;
}
message AnnotationProcessorsAnalyzerResult {
repeated AnnotationProcessorsData annotationProcessorsData = 1;
repeated AnnotationProcessorsData nonIncrementalAnnotationProcessorsData = 2;
message AnnotationProcessorsData {
optional string className = 1;
optional Duration compilationDuration = 2;
}
}
message TaskCache {
repeated TaskData values = 1;
}
message PluginCache {
repeated PluginData values = 1;
}
message AlwaysRunTasksAnalyzerResult {
repeated AlwaysRunTasksData alwaysRunTasksData = 1;
message AlwaysRunTasksData {
optional string taskId = 1;
optional Reason reason = 2;
enum Reason {
UNSPECIFIED = 0;
NO_OUTPUTS_WITH_ACTIONS = 1;
UP_TO_DATE_WHEN_FALSE = 2;
}
}
}
message CriticalPathAnalyzerResult {
repeated string taskIdsDeterminingBuildDuration = 1;
repeated PluginBuildData pluginsDeterminingBuildDuration = 2;
optional int64 buildStartedTimestamp = 3;
optional int64 buildFinishedTimestamp = 4;
message PluginBuildData {
optional string pluginID = 1;
optional int64 buildDuration = 2;
}
}
message PluginData {
optional PluginType pluginType = 1;
optional string idName = 2;
enum PluginType {
UNKNOWN = 0;
BINARY_PLUGIN = 1;
BUILDSRC_PLUGIN = 2;
SCRIPT = 3;
}
}
message TaskData {
optional string taskName = 1;
optional string projectPath = 2;
optional string originPluginId = 3;
optional int64 executionStartTime = 4;
optional int64 executionEndTime = 5;
optional TaskExecutionMode executionMode = 6;
repeated string executionReasons = 7;
optional bool isOnTheCriticalPath = 8;
optional string taskType = 9;
optional TaskCategory primaryTaskCategory = 10;
repeated TaskCategory secondaryTaskCategories = 11;
enum TaskExecutionMode {
UNSPECIFIED = 0;
FROM_CACHE = 1;
UP_TO_DATE = 2;
INCREMENTAL = 3;
FULL = 4;
}
enum TaskCategory {
UNCATEGORIZED = 0;
COMPILATION = 1;
TEST = 2;
MANIFEST = 3;
ANDROID_RESOURCES = 4;
NATIVE = 5;
JAVA = 6;
JAVA_RESOURCES = 7;
JAVA_DOC = 8;
KOTLIN = 9;
AIDL = 10;
RENDERSCRIPT = 11;
SHADER = 12;
DEXING = 13;
ART_PROFILE = 14;
LINT = 15;
DATA_BINDING = 16;
METADATA = 17;
VERIFICATION = 18;
SYNC = 19;
DEPLOYMENT = 20;
HELP = 21;
APK_PACKAGING = 22;
AAR_PACKAGING = 23;
BUNDLE_PACKAGING = 24;
OPTIMIZATION = 25;
SOURCE_GENERATION = 26;
SOURCE_PROCESSING = 27;
ZIPPING = 28;
LINKING = 29;
MERGING = 30;
FUSING = 31;
COMPILED_CLASSES = 32;
GRADLE = 33;
MISC = 34;
BUILD_SCRIPT = 35;
BUILD_SOURCE = 36;
}
}
message GarbageCollectionAnalyzerResult {
repeated GarbageCollectionData garbageCollectionData = 1;
optional int32 javaVersion = 2;
optional TrueFalseUnknown isSettingSet = 3;
enum TrueFalseUnknown {
UNKNOWN = 0;
TRUE = 1;
FALSE = 2;
}
message GarbageCollectionData {
optional string name = 1;
optional int64 collectionTimeMs = 2;
}
}
message ProjectConfigurationAnalyzerResult {
repeated PluginDataLongMap pluginsConfigurationDataMap = 1;
repeated StringPluginDataMap allAppliedPlugins = 2;
repeated ProjectConfigurationData projectConfigurationData = 3;
message StringPluginDataMap {
optional string appliedPlugins = 1;
repeated PluginData plugins = 2;
}
message ProjectConfigurationData {
optional string projectPath = 1;
optional int64 totalConfigurationTime = 2;
repeated PluginConfigurationData pluginsConfigurationData = 3;
repeated ConfigurationStep configurationSteps = 4;
message PluginConfigurationData {
optional PluginData plugin = 1;
optional int64 configurationTimeMS = 2;
}
message ConfigurationStep {
optional Type type = 1;
optional int64 configurationTimeMs = 2;
enum Type {
UNKNOWN = 0;
NOTIFYING_BUILD_LISTENERS = 1;
RESOLVING_DEPENDENCIES = 2;
COMPILING_BUILD_SCRIPTS = 3;
EXECUTING_BUILD_SCRIPT_BLOCKS = 4;
OTHER = 5;
}
}
}
message PluginDataLongMap {
optional PluginData pluginData = 1;
optional int64 long = 2;
}
}
message TasksConfigurationIssuesAnalyzerResult {
repeated TasksSharingOutputData tasksSharingOutputData = 1;
message TasksSharingOutputData {
optional string outputFilePath = 1;
repeated string taskIdList = 2;
}
}
message RequestData {
optional BuildMode buildMode = 1;
optional string rootProjectPathString = 2;
repeated string gradleTasks = 3;
repeated string jvmArguments = 4;
repeated string commandLineArguments = 5;
repeated Env env = 6;
optional bool isPassParentEnvs = 7;
message Env {
optional string envKey = 1;
optional string envValue = 2;
}
enum BuildMode {
UNSPECIFIED = 0;
COMPILE_JAVA = 1;
ASSEMBLE = 2;
REBUILD = 3;
CLEAN = 4;
SOURCE_GEN = 5;
BUNDLE = 6;
APK_FROM_BUNDLE = 7;
BASELINE_PROFILE_GEN = 8;
BASELINE_PROFILE_GEN_ALL_VARIANTS = 9;
}
}
message JetifierUsageAnalyzerResult {
optional JetifierUsageProjectStatus projectStatus = 1;
optional int64 lastCheckJetifierBuildTimestamp = 2;
optional bool checkJetifierBuild = 3;
enum JetifierUsageProjectStatus {
ANALYZER_NOT_RUN = 0;
JETIFIER_NOT_USED = 1;
JETIFIER_USED_CHECK_REQUIRED = 2;
JETIFIER_CAN_BE_REMOVED = 3;
IS_JETIFIER_REQUIRED_FOR_LIBRARIES = 4;
}
}
message DownloadsAnalyzerResult {
optional ActiveResult activeResult = 1;
optional ResultStatus resultStatus = 2;
enum ResultStatus {
ANALYZER_IS_DISABLED = 0;
GRADLE_DOES_NOT_PROVIDE_EVENTS = 1;
ACTIVE_RESULT = 2;
}
message ActiveResult {
repeated RepositoryResult repositoryResult = 1;
message RepositoryResult {
optional Repository repository = 1;
repeated DownloadResult downloads = 2;
}
}
message Repository {
optional RepositoryType analyticsType = 1;
optional string host = 2;
enum RepositoryType {
UNKNOWN_REPOSITORY = 0;
GOOGLE = 1;
MAVEN_CENTRAL = 2;
JCENTER = 3;
OTHER_REPOSITORY = 4;
}
}
message DownloadResult {
optional int64 timestamp = 1;
optional Repository repository = 2;
optional string url = 3;
optional DownloadStatus status = 4;
optional int64 duration = 5;
optional int64 bytes = 6;
optional string failureMessage = 7;
enum DownloadStatus {
UNKNOWN = 0;
FAILURE = 1;
SUCCESS = 2;
MISSED = 3;
}
}
}
message TaskCategoryWarningsAnalyzerResult {
optional TaskCategorySupportType taskCategorySupportType = 1;
repeated TaskCategoryIssue taskCategoryIssues = 2;
enum TaskCategoryIssue {
UNKNOWN = 0;
NON_FINAL_RES_IDS_DISABLED = 1;
NON_TRANSITIVE_R_CLASS_DISABLED = 2;
RESOURCE_VALIDATION_ENABLED = 3;
TEST_SHARDING_DISABLED = 4;
RENDERSCRIPT_API_DEPRECATED = 5;
AVOID_AIDL_UNNECESSARY_USE = 6;
JAVA_NON_INCREMENTAL_ANNOTATION_PROCESSOR = 7;
MINIFICATION_ENABLED_IN_DEBUG_BUILD = 8;
}
enum TaskCategorySupportType {
UNKNOWN_TYPE = 0;
FEATURE_DISABLED = 1;
NO_DATA_FROM_AGP = 2;
SUPPORTED = 3;
}
}
}