Skip to content

Commit d6e9013

Browse files
committed
Fix DSO counts
1 parent 71bc545 commit d6e9013

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

src/Xamarin.Android.Build.Tasks/Tasks/GenerateNativeApplicationConfigSources.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using System.Reflection.PortableExecutable;
99
using System.Text;
1010
using Microsoft.Build.Framework;
11+
using Microsoft.Build.Utilities;
1112

1213
using Java.Interop.Tools.TypeNameMappings;
1314
using Xamarin.Android.Tools;
@@ -237,6 +238,10 @@ public override bool RunTask ()
237238
}
238239

239240
var uniqueNativeLibraries = new List<ITaskItem> ();
241+
242+
// Number of DSOs that will be packaged, it may be different to the number of items in the above
243+
// `uniqueNativeLibraries` list.
244+
uint packagedNativeLibrariesCount = 0;
240245
var seenNativeLibraryNames = new HashSet<string> (StringComparer.OrdinalIgnoreCase);
241246
if (NativeLibraries != null) {
242247
foreach (ITaskItem item in NativeLibraries) {
@@ -246,9 +251,19 @@ public override bool RunTask ()
246251
continue;
247252
}
248253

254+
if (!ELFHelper.IsEmptyAOTLibrary (Log, item.ItemSpec)) {
255+
packagedNativeLibrariesCount++;
256+
}
257+
249258
seenNativeLibraryNames.Add (name);
250259
uniqueNativeLibraries.Add (item);
251260
}
261+
262+
// libxamarin-app.so is not in NativeLibraries, but we must count it
263+
if (!seenNativeLibraryNames.Contains ("libxamarin-app.so")) {
264+
uniqueNativeLibraries.Add (new TaskItem ("libxamarin-app.so"));
265+
packagedNativeLibrariesCount++;
266+
}
252267
}
253268

254269
var jniRemappingNativeCodeInfo = BuildEngine4.GetRegisteredTaskObjectAssemblyLocal<GenerateJniRemappingNativeCode.JniRemappingNativeCodeInfo> (ProjectSpecificTaskObjectKey (GenerateJniRemappingNativeCode.JniRemappingNativeCodeInfoKey), RegisteredTaskObjectLifetime.Build);
@@ -264,6 +279,7 @@ public override bool RunTask ()
264279
NumberOfAssembliesInApk = assemblyCount,
265280
BundledAssemblyNameWidth = assemblyNameWidth,
266281
NativeLibraries = uniqueNativeLibraries,
282+
PackagedNativeLibrariesCount = packagedNativeLibrariesCount,
267283
AndroidRuntimeJNIEnvToken = android_runtime_jnienv_class_token,
268284
JNIEnvInitializeToken = jnienv_initialize_method_token,
269285
JNIEnvRegisterJniNativesToken = jnienv_registerjninatives_method_token,
@@ -301,6 +317,7 @@ public override bool RunTask ()
301317
BundledAssemblyNameWidth = assemblyNameWidth,
302318
MonoComponents = (MonoComponent)monoComponents,
303319
NativeLibraries = uniqueNativeLibraries,
320+
PackagedNativeLibrariesCount = packagedNativeLibrariesCount,
304321
HaveAssemblyStore = UseAssemblyStore,
305322
AndroidRuntimeJNIEnvToken = android_runtime_jnienv_class_token,
306323
JNIEnvInitializeToken = jnienv_initialize_method_token,

src/Xamarin.Android.Build.Tasks/Utilities/ApplicationConfigNativeAssemblyGeneratorCLR.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ sealed class XamarinAndroidBundledAssembly
211211
public bool MarshalMethodsEnabled { get; set; }
212212
public bool ManagedMarshalMethodsLookupEnabled { get; set; }
213213
public bool IgnoreSplitConfigs { get; set; }
214+
public uint PackagedNativeLibrariesCount { get; set; }
214215

215216
public ApplicationConfigNativeAssemblyGeneratorCLR (IDictionary<string, string> environmentVariables, IDictionary<string, string> systemProperties,
216217
IDictionary<string, string>? runtimeProperties, TaskLoggingHelper log)
@@ -266,7 +267,7 @@ protected override void Construct (LlvmIrModule module)
266267
environment_variable_count = (uint)(environmentVariables == null ? 0 : environmentVariables.Count * 2),
267268
system_property_count = (uint)(systemProperties == null ? 0 : systemProperties.Count * 2),
268269
number_of_assemblies_in_apk = (uint)NumberOfAssembliesInApk,
269-
number_of_shared_libraries = (uint)NativeLibraries.Count,
270+
number_of_shared_libraries = PackagedNativeLibrariesCount,
270271
bundled_assembly_name_width = (uint)BundledAssemblyNameWidth,
271272
number_of_dso_cache_entries = (uint)dsoCache.Count,
272273
number_of_aot_cache_entries = (uint)aotDsoCache.Count,

0 commit comments

Comments
 (0)