Skip to content

Commit fc2d679

Browse files
Merge pull request #1997 from embrace-io/migrate-proj-properties
Migrate project properties to extension
2 parents df95778 + d29ca0a commit fc2d679

File tree

14 files changed

+85
-104
lines changed

14 files changed

+85
-104
lines changed

UPGRADING.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ below:
2323
| `SwazzlerExtension.Variant.swazzlerOff` | `embrace.buildVariantFilter.disablePluginForVariant()` |
2424
| `SwazzlerExtension.Variant.setSwazzlingEnabled()` | `embrace.buildVariantFilter.disableBytecodeInstrumentationForVariant()` |
2525
| `SwazzlerExtension.Variant.disablePluginForVariant()` | `embrace.buildVariantFilter.disablePluginForVariant()` |
26+
| `embrace.disableCollectBuildData` | `embrace.telemetryEnabled` |
2627
| `swazzler.forceIncrementalOverwrite` | Obsolete - no alternative provided. |
2728
| `swazzler.disableRNBundleRetriever` | Obsolete - no alternative provided. |
2829
| `swazzler.customSymbolsDirectory` | Obsolete - no alternative provided. |

embrace-gradle-plugin/src/main/java/io/embrace/android/gradle/plugin/api/EmbraceBytecodeInstrumentation.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ abstract class EmbraceBytecodeInstrumentation @Inject internal constructor(objec
1414
* Global flag that overrides all others & decides whether Embrace should perform any bytecode instrumentation.
1515
* Defaults to true.
1616
*/
17-
val enabled: Property<Boolean> = objectFactory.property(Boolean::class.java)
17+
val enabled: Property<Boolean> = objectFactory.property(Boolean::class.java).convention(true)
1818

1919
/**
2020
* Whether Embrace should automatically instrument OkHttp requests. Defaults to true.

embrace-gradle-plugin/src/main/java/io/embrace/android/gradle/plugin/api/EmbraceExtension.kt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,6 @@ abstract class EmbraceExtension @Inject internal constructor(objectFactory: Obje
2323
val autoAddEmbraceComposeDependency: Property<Boolean> =
2424
objectFactory.property(Boolean::class.java)
2525

26-
/**
27-
* Whether the Embrace Gradle Plugin should automatically upload mapping files for stacktrace deobfuscation.
28-
* Defaults to true.
29-
*/
30-
val mappingFileUploadEnabled: Property<Boolean> = objectFactory.property(Boolean::class.java)
31-
3226
/**
3327
* Whether the Embrace Gradle Plugin should report telemetry on its own performance.
3428
* Defaults to true.
@@ -39,7 +33,7 @@ abstract class EmbraceExtension @Inject internal constructor(objectFactory: Obje
3933
* Whether the Embrace Gradle Plugin should fail the build if it encounters an error during a HTTP request.
4034
* Defaults to true.
4135
*/
42-
val failBuildOnUploadErrors: Property<Boolean> = objectFactory.property(Boolean::class.java)
36+
val failBuildOnUploadErrors: Property<Boolean> = objectFactory.property(Boolean::class.java).convention(true)
4337

4438
/**
4539
* DSL for configuring how Embrace instruments bytecode.

embrace-gradle-plugin/src/main/java/io/embrace/android/gradle/plugin/buildreporter/BuildTelemetryService.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,16 @@ abstract class BuildTelemetryService :
2525
interface Params : BuildServiceParameters {
2626
val request: Property<BuildTelemetryRequest>
2727
val baseUrl: Property<String>
28+
val telemetryDisabled: Property<Boolean>
2829
}
2930

3031
/**
3132
* It gets called moments before build is about to finish.
3233
*/
3334
override fun close() {
35+
if (parameters.telemetryDisabled.get()) {
36+
return
37+
}
3438
val networkService = OkHttpNetworkService(parameters.baseUrl.get())
3539
networkService.postBuildTelemetry(parameters.request.get())
3640
}
@@ -46,9 +50,6 @@ abstract class BuildTelemetryService :
4650
behavior: PluginBehavior,
4751
agpWrapper: AgpWrapper,
4852
): Provider<BuildTelemetryService> {
49-
if (behavior.isTelemetryDisabled) {
50-
return project.provider { null }
51-
}
5253
val serviceProvider: Provider<BuildTelemetryService> =
5354
project.gradle.sharedServices
5455
.registerIfAbsent(
@@ -65,6 +66,7 @@ abstract class BuildTelemetryService :
6566
)
6667
params.request.set(telemetryProvider)
6768
params.baseUrl.set(behavior.baseUrl)
69+
params.telemetryDisabled.set(behavior.isTelemetryDisabled)
6870
}
6971
}
7072

