AAPT2: Fix product support
Previously the default product wasn't tried if 'default' wasn't specified on the command line.
Also adds support for multiple products.
Change-Id: I1e4872b34bb8d609b6444841a4e7e4dbb3bbb76b
diff --git a/tools/aapt2/compile/Compile.cpp b/tools/aapt2/compile/Compile.cpp
index 967e236..b3b0f65 100644
--- a/tools/aapt2/compile/Compile.cpp
+++ b/tools/aapt2/compile/Compile.cpp
@@ -105,7 +105,7 @@
struct CompileOptions {
std::string outputPath;
Maybe<std::string> resDir;
- Maybe<std::u16string> product;
+ std::vector<std::u16string> products;
bool pseudolocalize = false;
bool verbose = false;
};
@@ -191,7 +191,7 @@
xml::XmlPullParser xmlParser(fin);
ResourceParserOptions parserOptions;
- parserOptions.product = options.product;
+ parserOptions.products = options.products;
// If the filename includes donottranslate, then the default translatable is false.
parserOptions.translatable = pathData.name.find(u"donottranslate") == std::string::npos;
@@ -430,10 +430,11 @@
int compile(const std::vector<StringPiece>& args) {
CompileOptions options;
- Maybe<std::string> product;
+ Maybe<std::string> productList;
Flags flags = Flags()
.requiredFlag("-o", "Output path", &options.outputPath)
- .optionalFlag("--product", "Product type to compile", &product)
+ .optionalFlag("--product", "Comma separated list of product types to compile",
+ &productList)
.optionalFlag("--dir", "Directory to scan for resources", &options.resDir)
.optionalSwitch("--pseudo-localize", "Generate resources for pseudo-locales "
"(en-XA and ar-XB)", &options.pseudolocalize)
@@ -442,8 +443,10 @@
return 1;
}
- if (product) {
- options.product = util::utf8ToUtf16(product.value());
+ if (productList) {
+ for (StringPiece part : util::tokenize<char>(productList.value(), ',')) {
+ options.products.push_back(util::utf8ToUtf16(part));
+ }
}
CompileContext context;