diff --git a/integration-test/android.Tests.ps1 b/integration-test/android.Tests.ps1 index 60f16293d3..d06783bde0 100644 --- a/integration-test/android.Tests.ps1 +++ b/integration-test/android.Tests.ps1 @@ -18,10 +18,17 @@ BeforeDiscovery { } $cases = @( - @{ configuration = 'Release' } - @{ configuration = 'Debug' } + @{ configuration = 'Release'; runtime = 'mono' } + @{ configuration = 'Debug'; runtime = 'mono' } ) -Describe 'MAUI app (, )' -ForEach $cases -Skip:(-not $script:emulator) { +# CoreCLR on Android requires .NET 10 or later +if ($dotnet_version -ne 'net9.0') { + $cases += @( + @{ configuration = 'Release'; runtime = 'coreclr' } + @{ configuration = 'Debug'; runtime = 'coreclr' } + ) +} +Describe 'MAUI app (, , )' -ForEach $cases -Skip:(-not $script:emulator) { BeforeAll { $tfm = "$dotnet_version-android$(GetAndroidTpv $dotnet_version)" @@ -38,10 +45,12 @@ Describe 'MAUI app (, )' -ForEach $cases -Skip:(- $rid = "android-$arch" Write-Host "::group::Build Sentry.Maui.Device.IntegrationTestApp.csproj" + $useMonoRuntime = if ($runtime -eq 'mono') { 'true' } else { 'false' } dotnet build Sentry.Maui.Device.IntegrationTestApp.csproj ` --configuration $configuration ` --framework $tfm ` - --runtime $rid + --runtime $rid ` + -p:UseMonoRuntime=$useMonoRuntime | ForEach-Object { Write-Host $_ } Write-Host '::endgroup::' $LASTEXITCODE | Should -Be 0 diff --git a/integration-test/net9-maui/Sentry.Maui.Device.IntegrationTestApp.csproj b/integration-test/net9-maui/Sentry.Maui.Device.IntegrationTestApp.csproj index b609446eba..6bb40698cf 100644 --- a/integration-test/net9-maui/Sentry.Maui.Device.IntegrationTestApp.csproj +++ b/integration-test/net9-maui/Sentry.Maui.Device.IntegrationTestApp.csproj @@ -64,4 +64,10 @@ + + + + + + diff --git a/src/Sentry.Bindings.Android/Sentry.Bindings.Android.csproj b/src/Sentry.Bindings.Android/Sentry.Bindings.Android.csproj index 282a9a90d3..3bdcaf54f2 100644 --- a/src/Sentry.Bindings.Android/Sentry.Bindings.Android.csproj +++ b/src/Sentry.Bindings.Android/Sentry.Bindings.Android.csproj @@ -1,7 +1,7 @@ $(LatestAndroidTfm);$(PreviousAndroidTfm) - 8.38.0 + 8.39.0 $(BaseIntermediateOutputPath)sdks\$(TargetFramework)\Sentry\Android\$(SentryAndroidSdkVersion)\ diff --git a/src/Sentry/Platforms/Android/SentrySdk.cs b/src/Sentry/Platforms/Android/SentrySdk.cs index 7b3971287f..d47fe75664 100644 --- a/src/Sentry/Platforms/Android/SentrySdk.cs +++ b/src/Sentry/Platforms/Android/SentrySdk.cs @@ -66,6 +66,14 @@ private static void InitSentryAndroidSdk(SentryOptions options) o.ShutdownTimeoutMillis = (long)options.ShutdownTimeout.TotalMilliseconds; var signalHandlerStrategy = options.Native.ExperimentalOptions.SignalHandlerStrategy; + if (signalHandlerStrategy == SignalHandlerStrategy.ChainAtStart + && Type.GetType("Mono.RuntimeStructs") == null) + { + options.LogInfo( + "Using SignalHandlerStrategy.Default on .NET CoreCLR. " + + "SignalHandlerStrategy.ChainAtStart is only required on the Mono runtime."); + signalHandlerStrategy = SignalHandlerStrategy.Default; + } if (signalHandlerStrategy == SignalHandlerStrategy.ChainAtStart && System.Environment.Version is { Major: 10, Minor: 0, Build: < 4 }) { diff --git a/src/Sentry/buildTransitive/Sentry.props b/src/Sentry/buildTransitive/Sentry.props index c837e9af9e..1fa1e8ab69 100644 --- a/src/Sentry/buildTransitive/Sentry.props +++ b/src/Sentry/buildTransitive/Sentry.props @@ -5,5 +5,6 @@ <_SentryTargetFrameworkVersion>$([MSBuild]::GetTargetFrameworkVersion($(TargetFramework))) <_SentryIsNet8OrGreater>$([MSBuild]::VersionGreaterThanOrEquals($(_SentryTargetFrameworkVersion), 8.0)) <_SentryIsNet9OrGreater>$([MSBuild]::VersionGreaterThanOrEquals($(_SentryTargetFrameworkVersion), 9.0)) + <_SentryIsNet10OrGreater>$([MSBuild]::VersionGreaterThanOrEquals($(_SentryTargetFrameworkVersion), 10.0)) diff --git a/src/Sentry/buildTransitive/Sentry.targets b/src/Sentry/buildTransitive/Sentry.targets index 168036eec3..5351f6e93c 100644 --- a/src/Sentry/buildTransitive/Sentry.targets +++ b/src/Sentry/buildTransitive/Sentry.targets @@ -281,6 +281,22 @@ + + + + + <_Parameter1>io.sentry.ndk.preload + true + + + +