summaryrefslogtreecommitdiff
path: root/build-system/gradle-core/src/main/java/com/android/build/gradle/options/ProjectOptions.java
diff options
context:
space:
mode:
Diffstat (limited to 'build-system/gradle-core/src/main/java/com/android/build/gradle/options/ProjectOptions.java')
-rw-r--r--build-system/gradle-core/src/main/java/com/android/build/gradle/options/ProjectOptions.java26
1 files changed, 20 insertions, 6 deletions
diff --git a/build-system/gradle-core/src/main/java/com/android/build/gradle/options/ProjectOptions.java b/build-system/gradle-core/src/main/java/com/android/build/gradle/options/ProjectOptions.java
index 7b26f043ea..35b2263693 100644
--- a/build-system/gradle-core/src/main/java/com/android/build/gradle/options/ProjectOptions.java
+++ b/build-system/gradle-core/src/main/java/com/android/build/gradle/options/ProjectOptions.java
@@ -54,12 +54,6 @@ public final class ProjectOptions {
integerOptionValues = createOptionValues(IntegerOption.values());
replacedOptionValues = createOptionValues(ReplacedOption.values());
stringOptionValues = createOptionValues(StringOption.values());
- // Initialize AnalyticsSettings before we access its properties in isAnalyticsEnabled
- // function
- AnalyticsSettings.initialize(
- LoggerWrapper.getLogger(ProjectOptions.class),
- null,
- com.android.tools.analytics.Environment.getSYSTEM());
Environment.initialize(Environment.Companion.getSYSTEM());
}
@@ -183,11 +177,31 @@ public final class ProjectOptions {
}
public boolean isAnalyticsEnabled() {
+ if (!needToInitializeAnalytics()) {
+ return false;
+ }
+ AnalyticsSettings.initialize(
+ LoggerWrapper.getLogger(ProjectOptions.class),
+ null,
+ com.android.tools.analytics.Environment.getSYSTEM());
+
return AnalyticsSettings.getOptedIn()
|| get(BooleanOption.ENABLE_PROFILE_JSON)
|| get(StringOption.PROFILE_OUTPUT_DIR) != null;
}
+ /**
+ * If the analytics.settings file doesn't exist, which means the user has never used studio or
+ * has manually deleted that file, AGP doesn't need to create that file and check if analytics
+ * is opted in. In that case, it is considered as not opted in. This will also help us avoid
+ * the configuration cache miss caused by file creation in configuration phase for CI users.
+ */
+ private boolean needToInitializeAnalytics() {
+ return AnalyticsSettings.settingsFileExists()
+ || get(BooleanOption.ENABLE_PROFILE_JSON)
+ || get(StringOption.PROFILE_OUTPUT_DIR) != null;
+ }
+
public <OptionT extends Option<ValueT>, ValueT>
ImmutableMap<OptionT, ValueT> getExplicitlySetOptions(
ImmutableMap<OptionT, OptionValue<OptionT, ValueT>> optionValues) {