Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## Unreleased

### Fixes

- Fix compatibility with AGP 9.x when uploading proguard mappings ([#1021](https://github.com/getsentry/sentry-android-gradle-plugin/pull/1021))

## 5.12.1

### Fixes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import com.android.build.api.instrumentation.AsmClassVisitorFactory
import com.android.build.api.instrumentation.FramesComputationMode
import com.android.build.api.instrumentation.InstrumentationParameters
import com.android.build.api.instrumentation.InstrumentationScope
import com.android.build.api.variant.AndroidComponentsExtension
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
import com.android.build.api.variant.Variant
import com.android.build.gradle.api.ApplicationVariant
import io.sentry.gradle.common.SentryVariant
Expand Down Expand Up @@ -63,8 +63,8 @@ fun <T : InstrumentationParameters> configureInstrumentationFor70(
}

fun onVariants70(
androidComponentsExt: AndroidComponentsExtension<*, *, *>,
callback: (Variant) -> Unit,
androidComponentsExt: ApplicationAndroidComponentsExtension,
callback: (com.android.build.api.variant.ApplicationVariant) -> Unit,
) {
androidComponentsExt.onVariants(callback = callback)
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ import com.android.build.api.instrumentation.AsmClassVisitorFactory
import com.android.build.api.instrumentation.FramesComputationMode
import com.android.build.api.instrumentation.InstrumentationParameters
import com.android.build.api.instrumentation.InstrumentationScope
import com.android.build.api.variant.AndroidComponentsExtension
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
import com.android.build.api.variant.ApplicationVariant
import com.android.build.api.variant.CanMinifyCode
import com.android.build.api.variant.Variant
import com.android.build.api.variant.impl.ApplicationVariantImpl
Expand Down Expand Up @@ -111,8 +112,8 @@ fun <T : InstrumentationParameters> configureInstrumentationFor74(
}

fun onVariants74(
androidComponentsExt: AndroidComponentsExtension<*, *, *>,
callback: (Variant) -> Unit,
androidComponentsExt: ApplicationAndroidComponentsExtension,
callback: (ApplicationVariant) -> Unit,
) {
androidComponentsExt.onVariants(callback = callback)
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import com.android.build.api.instrumentation.AsmClassVisitorFactory
import com.android.build.api.instrumentation.FramesComputationMode
import com.android.build.api.instrumentation.InstrumentationParameters
import com.android.build.api.instrumentation.InstrumentationScope
import com.android.build.api.variant.AndroidComponentsExtension
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
import com.android.build.api.variant.ApplicationVariant
import com.android.build.api.variant.Variant
import com.android.build.gradle.AppExtension
import com.android.build.gradle.internal.utils.setDisallowChanges
import io.sentry.android.gradle.SentryPlugin.Companion.sep
import io.sentry.android.gradle.SentryPropertiesFileProvider.getPropertiesFilePath
Expand Down Expand Up @@ -48,7 +48,7 @@ import org.gradle.api.provider.SetProperty
import org.gradle.api.tasks.TaskProvider
import org.gradle.internal.build.event.BuildEventListenerRegistryInternal

fun AndroidComponentsExtension<*, *, *>.configure(
fun ApplicationAndroidComponentsExtension.configure(
project: Project,
extension: SentryPluginExtension,
buildEvents: BuildEventListenerRegistryInternal,
Expand Down Expand Up @@ -347,7 +347,7 @@ private fun Variant.configureDependenciesTask(
}
}

private fun Variant.configureProguardMappingsTasks(
private fun ApplicationVariant.configureProguardMappingsTasks(
project: Project,
extension: SentryPluginExtension,
sentryTelemetryProvider: Provider<SentryTelemetryService>,
Expand All @@ -373,7 +373,7 @@ private fun Variant.configureProguardMappingsTasks(
output = paths.proguardUuidDir,
)

val releaseInfo = getReleaseInfo(project, this)
val releaseInfo = getReleaseInfo()
val uploadMappingsTask =
SentryUploadProguardMappingsTask.register(
project = project,
Expand Down Expand Up @@ -445,24 +445,25 @@ private fun <T : InstrumentationParameters> Variant.configureInstrumentation(
* onVariants method in AGP 7.4.0 has a binary incompatibility with the prior versions, hence we
* have to distinguish here, although the compatibility sources would look exactly the same.
*/
private fun AndroidComponentsExtension<*, *, *>.configureVariants(callback: (Variant) -> Unit) {
private fun ApplicationAndroidComponentsExtension.configureVariants(
callback: (ApplicationVariant) -> Unit
) {
if (isAGP74) {
onVariants74(this, callback)
} else {
onVariants70(this, callback)
}
}

private fun getReleaseInfo(project: Project, variant: Variant): ReleaseInfo {
val appExtension = project.extensions.getByType(AppExtension::class.java)
var applicationId = appExtension.defaultConfig.applicationId ?: appExtension.namespace.toString()
var versionName = appExtension.defaultConfig.versionName ?: "undefined"
var versionCode = appExtension.defaultConfig.versionCode
val flavor = appExtension.productFlavors.find { it.name == variant.flavorName }
flavor?.applicationId?.let { applicationId = it }
flavor?.versionName?.let { versionName = it }
flavor?.versionCode?.let { versionCode = it }
flavor?.applicationIdSuffix?.let { applicationId += it }
flavor?.versionNameSuffix?.let { versionName += it }
private fun ApplicationVariant.getReleaseInfo(): ReleaseInfo {
val applicationId = applicationId.orNull ?: namespace.get()
var versionName = outputs.firstOrNull()?.versionName?.orNull
if (versionName.isNullOrEmpty()) {
versionName = "undefined"
}
var versionCode = outputs.firstOrNull()?.versionCode?.orNull
if (versionCode != null && versionCode < 0) {
versionCode = null
}
return ReleaseInfo(applicationId, versionName, versionCode)
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.sentry.android.gradle

import com.android.build.api.variant.AndroidComponentsExtension
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
import com.android.build.gradle.AppExtension
import io.sentry.BuildConfig
import io.sentry.android.gradle.autoinstall.installDependencies
Expand Down Expand Up @@ -48,7 +48,7 @@ constructor(private val buildEvents: BuildEventListenerRegistryInternal) : Plugi
project.pluginManager.withPlugin("com.android.application") {
val oldAGPExtension = project.extensions.getByType(AppExtension::class.java)
val androidComponentsExt =
project.extensions.getByType(AndroidComponentsExtension::class.java)
project.extensions.getByType(ApplicationAndroidComponentsExtension::class.java)
val cliExecutable = project.cliExecutableProvider()

val extraProperties = project.extensions.getByName("ext") as ExtraPropertiesExtension
Expand Down
Loading