Skip to content
Draft
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
1 change: 1 addition & 0 deletions Documentation/docs-mobile/messages/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ Either change the value in the AndroidManifest.xml to match the $(SupportedOSPla
+ XA3005: The detected Android NDK version is incompatible with the targeted LLVM configuration.
+ XA3006: Could not compile native assembly file: {file}
+ XA3007: Could not link native shared library: {library}
+ XA3008: Failed to extract debug info from '{library}'

## XA4xxx: Code generation

Expand Down
28 changes: 28 additions & 0 deletions Documentation/docs-mobile/messages/xa3008.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
title: .NET for Android warning XA3008
description: XA3008 warning code
ms.date: 05/15/2026
f1_keywords:
- "XA3008"
---

# .NET for Android warning XA3008

## Issue

This warning is emitted when the build system fails to extract debug symbols from
a native shared library using `objcopy`. The shared library itself was linked
successfully, but separate debug symbol files (`.dbg.so`) could not be created.

## Solution

This warning is non-fatal and the app will still work correctly. Debug symbols
are used for native crash diagnostics. If you need native debug symbols, check
that the NDK `objcopy` tool is installed and functioning correctly.

## Example messages

```
warning XA3008: Failed to extract debug info from 'libmonodroid.so':
objcopy: error: ...
```

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/Xamarin.Android.Build.Tasks/Properties/Resources.resx
Original file line number Diff line number Diff line change
Expand Up @@ -589,6 +589,10 @@ Either change the value in the AndroidManifest.xml to match the $(SupportedOSPla
<value>Could not link native shared library: {0}{1}</value>
<comment>The '{1}' placeholder is replaced with full output of the failed command, starting and ending with a newline.</comment>
</data>
<data name="XA3008" xml:space="preserve">
<value>Failed to extract debug info from '{0}': {1}</value>
<comment>'{0}' is the native shared library filename. '{1}' is the full output of the failed command, starting and ending with a newline.</comment>
</data>
<data name="XA4209" xml:space="preserve">
<value>Failed to generate Java type for class: {0} due to {1}</value>
<comment>{0} - The managed type name
Expand Down
4 changes: 1 addition & 3 deletions src/Xamarin.Android.Build.Tasks/Utilities/NativeLinker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -402,9 +402,7 @@ bool ExtractDebugSymbols (ITaskItem outputSharedLibrary)
void LogFailure ()
{
var sb = MonoAndroidHelper.MergeStdoutAndStderrMessages (stdoutLines, stderrLines);
// TODO: consider making it a warning
// TODO: make it a coded message
log.LogError ("Failed to extract debug info", Path.GetFileName (sourceLib), sb.ToString ());
log.LogCodedWarning ("XA3008", Properties.Resources.XA3008, Path.GetFileName (sourceLib), sb.ToString ());
}
}

Expand Down