diff --git a/integration-test/Directory.Build.targets b/integration-test/Directory.Build.targets index 09c9320b2a..79b6564725 100644 --- a/integration-test/Directory.Build.targets +++ b/integration-test/Directory.Build.targets @@ -1,3 +1,7 @@ + + + + diff --git a/integration-test/android.Tests.ps1 b/integration-test/android.Tests.ps1 index 60f16293d3..46df6a6a21 100644 --- a/integration-test/android.Tests.ps1 +++ b/integration-test/android.Tests.ps1 @@ -18,10 +18,12 @@ BeforeDiscovery { } $cases = @( - @{ configuration = 'Release' } - @{ configuration = 'Debug' } + @{ configuration = 'Release'; runtime = 'mono' } + @{ configuration = 'Release'; runtime = 'coreclr' } + @{ configuration = 'Debug'; runtime = 'mono' } + @{ configuration = 'Debug'; runtime = 'coreclr' } ) -Describe 'MAUI app (, )' -ForEach $cases -Skip:(-not $script:emulator) { +Describe 'MAUI app (, , )' -ForEach $cases -Skip:(-not $script:emulator) { BeforeAll { $tfm = "$dotnet_version-android$(GetAndroidTpv $dotnet_version)" @@ -38,10 +40,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/src/Sentry/Platforms/Android/SentrySdk.cs b/src/Sentry/Platforms/Android/SentrySdk.cs index 7b3971287f..db52174ece 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.LogDebug( + "SignalHandlerStrategy.ChainAtStart is not compatible with .NET CoreCLR runtime. " + + "Falling back to SignalHandlerStrategy.Default."); + 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 + + + +