Skip to content

Commit 9b77fee

Browse files
committed
Move some of assembly packaging code to a helper class
1 parent eb259c0 commit 9b77fee

File tree

2 files changed

+36
-24
lines changed

2 files changed

+36
-24
lines changed

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

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -432,10 +432,10 @@ void AddAssemblies (ZipArchiveEx apk, bool debug, bool compress, IDictionary<And
432432
}
433433

434434
// Add user assemblies
435-
AddAssembliesFromCollection (ResolvedUserAssemblies);
435+
AssemblyPackagingHelper.AddAssembliesFromCollection (Log, SupportedAbis, ResolvedUserAssemblies, DoAddAssembliesFromArchCollection);
436436

437437
// Add framework assemblies
438-
AddAssembliesFromCollection (ResolvedFrameworkAssemblies);
438+
AssemblyPackagingHelper.AddAssembliesFromCollection (Log, SupportedAbis, ResolvedFrameworkAssemblies, DoAddAssembliesFromArchCollection);
439439

440440
if (!UseAssemblyStore) {
441441
return;
@@ -459,28 +459,6 @@ void AddAssemblies (ZipArchiveEx apk, bool debug, bool compress, IDictionary<And
459459
AddFileToArchiveIfNewer (apk, wrappedSourcePath, inArchivePath, GetCompressionMethod (inArchivePath));
460460
}
461461

462-
void AddAssembliesFromCollection (ITaskItem[] assemblies)
463-
{
464-
Dictionary<AndroidTargetArch, Dictionary<string, ITaskItem>> perArchAssemblies = MonoAndroidHelper.GetPerArchAssemblies (
465-
assemblies,
466-
SupportedAbis,
467-
validate: true,
468-
shouldSkip: (ITaskItem asm) => {
469-
if (bool.TryParse (asm.GetMetadata ("AndroidSkipAddToPackage"), out bool value) && value) {
470-
Log.LogDebugMessage ($"Skipping {asm.ItemSpec} due to 'AndroidSkipAddToPackage' == 'true' ");
471-
return true;
472-
}
473-
474-
return false;
475-
}
476-
);
477-
478-
foreach (var kvp in perArchAssemblies) {
479-
Log.LogDebugMessage ($"Adding assemblies for architecture '{kvp.Key}'");
480-
DoAddAssembliesFromArchCollection (kvp.Key, kvp.Value);
481-
}
482-
}
483-
484462
void DoAddAssembliesFromArchCollection (AndroidTargetArch arch, Dictionary<string, ITaskItem> assemblies)
485463
{
486464
// In the "all assemblies are per-RID" world, assemblies, pdb and config are disguised as shared libraries (that is,
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
using Microsoft.Android.Build.Tasks;
5+
using Microsoft.Build.Framework;
6+
using Microsoft.Build.Utilities;
7+
using Xamarin.Android.Tools;
8+
9+
namespace Xamarin.Android.Tasks;
10+
11+
static class AssemblyPackagingHelper
12+
{
13+
public static void AddAssembliesFromCollection (TaskLoggingHelper Log, ICollection<string> SupportedAbis, ICollection<ITaskItem> assemblies, Action<AndroidTargetArch, Dictionary<string, ITaskItem>> doAddAssemblies)
14+
{
15+
Dictionary<AndroidTargetArch, Dictionary<string, ITaskItem>> perArchAssemblies = MonoAndroidHelper.GetPerArchAssemblies (
16+
assemblies,
17+
SupportedAbis,
18+
validate: true,
19+
shouldSkip: (ITaskItem asm) => {
20+
if (bool.TryParse (asm.GetMetadata ("AndroidSkipAddToPackage"), out bool value) && value) {
21+
Log.LogDebugMessage ($"Skipping {asm.ItemSpec} due to 'AndroidSkipAddToPackage' == 'true' ");
22+
return true;
23+
}
24+
25+
return false;
26+
}
27+
);
28+
29+
foreach (var kvp in perArchAssemblies) {
30+
Log.LogDebugMessage ($"Adding assemblies for architecture '{kvp.Key}'");
31+
doAddAssemblies (kvp.Key, kvp.Value);
32+
}
33+
}
34+
}

0 commit comments

Comments
 (0)