[Xamarin.Android.Build.Tasks] Properly quote -libraryjars (#666) #670
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context: https://bugzilla.xamarin.com/show_bug.cgi?id=32861
Scenario: Build a project in Release configuration with
$(AndroidEnableProguard)
=True on Windows.Expected result: it works!
Actual result: It doesn't:
Commit 8467ad6 attempted to fix this by "double-quoting" the
-libraryjars
option. Unfortunately, we inadvertantly triple-quotedthe value (!)
The
\"
is unexpected, and problematic. It should be:The "actual" cause -- other than inadequate testing, and a need to run
unit tests more frequently on Windows -- is that we used
CommandLineBuilder.AppendSwitchIfNotNull()
with-libraryjars
.This is problematic because
AppendSwitchIfNotNull()
will "escape"embedded double-quotes, which is what is introducing the
\"
quotesand the 3rd level of quoting.
Use
CommandLineBuilder.AppendSwitchUnquotedIfNotNull()
instead, toavoid the extra and erroneous quoting.
Additionally,
-include
needs double-quoting as well on Windows.Fixup
-include
generation in the<Proguard/>
and<CreateMultiDexMainDexClassList/>
tasks.