AAPT2: Error reporting through JNI.
Rather than relying on stderr being wired correctly.
Test: Tests for JNI integration in studio-master-dev.
Change-Id: I1c7e7130bc4e56d61de259a9596bee3a6b3520fb
diff --git a/tools/aapt2/cmd/Compile.cpp b/tools/aapt2/cmd/Compile.cpp
index b93c6ec..5413b33 100644
--- a/tools/aapt2/cmd/Compile.cpp
+++ b/tools/aapt2/cmd/Compile.cpp
@@ -598,6 +598,9 @@
class CompileContext : public IAaptContext {
public:
+ CompileContext(IDiagnostics* diagnostics) : diagnostics_(diagnostics) {
+ }
+
PackageType GetPackageType() override {
// Every compilation unit starts as an app and then gets linked as potentially something else.
return PackageType::kApp;
@@ -612,7 +615,7 @@
}
IDiagnostics* GetDiagnostics() override {
- return &diagnostics_;
+ return diagnostics_;
}
NameMangler* GetNameMangler() override {
@@ -639,7 +642,7 @@
}
private:
- StdErrDiagnostics diagnostics_;
+ IDiagnostics* diagnostics_;
bool verbose_ = false;
};
@@ -647,8 +650,8 @@
* Entry point for compilation phase. Parses arguments and dispatches to the
* correct steps.
*/
-int Compile(const std::vector<StringPiece>& args) {
- CompileContext context;
+int Compile(const std::vector<StringPiece>& args, IDiagnostics* diagnostics) {
+ CompileContext context(diagnostics);
CompileOptions options;
bool verbose = false;
diff --git a/tools/aapt2/cmd/Link.cpp b/tools/aapt2/cmd/Link.cpp
index 258516d..93748d3 100644
--- a/tools/aapt2/cmd/Link.cpp
+++ b/tools/aapt2/cmd/Link.cpp
@@ -118,7 +118,8 @@
class LinkContext : public IAaptContext {
public:
- LinkContext() : name_mangler_({}), symbols_(&name_mangler_) {
+ LinkContext(IDiagnostics* diagnostics)
+ : diagnostics_(diagnostics), name_mangler_({}), symbols_(&name_mangler_) {
}
PackageType GetPackageType() override {
@@ -130,7 +131,7 @@
}
IDiagnostics* GetDiagnostics() override {
- return &diagnostics_;
+ return diagnostics_;
}
NameMangler* GetNameMangler() override {
@@ -181,7 +182,7 @@
DISALLOW_COPY_AND_ASSIGN(LinkContext);
PackageType package_type_ = PackageType::kApp;
- StdErrDiagnostics diagnostics_;
+ IDiagnostics* diagnostics_;
NameMangler name_mangler_;
std::string compilation_package_;
uint8_t package_id_ = 0x0;
@@ -1736,8 +1737,8 @@
std::map<size_t, std::string> shared_libs_;
};
-int Link(const std::vector<StringPiece>& args) {
- LinkContext context;
+int Link(const std::vector<StringPiece>& args, IDiagnostics* diagnostics) {
+ LinkContext context(diagnostics);
LinkOptions options;
std::vector<std::string> overlay_arg_list;
std::vector<std::string> extra_java_packages;