Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,8 @@ void Extract (

// temporarily extracted directory will look like:
// __library_projects__/[dllname]/[library_project_imports | jlibs]/bin
ZipFile.ExtractToDirectory (finfo.FullName, outDirForDll);
using (var zip = MonoAndroidHelper.ReadZipFile (finfo.FullName))
Files.ExtractAll (zip, outDirForDll);

// We used to *copy* the resources to overwrite other resources,
// which resulted in missing resource issue.
Expand Down
7 changes: 4 additions & 3 deletions src/Xamarin.Android.Build.Tasks/Utilities/Files.cs
Original file line number Diff line number Diff line change
Expand Up @@ -198,16 +198,17 @@ public static void ExtractAll(ZipArchive zip, string destination, Action<int, in
int i = 0;
int total = zip.Entries.Count;
foreach (var entry in zip.Entries) {

if (string.Equals(entry.FullName, "__MACOSX", StringComparison.OrdinalIgnoreCase) ||
string.Equals(entry.FullName, ".DS_Store", StringComparison.OrdinalIgnoreCase))
if (entry.FullName.Contains ("/__MACOSX/") ||
entry.FullName.EndsWith ("/__MACOSX", StringComparison.OrdinalIgnoreCase) ||
entry.FullName.EndsWith ("/.DS_Store", StringComparison.OrdinalIgnoreCase))
continue;
if (entry.IsDirectory ()) {
Directory.CreateDirectory (Path.Combine (destination, entry.FullName));
continue;
}
if (progressCallback != null)
progressCallback (i++, total);
Directory.CreateDirectory (Path.Combine (destination, Path.GetDirectoryName (entry.FullName)));
entry.ExtractToFile (Path.Combine (destination, entry.FullName), overwrite: true);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public static void AddFiles (this ZipArchive archive, IEnumerable<string> fileNa

public static bool ContainsEntry (this ZipArchive archive, string entryName)
{
return archive.Entries.Any (x => string.Compare (x.Name, entryName, StringComparison.OrdinalIgnoreCase) == 0);
return archive.Entries.Any (x => string.Compare (x.FullName, entryName, StringComparison.OrdinalIgnoreCase) == 0);
}

public static bool IsDirectory (this ZipArchiveEntry entry)
Expand Down