embrace-gradle-plugin/src/main/java/io/embrace/android/gradle/plugin/config/InstrumentationBehaviorImpl.kt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,28 @@ class InstrumentationBehaviorImpl(
1414
embrace.bytecodeInstrumentation
1515
}
1616

17+
private val enabled by lazy {
18+
instrumentation.enabled.get()
19+
}
20+
1721
override val okHttpEnabled: Boolean by lazy {
18-
instrumentation.okhttpEnabled.orNull ?: extension.instrumentOkHttp.orNull ?: true
22+
enabled && (instrumentation.okhttpEnabled.orNull ?: extension.instrumentOkHttp.orNull ?: true)
1923
}
2024

2125
override val onClickEnabled: Boolean by lazy {
22-
instrumentation.onClickEnabled.orNull ?: extension.instrumentOnClick.orNull ?: true
26+
enabled && (instrumentation.onClickEnabled.orNull ?: extension.instrumentOnClick.orNull ?: true)
2327
}
2428

2529
override val onLongClickEnabled: Boolean by lazy {
26-
instrumentation.onLongClickEnabled.orNull ?: extension.instrumentOnLongClick.orNull ?: true
30+
enabled && (instrumentation.onLongClickEnabled.orNull ?: extension.instrumentOnLongClick.orNull ?: true)
2731
}
2832

2933
override val webviewEnabled: Boolean by lazy {
30-
instrumentation.webviewOnPageStartedEnabled.orNull ?: extension.instrumentWebview.orNull ?: true
34+
enabled && (instrumentation.webviewOnPageStartedEnabled.orNull ?: extension.instrumentWebview.orNull ?: true)
3135
}
3236

3337
override val fcmPushNotificationsEnabled: Boolean by lazy {
34-
instrumentation.firebasePushNotificationsEnabled.orNull ?: extension.instrumentFirebaseMessaging.orNull ?: false
38+
enabled && (instrumentation.firebasePushNotificationsEnabled.orNull ?: extension.instrumentFirebaseMessaging.orNull ?: false)
3539
}
3640

