@@ -7,9 +7,9 @@ import com.android.build.api.instrumentation.AsmClassVisitorFactory
77import com.android.build.api.instrumentation.FramesComputationMode
88import com.android.build.api.instrumentation.InstrumentationParameters
99import com.android.build.api.instrumentation.InstrumentationScope
10- import com.android.build.api.variant.AndroidComponentsExtension
10+ import com.android.build.api.variant.ApplicationAndroidComponentsExtension
11+ import com.android.build.api.variant.ApplicationVariant
1112import com.android.build.api.variant.Variant
12- import com.android.build.gradle.AppExtension
1313import com.android.build.gradle.internal.utils.setDisallowChanges
1414import io.sentry.android.gradle.SentryPlugin.Companion.sep
1515import io.sentry.android.gradle.SentryPropertiesFileProvider.getPropertiesFilePath
@@ -48,7 +48,7 @@ import org.gradle.api.provider.SetProperty
4848import org.gradle.api.tasks.TaskProvider
4949import org.gradle.internal.build.event.BuildEventListenerRegistryInternal
5050
51- fun AndroidComponentsExtension < * , * , * > .configure (
51+ fun ApplicationAndroidComponentsExtension .configure (
5252 project : Project ,
5353 extension : SentryPluginExtension ,
5454 buildEvents : BuildEventListenerRegistryInternal ,
@@ -347,7 +347,7 @@ private fun Variant.configureDependenciesTask(
347347 }
348348}
349349
350- private fun Variant .configureProguardMappingsTasks (
350+ private fun ApplicationVariant .configureProguardMappingsTasks (
351351 project : Project ,
352352 extension : SentryPluginExtension ,
353353 sentryTelemetryProvider : Provider <SentryTelemetryService >,
@@ -373,7 +373,7 @@ private fun Variant.configureProguardMappingsTasks(
373373 output = paths.proguardUuidDir,
374374 )
375375
376- val releaseInfo = getReleaseInfo(project, this )
376+ val releaseInfo = getReleaseInfo()
377377 val uploadMappingsTask =
378378 SentryUploadProguardMappingsTask .register(
379379 project = project,
@@ -445,24 +445,25 @@ private fun <T : InstrumentationParameters> Variant.configureInstrumentation(
445445 * onVariants method in AGP 7.4.0 has a binary incompatibility with the prior versions, hence we
446446 * have to distinguish here, although the compatibility sources would look exactly the same.
447447 */
448- private fun AndroidComponentsExtension <* , * , * >.configureVariants (callback : (Variant ) -> Unit ) {
448+ private fun ApplicationAndroidComponentsExtension.configureVariants (
449+ callback : (ApplicationVariant ) -> Unit
450+ ) {
449451 if (isAGP74) {
450452 onVariants74(this , callback)
451453 } else {
452454 onVariants70(this , callback)
453455 }
454456}
455457
456- private fun getReleaseInfo (project : Project , variant : Variant ): ReleaseInfo {
457- val appExtension = project.extensions.getByType(AppExtension ::class .java)
458- var applicationId = appExtension.defaultConfig.applicationId ? : appExtension.namespace.toString()
459- var versionName = appExtension.defaultConfig.versionName ? : " undefined"
460- var versionCode = appExtension.defaultConfig.versionCode
461- val flavor = appExtension.productFlavors.find { it.name == variant.flavorName }
462- flavor?.applicationId?.let { applicationId = it }
463- flavor?.versionName?.let { versionName = it }
464- flavor?.versionCode?.let { versionCode = it }
465- flavor?.applicationIdSuffix?.let { applicationId + = it }
466- flavor?.versionNameSuffix?.let { versionName + = it }
458+ private fun ApplicationVariant.getReleaseInfo (): ReleaseInfo {
459+ val applicationId = applicationId.orNull ? : namespace.get()
460+ var versionName = outputs.firstOrNull()?.versionName?.orNull
461+ if (versionName.isNullOrEmpty()) {
462+ versionName = " undefined"
463+ }
464+ var versionCode = outputs.firstOrNull()?.versionCode?.orNull
465+ if (versionCode != null && versionCode < 0 ) {
466+ versionCode = null
467+ }
467468 return ReleaseInfo (applicationId, versionName, versionCode)
468469}
0 commit comments