Skip to content

Commit 689c9eb

Browse files
committed
Fix DSO count when building
Also, runtime config blob will no longer be packaged in the APK, stop checking whether it was found.
1 parent 88c254e commit 689c9eb

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,10 @@ void AddEnvironment ()
306306
}
307307

308308
var uniqueNativeLibraries = new List<ITaskItem> ();
309+
310+
// Number of DSOs that will be packaged, it may be different to the number of items in the above
311+
// `uniqueNativeLibraries` list.
312+
uint packagedNativeLibrariesCount = 0;
309313
var seenNativeLibraryNames = new HashSet<string> (StringComparer.OrdinalIgnoreCase);
310314
if (NativeLibraries != null) {
311315
foreach (ITaskItem item in NativeLibraries) {
@@ -315,9 +319,19 @@ void AddEnvironment ()
315319
continue;
316320
}
317321

322+
if (!ELFHelper.IsEmptyAOTLibrary (Log, item.ItemSpec)) {
323+
packagedNativeLibrariesCount++;
324+
}
325+
318326
seenNativeLibraryNames.Add (name);
319327
uniqueNativeLibraries.Add (item);
320328
}
329+
330+
// libxamarin-app.so is not in NativeLibraries, but we must count it
331+
if (!seenNativeLibraryNames.Contains ("libxamarin-app.so")) {
332+
uniqueNativeLibraries.Add (new TaskItem ("libxamarin-app.so"));
333+
packagedNativeLibrariesCount++;
334+
}
321335
}
322336

323337
ConcurrentDictionary<AndroidTargetArch, NativeCodeGenState>? nativeCodeGenStates = null;
@@ -361,6 +375,7 @@ void AddEnvironment ()
361375
BundledAssemblyNameWidth = assemblyNameWidth,
362376
MonoComponents = (MonoComponent)monoComponents,
363377
NativeLibraries = uniqueNativeLibraries,
378+
PackagedNativeLibrariesCount = packagedNativeLibrariesCount,
364379
HaveAssemblyStore = UseAssemblyStore,
365380
AndroidRuntimeJNIEnvToken = android_runtime_jnienv_class_token,
366381
JNIEnvInitializeToken = jnienv_initialize_method_token,

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ sealed class XamarinAndroidBundledAssembly
186186
public MonoComponent MonoComponents { get; set; }
187187
public PackageNamingPolicy PackageNamingPolicy { get; set; }
188188
public List<ITaskItem> NativeLibraries { get; set; }
189+
public uint PackagedNativeLibrariesCount { get; set; }
189190
public bool MarshalMethodsEnabled { get; set; }
190191
public bool IgnoreSplitConfigs { get; set; }
191192
public bool AssemblyStoreEmbeddedInRuntime { get; set; }
@@ -236,7 +237,7 @@ protected override void Construct (LlvmIrModule module)
236237
environment_variable_count = (uint)(environmentVariables == null ? 0 : environmentVariables.Count * 2),
237238
system_property_count = (uint)(systemProperties == null ? 0 : systemProperties.Count * 2),
238239
number_of_assemblies_in_apk = (uint)NumberOfAssembliesInApk,
239-
number_of_shared_libraries = (uint)NativeLibraries.Count,
240+
number_of_shared_libraries = PackagedNativeLibrariesCount,
240241
bundled_assembly_name_width = (uint)BundledAssemblyNameWidth,
241242
number_of_dso_cache_entries = (uint)dsoCache.Count,
242243
number_of_aot_cache_entries = (uint)aotDsoCache.Count,

src/native/monodroid/embedded-assemblies.hh

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -331,8 +331,7 @@ namespace xamarin::android::internal {
331331
bool all_required_zip_entries_found () const noexcept
332332
{
333333
return
334-
number_of_mapped_assembly_stores == number_of_assembly_store_files && number_of_zip_dso_entries >= application_config.number_of_shared_libraries
335-
&& ((application_config.have_runtime_config_blob && runtime_config_blob_found) || !application_config.have_runtime_config_blob);
334+
number_of_mapped_assembly_stores == number_of_assembly_store_files && number_of_zip_dso_entries >= application_config.number_of_shared_libraries;
336335
}
337336

338337
force_inline static c_unique_ptr<char> to_utf8 (const MonoString *s) noexcept
@@ -439,7 +438,7 @@ namespace xamarin::android::internal {
439438
md_mmap_info runtime_config_blob_mmap{};
440439
void *runtime_config_data = nullptr;
441440
size_t runtime_config_data_size = 0;
442-
bool runtime_config_blob_found = false;
441+
bool runtime_config_blob_found = embedded_runtime_config_size > 0;
443442
uint32_t number_of_mapped_assembly_stores = 0;
444443
uint32_t number_of_zip_dso_entries = 0;
445444
bool need_to_scan_more_apks = true;

0 commit comments

Comments
 (0)