3741
override val ignoredClasses: List<String> by lazy {

embrace-gradle-plugin/src/main/java/io/embrace/android/gradle/plugin/config/PluginBehavior.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package io.embrace.android.gradle.plugin.config
22

3+
import org.gradle.api.provider.Provider
4+
35
interface PluginBehavior {
46

57
/**
68
* Whether telemetry can be captured for this build, set via `embrace.disableCollectBuildData`.
79
*/
8-
val isTelemetryDisabled: Boolean
10+
val isTelemetryDisabled: Provider<Boolean>
911

1012
/**
1113
* Whether Unity EDM is enabled, set via `embrace.externalDependencyManager`
@@ -25,7 +27,7 @@ interface PluginBehavior {
2527
/**
2628
* Whether the plugin should fail the build on upload errors, set via `embrace.failBuildOnUploadErrors`
2729
*/
28-
val failBuildOnUploadErrors: Boolean
30+
val failBuildOnUploadErrors: Provider<Boolean>
2931

3032
/**
3133
* The base URL for the Embrace API, set via `embrace.baseUrl`
@@ -74,6 +76,5 @@ const val EMBRACE_BASE_URL = "embrace.baseUrl"
7476
const val EMBRACE_DISABLE_COLLECT_BUILD_DATA = "embrace.disableCollectBuildData"
7577
const val EMBRACE_UPLOAD_IL2CPP_MAPPING_FILES = "embrace.uploadIl2CppMappingFiles"
7678
const val EMBRACE_DISABLE_MAPPING_FILE_UPLOAD = "embrace.disableMappingFileUpload"
77-
const val EMBRACE_FAIL_BUILD_ON_UPLOAD_ERRORS = "embrace.failBuildOnUploadErrors"
7879
const val EMBRACE_UNITY_EXTERNAL_DEPENDENCY_MANAGER = "embrace.externalDependencyManager"
7980
const val DEFAULT_SYMBOL_STORE_HOST_URL = "https://dsym-store.emb-api.com"

embrace-gradle-plugin/src/main/java/io/embrace/android/gradle/plugin/config/PluginBehaviorImpl.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package io.embrace.android.gradle.plugin.config
55
import io.embrace.android.gradle.plugin.api.EmbraceExtension
66
import io.embrace.android.gradle.swazzler.plugin.extension.SwazzlerExtension
77
import org.gradle.api.Project
8+
import org.gradle.api.provider.Provider
89
import java.io.File
910

1011
class PluginBehaviorImpl(
@@ -17,8 +18,10 @@ class PluginBehaviorImpl(
1718
InstrumentationBehaviorImpl(extension, embrace)
1819
}
1920

20-
override val isTelemetryDisabled: Boolean by lazy {
21-
project.getBoolProperty(EMBRACE_DISABLE_COLLECT_BUILD_DATA)
21+
override val isTelemetryDisabled: Provider<Boolean> by lazy {
22+
project.provider {
23+
embrace.telemetryEnabled.orNull?.not() ?: project.getBoolProperty(EMBRACE_DISABLE_COLLECT_BUILD_DATA)
24+
}
2225
}
2326

2427
override val isUnityEdmEnabled: Boolean by lazy {
@@ -33,8 +36,10 @@ class PluginBehaviorImpl(
3336
project.getBoolProperty(EMBRACE_DISABLE_MAPPING_FILE_UPLOAD)
3437
}
3538

36-
override val failBuildOnUploadErrors: Boolean by lazy {
37-
project.getProperty(EMBRACE_FAIL_BUILD_ON_UPLOAD_ERRORS) != "false"
39+
override val failBuildOnUploadErrors: Provider<Boolean> by lazy {
40+
project.provider {
41+
embrace.failBuildOnUploadErrors.get()
42+
}
3843
}
3944

4045
override val baseUrl: String by lazy {

embrace-gradle-plugin/src/main/java/io/embrace/android/gradle/plugin/tasks/il2cpp/Il2CppUploadTaskRegistration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ class Il2CppUploadTaskRegistration : EmbraceTaskRegistration {
137137
endpoint = info.endpoint,
138138
fileName = info.filename,
139139
buildId = variantInfo.buildId,
140-
failBuildOnUploadErrors = behavior.failBuildOnUploadErrors,
140+
failBuildOnUploadErrors = behavior.failBuildOnUploadErrors.get(),
141141
baseUrl = behavior.baseUrl,
142142
)
143143
}

embrace-gradle-plugin/src/main/java/io/embrace/android/gradle/plugin/tasks/ndk/NdkUploadTaskRegistration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class NdkUploadTaskRegistration(
6060
appId = embraceConfig?.appId.orEmpty(),
6161
apiToken = embraceConfig?.apiToken.orEmpty(),
6262
endpoint = EmbraceEndpoint.NDK,
63-
failBuildOnUploadErrors = behavior.failBuildOnUploadErrors,
63+
failBuildOnUploadErrors = behavior.failBuildOnUploadErrors.get(),
6464
baseUrl = behavior.baseUrl,
6565
)
6666
}

embrace-gradle-plugin/src/main/java/io/embrace/android/gradle/plugin/tasks/r8/JvmMappingUploadTaskRegistration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ class JvmMappingUploadTaskRegistration : EmbraceTaskRegistration {
9191
fileName = FILE_NAME_MAPPING_TXT,
9292
buildId = variantConfig.buildId,
9393
baseUrl = behavior.baseUrl,
94-
failBuildOnUploadErrors = behavior.failBuildOnUploadErrors,
94+
failBuildOnUploadErrors = behavior.failBuildOnUploadErrors.get(),
9595
)
9696
}
9797
)

0 commit comments

Comments
 (0)