diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/GetImportedLibraries.cs b/src/Xamarin.Android.Build.Tasks/Tasks/GetImportedLibraries.cs index 153c76a1680..41c342be7ab 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/GetImportedLibraries.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/GetImportedLibraries.cs @@ -1,14 +1,10 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.IO; using System.Linq; -using System.Xml; using System.Xml.Linq; -using Mono.Cecil; using Microsoft.Build.Utilities; using Microsoft.Build.Framework; -using System.Text.RegularExpressions; namespace Xamarin.Android.Tasks { @@ -36,28 +32,34 @@ public class GetImportedLibraries : Task public override bool Execute () { - Log.LogDebugMessage ("GetImportedLibraries Task"); - Log.LogDebugMessage (" TargetDirectory: {0}", TargetDirectory); if (!Directory.Exists (TargetDirectory)) { Log.LogDebugMessage ("Target directory was not found"); return true; } - // there could be ./AndroidManifest.xml and bin/AndroidManifest.xml, which will be the same. So, ignore "bin" ones. + var manifestDocuments = new List (); - foreach (var f in Directory.EnumerateFiles (TargetDirectory, "AndroidManifest.xml", SearchOption.AllDirectories)) { - var directory = Path.GetFileName (Path.GetDirectoryName (f)); - if (IgnoredManifestDirectories.Contains (directory)) - continue; - manifestDocuments.Add (new TaskItem (f)); + var nativeLibraries = new List (); + var jarFiles = new List (); + foreach (var file in Directory.EnumerateFiles (TargetDirectory, "*", SearchOption.AllDirectories)) { + if (file.EndsWith (".so", StringComparison.OrdinalIgnoreCase)) { + if (MonoAndroidHelper.GetNativeLibraryAbi (file) != null) + nativeLibraries.Add (new TaskItem (file)); + } else if (file.EndsWith (".jar", StringComparison.OrdinalIgnoreCase)) { + jarFiles.Add (new TaskItem (file)); + } else if (file.EndsWith (".xml", StringComparison.OrdinalIgnoreCase)) { + if (Path.GetFileName (file) == "AndroidManifest.xml") { + // there could be ./AndroidManifest.xml and bin/AndroidManifest.xml, which will be the same. So, ignore "bin" ones. + var directory = Path.GetFileName (Path.GetDirectoryName (file)); + if (IgnoredManifestDirectories.Contains (directory)) + continue; + manifestDocuments.Add (new TaskItem (file)); + } + } } + ManifestDocuments = manifestDocuments.ToArray (); - NativeLibraries = Directory.GetFiles (TargetDirectory, "*.so", SearchOption.AllDirectories) - .Where (p => MonoAndroidHelper.GetNativeLibraryAbi (p) != null) - .Select (p => new TaskItem (p)).ToArray (); - Jars = Directory.GetFiles (TargetDirectory, "*.jar", SearchOption.AllDirectories).Select (p => new TaskItem (p)).ToArray (); - Log.LogDebugTaskItems (" NativeLibraries: ", NativeLibraries); - Log.LogDebugTaskItems (" Jars: ", Jars); - Log.LogDebugTaskItems (" ManifestDocuments: ", ManifestDocuments); + NativeLibraries = nativeLibraries.ToArray (); + Jars = jarFiles.ToArray (); if (!string.IsNullOrEmpty (CacheFile)) { var document = new XDocument ( @@ -70,6 +72,10 @@ public override bool Execute () document.SaveIfChanged (CacheFile); } + Log.LogDebugTaskItems (" NativeLibraries: ", NativeLibraries); + Log.LogDebugTaskItems (" Jars: ", Jars); + Log.LogDebugTaskItems (" ManifestDocuments: ", ManifestDocuments); + return true; } } diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index 7746e11c624..a806ba4982d 100755 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -1462,14 +1462,15 @@ because xbuild doesn't support framework reference assemblies. - + - + - + @@ -3220,7 +3221,6 @@ because xbuild doesn't support framework reference assemblies. -