Skip to content

Commit 322c795

Browse files
Merge branch 'main' into FixNetNativeCompilation
2 parents 4d57866 + a888dde commit 322c795

File tree

5 files changed

+117
-14
lines changed

5 files changed

+117
-14
lines changed

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
steps:
2121
- name: Get auth token
2222
id: token
23-
uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0
23+
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
2424
with:
2525
app-id: ${{ vars.SENTRY_RELEASE_BOT_CLIENT_ID }}
2626
private-key: ${{ secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY }}

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
### Fixes
66

77
- Fix UWP Net Native compilation ([#4085](https://github.com/getsentry/sentry-dotnet/pull/4085))
8+
- Sentry Java SDK dependencies are now detected and included in the Android bindings ([#4079](https://github.com/getsentry/sentry-dotnet/pull/4079))
89

910
## 5.5.0
1011

@@ -30,6 +31,9 @@
3031
- Bump CLI from v2.42.2 to v2.43.0 ([#4036](https://github.com/getsentry/sentry-dotnet/pull/4036), [#4049](https://github.com/getsentry/sentry-dotnet/pull/4049), [#4060](https://github.com/getsentry/sentry-dotnet/pull/4060), [#4062](https://github.com/getsentry/sentry-dotnet/pull/4062))
3132
- [changelog](https://github.com/getsentry/sentry-cli/blob/master/CHANGELOG.md#2430)
3233
- [diff](https://github.com/getsentry/sentry-cli/compare/2.42.2...2.43.0)
34+
- Bump Java SDK from v7.20.1 to v8.6.0 ([#4075](https://github.com/getsentry/sentry-dotnet/pull/4075))
35+
- [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#860)
36+
- [diff](https://github.com/getsentry/sentry-java/compare/7.20.1...8.6.0)
3337

3438
## 5.4.0
3539

integration-test/cli.Tests.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ Describe 'MAUI' -ForEach @(
165165
'maui-app.pdb'
166166
)
167167
$result.ScriptOutput | Should -AnyElementMatch 'Uploaded a total of 1 new mapping files'
168-
$result.ScriptOutput | Should -AnyElementMatch 'Found 17 debug information files \(1 with embedded sources\)'
168+
$result.ScriptOutput | Should -AnyElementMatch 'Found 25 debug information files \(1 with embedded sources\)'
169169
}
170170

171171
It "uploads symbols and sources for an iOS build" -Skip:(!$IsMacOS) {

src/Sentry.Bindings.Android/Sentry.Bindings.Android.csproj

Lines changed: 80 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFrameworks>net8.0-android34.0</TargetFrameworks>
4-
<!-- BG8605 and BG8606 happen because there's a missing androidx.lifecycle dependency, but we don't need it here. (The native Android Sentry SDK will use it if it exists.) -->
5-
<NoWarn>$(NoWarn);BG8605;BG8606</NoWarn>
6-
<SentryAndroidSdkVersion>7.20.1</SentryAndroidSdkVersion>
7-
<SentryAndroidSdkDirectory>$(BaseIntermediateOutputPath)sdks\Sentry\Android\$(SentryAndroidSdkVersion)\</SentryAndroidSdkDirectory>
3+
<TargetFrameworks>net8.0-android34.0;net9.0-android35.0</TargetFrameworks>
4+
<SentryAndroidSdkVersion>8.6.0</SentryAndroidSdkVersion>
5+
<SentryAndroidSdkDirectory>$(BaseIntermediateOutputPath)sdks\$(TargetFramework)\Sentry\Android\$(SentryAndroidSdkVersion)\</SentryAndroidSdkDirectory>
6+
<!-- This gets resolved by the DownloadSentryAndroidSdk target -->
7+
<SentryNativeNdkVersion></SentryNativeNdkVersion>
88
<Description>.NET Bindings for the Sentry Android SDK</Description>
99
</PropertyGroup>
1010

@@ -29,10 +29,46 @@
2929
<InternalsVisibleTo Include="Sentry.Maui.Tests" PublicKey="$(SentryPublicKey)" />
3030
</ItemGroup>
3131

32-
<ItemGroup>
32+
<!-- Dependencies for AndroidMavenLibrary references
33+
Note: versions match what was shipped with net8.0-android34.0 in:
34+
https://www.nuget.org/packages/Microsoft.Maui.Core/8.0.3#dependencies-body-tab
35+
-->
36+
<ItemGroup Condition="$(TargetFramework.StartsWith('net8'))">
37+
<PackageReference Include="Xamarin.AndroidX.Lifecycle.Process" Version="2.6.1.3" />
38+
<PackageReference Include="Xamarin.AndroidX.Lifecycle.Common.Java8" Version="2.6.1.3" />
39+
<!-- MAUI 8 references this version indirectly via Xamarin.AndroidX.SwipeRefreshLayout (>= 1.1.0.14) -->
40+
<PackageReference Include="Xamarin.AndroidX.Core" Version="1.10.1.2" />
41+
</ItemGroup>
42+
43+
<!-- Dependencies for AndroidMavenLibrary references
44+
Note: versions match what was shipped with net9.0-android35.0 in:
45+
https://www.nuget.org/packages/Microsoft.Maui.Core/9.0.0#dependencies-body-tab
46+
-->
47+
<ItemGroup Condition="$(TargetFramework.StartsWith('net9'))">
48+
<PackageReference Include="Xamarin.AndroidX.Lifecycle.Process" Version="2.8.5.1" />
49+
<PackageReference Include="Xamarin.AndroidX.Lifecycle.Common.Java8" Version="2.8.5.1" />
50+
<!-- MAUI 9 references this version indirectly via Xamarin.AndroidX.SwipeRefreshLayout (>= 1.1.0.24) -->
51+
<PackageReference Include="Xamarin.AndroidX.Core" Version="1.13.1.5" />
52+
</ItemGroup>
53+
54+
<ItemGroup Condition="$(TargetFramework.StartsWith('net8'))">
3355
<AndroidLibrary Include="$(SentryAndroidSdkDirectory)sentry-$(SentryAndroidSdkVersion).jar" />
3456
<AndroidLibrary Include="$(SentryAndroidSdkDirectory)sentry-android-core-$(SentryAndroidSdkVersion).aar" />
3557
<AndroidLibrary Include="$(SentryAndroidSdkDirectory)sentry-android-ndk-$(SentryAndroidSdkVersion).aar" />
58+
</ItemGroup>
59+
60+
<!-- Starting with .NET 9 we can detect Java dependencies using POM files and AndroidMavenLibrary references -->
61+
<ItemGroup Condition="!$(TargetFramework.StartsWith('net8'))">
62+
<AndroidLibrary
63+
Include="$(SentryAndroidSdkDirectory)sentry-$(SentryAndroidSdkVersion).jar"
64+
Manifest="$(SentryAndroidSdkDirectory)sentry-$(SentryAndroidSdkVersion).pom"
65+
JavaArtifact="io.sentry:sentry:$(SentryAndroidSdkVersion)"
66+
/>
67+
<AndroidMavenLibrary Include="io.sentry:sentry-android-core" Version="$(SentryAndroidSdkVersion)" />
68+
<AndroidMavenLibrary Include="io.sentry:sentry-android-ndk" Version="$(SentryAndroidSdkVersion)" />
69+
</ItemGroup>
70+
71+
<ItemGroup>
3672
<AndroidLibrary Include="..\..\lib\sentry-android-supplemental\bin\sentry-android-supplemental.jar" />
3773
<AndroidNativeLibrary Include="..\..\lib\sentrysupplemental\bin\arm64-v8a\libsentrysupplemental.so" Abi="arm64-v8a" />
3874
<AndroidNativeLibrary Include="..\..\lib\sentrysupplemental\bin\armeabi-v7a\libsentrysupplemental.so" Abi="armeabi-v7a" />
@@ -44,13 +80,13 @@
4480
<DownloadFile
4581
SourceUrl="https://repo1.maven.org/maven2/io/sentry/sentry-android-core/$(SentryAndroidSdkVersion)/sentry-android-core-$(SentryAndroidSdkVersion).aar"
4682
DestinationFolder="$(SentryAndroidSdkDirectory)"
47-
Condition="!Exists('$(SentryAndroidSdkDirectory)sentry-android-core-$(SentryAndroidSdkVersion).aar')"
83+
Condition="!Exists('$(SentryAndroidSdkDirectory)sentry-android-core-$(SentryAndroidSdkVersion).aar') And $(TargetFramework.StartsWith('net8'))"
4884
Retries="3"
4985
/>
5086
<DownloadFile
5187
SourceUrl="https://repo1.maven.org/maven2/io/sentry/sentry-android-ndk/$(SentryAndroidSdkVersion)/sentry-android-ndk-$(SentryAndroidSdkVersion).aar"
5288
DestinationFolder="$(SentryAndroidSdkDirectory)"
53-
Condition="!Exists('$(SentryAndroidSdkDirectory)sentry-android-ndk-$(SentryAndroidSdkVersion).aar')"
89+
Condition="!Exists('$(SentryAndroidSdkDirectory)sentry-android-ndk-$(SentryAndroidSdkVersion).aar') And $(TargetFramework.StartsWith('net8'))"
5490
Retries="3"
5591
/>
5692
<DownloadFile
@@ -59,6 +95,42 @@
5995
Condition="!Exists('$(SentryAndroidSdkDirectory)sentry-$(SentryAndroidSdkVersion).jar')"
6096
Retries="3"
6197
/>
98+
<DownloadFile
99+
SourceUrl="https://repo1.maven.org/maven2/io/sentry/sentry/$(SentryAndroidSdkVersion)/sentry-$(SentryAndroidSdkVersion).pom"
100+
DestinationFolder="$(SentryAndroidSdkDirectory)"
101+
Condition="!Exists('$(SentryAndroidSdkDirectory)sentry-$(SentryAndroidSdkVersion).pom') And !$(TargetFramework.StartsWith('net8'))"
102+
Retries="3"
103+
/>
104+
105+
<!-- The native-ndk exists outside of the android-ndk now. We're downloading the POM file to get the version of the native-ndk. -->
106+
<DownloadFile
107+
SourceUrl="https://repo1.maven.org/maven2/io/sentry/sentry-android-ndk/$(SentryAndroidSdkVersion)/sentry-android-ndk-$(SentryAndroidSdkVersion).pom"
108+
DestinationFolder="$(SentryAndroidSdkDirectory)"
109+
Condition="!Exists('$(SentryAndroidSdkDirectory)sentry-android-ndk-$(SentryAndroidSdkVersion).pom')"
110+
Retries="3"
111+
/>
112+
113+
<XmlPeek
114+
XmlInputPath="$(SentryAndroidSdkDirectory)sentry-android-ndk-$(SentryAndroidSdkVersion).pom"
115+
Query="//*[local-name()='dependency' and .//*[local-name()='artifactId' and text()='sentry-native-ndk']]/*[local-name()='version']/text()"
116+
Condition="Exists('$(SentryAndroidSdkDirectory)sentry-android-ndk-$(SentryAndroidSdkVersion).pom')">
117+
<Output TaskParameter="Result" PropertyName="SentryNativeNdkVersion" />
118+
</XmlPeek>
119+
120+
<DownloadFile
121+
SourceUrl="https://repo1.maven.org/maven2/io/sentry/sentry-native-ndk/$(SentryNativeNdkVersion)/sentry-native-ndk-$(SentryNativeNdkVersion).aar"
122+
DestinationFolder="$(SentryAndroidSdkDirectory)"
123+
Condition="'$(SentryNativeNdkVersion)' != '' And !Exists('$(SentryAndroidSdkDirectory)sentry-native-ndk-$(SentryNativeNdkVersion).aar') And $(TargetFramework.StartsWith('net8'))"
124+
Retries="3"
125+
/>
126+
127+
<ItemGroup Condition="'$(SentryNativeNdkVersion)' != '' And $(TargetFramework.StartsWith('net8'))">
128+
<AndroidLibrary Include="$(SentryAndroidSdkDirectory)sentry-native-ndk-$(SentryNativeNdkVersion).aar" />
129+
</ItemGroup>
130+
<ItemGroup Condition="'$(SentryNativeNdkVersion)' != '' And !$(TargetFramework.StartsWith('net8'))">
131+
<AndroidMavenLibrary Include="io.sentry:sentry-native-ndk" Version="$(SentryNativeNdkVersion)" />
132+
</ItemGroup>
62133
</Target>
63134

135+
<UsingTask TaskName="XmlPeek" AssemblyName="Microsoft.Build.Tasks.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
64136
</Project>

src/Sentry.Bindings.Android/Transforms/Metadata.xml

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,27 @@
6464
<attr path="/api/package[@name='io.sentry']/interface[@name='ObjectReader']/method[@name='dateOrNull']" name="visibility">internal</attr>
6565

6666

67-
<!-- Fix missing compareTo(Object) methods on classes extending SentryDate. -->
67+
<!-- Fix missing compareTo(Object) methods on classes extending SentryDate. -->
6868
<add-node path="/api/package[@name='io.sentry']/class[@extends='io.sentry.SentryDate']">
6969
<method name="compareTo" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public">
7070
<parameter name="p0" type="java.lang.Object" />
7171
</method>
7272
</add-node>
7373

74+
<!-- Fix missing compareTo(Object) method for EventProcessorAndOrder-->
75+
<add-node path="/api/package[@name='io.sentry.internal.eventprocessor']/class[@name='EventProcessorAndOrder']">
76+
<method name="compareTo" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public">
77+
<parameter name="p0" type="java.lang.Object" />
78+
</method>
79+
</add-node>
80+
81+
<!-- Fix missing compareTo(Object) method for Breadcrumb -->
82+
<add-node path="/api/package[@name='io.sentry']/class[@name='Breadcrumb']">
83+
<method name="compareTo" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public">
84+
<parameter name="p0" type="java.lang.Object" />
85+
</method>
86+
</add-node>
87+
7488
<!--
7589
TODO: If we need this, figure out how to multi-target or late bind.
7690
This API uses FrameMetrics, which requires Android >= 24.0. We currently target Android >= 21.0 which is the minimum supported by MAUI.
@@ -79,6 +93,13 @@
7993
<remove-node path="/api/package[@name='io.sentry.android.core.internal.util']/*[starts-with(@name,'SentryFrameMetricsCollector')]" />
8094
<remove-node path="/api/package[@name='io.sentry.android.core']/class[@name='AndroidProfiler']/*" />
8195

96+
<!-- Remove problematic classes for profiling that create a stack overflow during code generation, which appears as:
97+
error MSB6006: "dotnet" exited with code 134
98+
-->
99+
<remove-node path="/api/package[@name='io.sentry']/class[@name='ProfileChunk']" />
100+
<remove-node path="/api/package[@name='io.sentry']/class[@name='ProfilingTraceData']" />
101+
<remove-node path="/api/package[@name='io.sentry.android.core']/class[@name='AndroidProfiler']" />
102+
82103
<!--
83104
The BackfillingEventProcessor interface creates a stack overflow during code generation, which appears as:
84105
error MSB6006: "dotnet" exited with code 134
@@ -87,7 +108,7 @@
87108
-->
88109
<remove-node path="/api/package[@name='io.sentry']/interface[@name='BackfillingEventProcessor']" />
89110
<remove-node path="/api/package[@name='io.sentry.android.core']/class[@name='AnrV2EventProcessor']" />
90-
111+
91112
<!--
92113
SentryEvent.serialize() expects an parameter which implements IObjectWriter.
93114
JsonObjectWriter implements IObjectWriter in Java, but somehow this is not reflected in the generated binding.
@@ -115,17 +136,23 @@
115136
<remove-node path="/api/package[@name='io.sentry']/class[@name='OutboxSender']" />
116137
<remove-node path="/api/package[@name='io.sentry.cache']/class[@name='EnvelopeCache']" />
117138
<remove-node path="/api/package[@name='io.sentry.android.core.cache']/class[@name='AndroidEnvelopeCache']" />
118-
<remove-node path="/api/package[@name='io.sentry.android.core']/class[@name='TempSensorBreadcrumbsIntegration']" />
119139
<remove-node path="/api/package[@name='io.sentry.android.core.internal.gestures']" />
120140
<remove-node path="/api/package[@name='io.sentry.android.core.performance']" />
121141

122142
<remove-node path="/api/package[starts-with(@name,'io.sentry')]/*/method[@name='clone' and count(parameter)=0]" />
123143
<remove-node path="/api/package[starts-with(@name,'io.sentry')]/class/implements[@name='io.sentry.JsonDeserializer']" />
124-
<remove-node path="/api/package[@name='io.sentry.vendor.gson.stream']/class[@name='JsonToken']/field[@name='NAME']" />>
144+
<remove-node path="/api/package[@name='io.sentry.vendor.gson.stream']/class[@name='JsonToken']/field[@name='NAME']" />
125145

126146
<remove-node path="/api/package[@name='io.sentry.exception']/class[@name='ExceptionMechanismException']" />
127147
<remove-node path="/api/package[@name='io.sentry.exception']/class[@name='InvalidSentryTraceHeaderException']" />
128148
<remove-node path="/api/package[@name='io.sentry.exception']/class[@name='SentryEnvelopeException']" />
129149
<remove-node path="/api/package[@name='io.sentry.exception']/class[@name='SentryHttpClientException']" />
130150
<remove-node path="/api/package[@name='io.sentry.vendor.gson.stream']/class[@name='MalformedJsonException']" />
151+
152+
<!-- Remove CombinedContextsView.PutAll method due to conflicts when attempting to overwrite a method with the same name. -->
153+
<remove-node path="/api/package[@name='io.sentry']/class[@name='CombinedContextsView']/method[@name='putAll']" />
154+
<!-- Remove ISentryLifecycleToken.Close method due to conflicts with IAutoCloseable.Close due to having the same name. -->
155+
<remove-node path="/api/package[@name='io.sentry']/interface[@name='ISentryLifecycleToken']/method[@name='close']" />
156+
<!-- Remove QueueFile. The `.iterator` method has nullability issues -->
157+
<remove-node path="/api/package[@name='io.sentry.cache.tape']/class[@name='QueueFile']" />
131158
</metadata>

0 commit comments

Comments
 (0)