AAPT2: Accept a file with arguments when argument list is too long
Bug:22775504
Change-Id: Ife73d4e4611016c9ee7b56264bc6a765c54beba3
diff --git a/tools/aapt2/util/Files.cpp b/tools/aapt2/util/Files.cpp
index bb093ab..f5e49f1 100644
--- a/tools/aapt2/util/Files.cpp
+++ b/tools/aapt2/util/Files.cpp
@@ -18,6 +18,7 @@
#include "util/Util.h"
#include <algorithm>
+#include <android-base/file.h>
#include <cerrno>
#include <cstdio>
#include <dirent.h>
@@ -190,6 +191,23 @@
return std::move(fileMap);
}
+bool appendArgsFromFile(const StringPiece& path, std::vector<std::string>* outArgList,
+ std::string* outError) {
+ std::string contents;
+ if (!android::base::ReadFileToString(path.toString(), &contents)) {
+ if (outError) *outError = "failed to read argument-list file";
+ return false;
+ }
+
+ for (StringPiece line : util::tokenize<char>(contents, ' ')) {
+ line = util::trimWhitespace(line);
+ if (!line.empty()) {
+ outArgList->push_back(line.toString());
+ }
+ }
+ return true;
+}
+
bool FileFilter::setPattern(const StringPiece& pattern) {
mPatternTokens = util::splitAndLowercase(pattern, ':');
return true;