AAPT2: Allow the ';' separator on Windows for split args

Bug: 36870463
Test: manual (wine)
Change-Id: I8a38545a3cac9354b41858e1840b197b60925c03
This commit is contained in:
Adam Lesinski
2017-04-13 12:48:56 -07:00
parent ec8f353668
commit db091577ff
3 changed files with 16 additions and 7 deletions

View File

@@ -1785,9 +1785,9 @@ int Link(const std::vector<StringPiece>& args) {
.OptionalSwitch("-z", "Require localization of strings marked 'suggested'.",
&require_localization)
.OptionalFlagList("-c",
"Comma separated list of configurations to include. The default\n"
"is all configurations.",
&configs)
"Comma separated list of configurations to include. The default\n"
"is all configurations.",
&configs)
.OptionalFlag("--preferred-density",
"Selects the closest matching density and strips out all others.",
&preferred_density)
@@ -1855,7 +1855,8 @@ int Link(const std::vector<StringPiece>& args) {
&options.extensions_to_not_compress)
.OptionalFlagList("--split",
"Split resources matching a set of configs out to a Split APK.\n"
"Syntax: path/to/output.apk:<config>[,<config>[...]].",
"Syntax: path/to/output.apk:<config>[,<config>[...]].\n"
"On Windows, use a semicolon ';' separator instead.",
&split_args)
.OptionalSwitch("-v", "Enables verbose logging.", &verbose);

View File

@@ -302,7 +302,8 @@ int Optimize(const std::vector<StringPiece>& args) {
&configs)
.OptionalFlagList("--split",
"Split resources matching a set of configs out to a "
"Split APK.\nSyntax: path/to/output.apk:<config>[,<config>[...]].",
"Split APK.\nSyntax: path/to/output.apk;<config>[,<config>[...]].\n"
"On Windows, use a semicolon ';' separator instead.",
&split_args)
.OptionalSwitch("--enable-sparse-encoding",
"Enables encoding sparse entries using a binary search tree.\n"

View File

@@ -57,10 +57,17 @@ bool ParseSplitParameter(const StringPiece& arg, IDiagnostics* diag, std::string
CHECK(out_path != nullptr);
CHECK(out_split != nullptr);
std::vector<std::string> parts = util::Split(arg, ':');
#ifdef _WIN32
const char sSeparator = ';';
#else
const char sSeparator = ':';
#endif
std::vector<std::string> parts = util::Split(arg, sSeparator);
if (parts.size() != 2) {
diag->Error(DiagMessage() << "invalid split parameter '" << arg << "'");
diag->Note(DiagMessage() << "should be --split path/to/output.apk:<config>[,<config>...]");
diag->Note(DiagMessage() << "should be --split path/to/output.apk" << sSeparator
<< "<config>[,<config>...].");
return false;
}