summaryrefslogtreecommitdiff
path: root/tools/aapt2/optimize
diff options
context:
space:
mode:
author Jeremy Meyer <jakmcbane@google.com> 2022-05-20 20:35:42 +0000
committer Jeremy Meyer <jakmcbane@google.com> 2022-05-31 23:43:03 +0000
commit56f36e8f2fa808128bc68d4ae9adad9e65b90367 (patch)
tree07b10081f9a44efde8a3b1cc0c33264253451ca8 /tools/aapt2/optimize
parent14be35a5de080e7ae797edbecd94e0684244d647 (diff)
Move StringPool to libandroidfw
Test: verified affected tests pass Bug: 232940948 Change-Id: I22089893d7e5013f759c39ce190bec07fa6435db
Diffstat (limited to 'tools/aapt2/optimize')
-rw-r--r--tools/aapt2/optimize/MultiApkGenerator.cpp61
-rw-r--r--tools/aapt2/optimize/MultiApkGenerator.h10
-rw-r--r--tools/aapt2/optimize/ResourceDeduper.cpp11
3 files changed, 45 insertions, 37 deletions
diff --git a/tools/aapt2/optimize/MultiApkGenerator.cpp b/tools/aapt2/optimize/MultiApkGenerator.cpp
index c686a10a3fa9..f994e27e4e5b 100644
--- a/tools/aapt2/optimize/MultiApkGenerator.cpp
+++ b/tools/aapt2/optimize/MultiApkGenerator.cpp
@@ -65,7 +65,7 @@ class ContextWrapper : public IAaptContext {
return context_->GetExternalSymbols();
}
- IDiagnostics* GetDiagnostics() override {
+ android::IDiagnostics* GetDiagnostics() override {
if (source_diag_) {
return source_diag_.get();
}
@@ -97,8 +97,8 @@ class ContextWrapper : public IAaptContext {
}
void SetSource(const std::string& source) {
- source_diag_ =
- util::make_unique<SourcePathDiagnostics>(Source{source}, context_->GetDiagnostics());
+ source_diag_ = util::make_unique<android::SourcePathDiagnostics>(android::Source{source},
+ context_->GetDiagnostics());
}
const std::set<std::string>& GetSplitNameDependencies() override {
@@ -107,7 +107,7 @@ class ContextWrapper : public IAaptContext {
private:
IAaptContext* context_;
- std::unique_ptr<SourcePathDiagnostics> source_diag_;
+ std::unique_ptr<android::SourcePathDiagnostics> source_diag_;
int min_sdk_ = -1;
};
@@ -143,7 +143,8 @@ bool MultiApkGenerator::FromBaseApk(const MultiApkGeneratorOptions& options) {
if (it == artifacts_to_keep.end()) {
filtered_artifacts.insert(artifact.name);
if (context_->IsVerbose()) {
- context_->GetDiagnostics()->Note(DiagMessage(artifact.name) << "skipping artifact");
+ context_->GetDiagnostics()->Note(android::DiagMessage(artifact.name)
+ << "skipping artifact");
}
continue;
} else {
@@ -158,28 +159,29 @@ bool MultiApkGenerator::FromBaseApk(const MultiApkGeneratorOptions& options) {
return false;
}
- IDiagnostics* diag = wrapped_context.GetDiagnostics();
+ android::IDiagnostics* diag = wrapped_context.GetDiagnostics();
std::unique_ptr<XmlResource> manifest;
if (!UpdateManifest(artifact, &manifest, diag)) {
- diag->Error(DiagMessage() << "could not update AndroidManifest.xml for output artifact");
+ diag->Error(android::DiagMessage()
+ << "could not update AndroidManifest.xml for output artifact");
return false;
}
std::string out = options.out_dir;
if (!file::mkdirs(out)) {
- diag->Warn(DiagMessage() << "could not create out dir: " << out);
+ diag->Warn(android::DiagMessage() << "could not create out dir: " << out);
}
file::AppendPath(&out, artifact.name);
if (context_->IsVerbose()) {
- diag->Note(DiagMessage() << "Generating split: " << out);
+ diag->Note(android::DiagMessage() << "Generating split: " << out);
}
std::unique_ptr<IArchiveWriter> writer = CreateZipFileArchiveWriter(diag, out);
if (context_->IsVerbose()) {
- diag->Note(DiagMessage() << "Writing output: " << out);
+ diag->Note(android::DiagMessage() << "Writing output: " << out);
}
filters.AddFilter(util::make_unique<SignatureFilter>());
@@ -192,22 +194,25 @@ bool MultiApkGenerator::FromBaseApk(const MultiApkGeneratorOptions& options) {
// Make sure all of the requested artifacts were valid. If there are any kept artifacts left,
// either the config or the command line was wrong.
if (!artifacts_to_keep.empty()) {
- context_->GetDiagnostics()->Error(
- DiagMessage() << "The configuration and command line to filter artifacts do not match");
+ context_->GetDiagnostics()
+ ->Error(android::DiagMessage()
+ << "The configuration and command line to filter artifacts do not match");
- context_->GetDiagnostics()->Error(DiagMessage() << kept_artifacts.size() << " kept:");
+ context_->GetDiagnostics()->Error(android::DiagMessage() << kept_artifacts.size() << " kept:");
for (const auto& artifact : kept_artifacts) {
- context_->GetDiagnostics()->Error(DiagMessage() << " " << artifact);
+ context_->GetDiagnostics()->Error(android::DiagMessage() << " " << artifact);
}
- context_->GetDiagnostics()->Error(DiagMessage() << filtered_artifacts.size() << " filtered:");
+ context_->GetDiagnostics()->Error(android::DiagMessage()
+ << filtered_artifacts.size() << " filtered:");
for (const auto& artifact : filtered_artifacts) {
- context_->GetDiagnostics()->Error(DiagMessage() << " " << artifact);
+ context_->GetDiagnostics()->Error(android::DiagMessage() << " " << artifact);
}
- context_->GetDiagnostics()->Error(DiagMessage() << artifacts_to_keep.size() << " missing:");
+ context_->GetDiagnostics()->Error(android::DiagMessage()
+ << artifacts_to_keep.size() << " missing:");
for (const auto& artifact : artifacts_to_keep) {
- context_->GetDiagnostics()->Error(DiagMessage() << " " << artifact);
+ context_->GetDiagnostics()->Error(android::DiagMessage() << " " << artifact);
}
return false;
@@ -250,7 +255,8 @@ std::unique_ptr<ResourceTable> MultiApkGenerator::FilterTable(IAaptContext* cont
VersionCollapser collapser;
if (!collapser.Consume(&wrapped_context, table.get())) {
- context->GetDiagnostics()->Error(DiagMessage() << "Failed to strip versioned resources");
+ context->GetDiagnostics()->Error(android::DiagMessage()
+ << "Failed to strip versioned resources");
return {};
}
@@ -261,7 +267,7 @@ std::unique_ptr<ResourceTable> MultiApkGenerator::FilterTable(IAaptContext* cont
bool MultiApkGenerator::UpdateManifest(const OutputArtifact& artifact,
std::unique_ptr<XmlResource>* updated_manifest,
- IDiagnostics* diag) {
+ android::IDiagnostics* diag) {
const xml::XmlResource* apk_manifest = apk_->GetManifest();
if (apk_manifest == nullptr) {
return false;
@@ -277,20 +283,21 @@ bool MultiApkGenerator::UpdateManifest(const OutputArtifact& artifact,
}
if (!manifest_el->namespace_uri.empty() || manifest_el->name != "manifest") {
- diag->Error(DiagMessage(manifest->file.source) << "root tag must be <manifest>");
+ diag->Error(android::DiagMessage(manifest->file.source) << "root tag must be <manifest>");
return false;
}
// Retrieve the versionCode attribute.
auto version_code = manifest_el->FindAttribute(kSchemaAndroid, "versionCode");
if (!version_code) {
- diag->Error(DiagMessage(manifest->file.source) << "manifest must have a versionCode attribute");
+ diag->Error(android::DiagMessage(manifest->file.source)
+ << "manifest must have a versionCode attribute");
return false;
}
auto version_code_value = ValueCast<BinaryPrimitive>(version_code->compiled_value.get());
if (!version_code_value) {
- diag->Error(DiagMessage(manifest->file.source) << "versionCode is invalid");
+ diag->Error(android::DiagMessage(manifest->file.source) << "versionCode is invalid");
return false;
}
@@ -300,7 +307,7 @@ bool MultiApkGenerator::UpdateManifest(const OutputArtifact& artifact,
if (version_code_major) {
version_code_major_value = ValueCast<BinaryPrimitive>(version_code_major->compiled_value.get());
if (!version_code_major_value) {
- diag->Error(DiagMessage(manifest->file.source) << "versionCodeMajor is invalid");
+ diag->Error(android::DiagMessage(manifest->file.source) << "versionCodeMajor is invalid");
return false;
}
}
@@ -325,13 +332,15 @@ bool MultiApkGenerator::UpdateManifest(const OutputArtifact& artifact,
} else {
// There was no minSdkVersion. This is strange since at this point we should have been
// through the manifest fixer which sets the default minSdkVersion.
- diag->Error(DiagMessage(manifest->file.source) << "missing minSdkVersion from <uses-sdk>");
+ diag->Error(android::DiagMessage(manifest->file.source)
+ << "missing minSdkVersion from <uses-sdk>");
return false;
}
} else {
// No uses-sdk present. This is strange since at this point we should have been
// through the manifest fixer which should have added it.
- diag->Error(DiagMessage(manifest->file.source) << "missing <uses-sdk> from <manifest>");
+ diag->Error(android::DiagMessage(manifest->file.source)
+ << "missing <uses-sdk> from <manifest>");
return false;
}
}
diff --git a/tools/aapt2/optimize/MultiApkGenerator.h b/tools/aapt2/optimize/MultiApkGenerator.h
index 4a5a6c3d5915..8d8ed651a763 100644
--- a/tools/aapt2/optimize/MultiApkGenerator.h
+++ b/tools/aapt2/optimize/MultiApkGenerator.h
@@ -22,10 +22,9 @@
#include <unordered_set>
#include <vector>
-#include "androidfw/ConfigDescription.h"
-
-#include "Diagnostics.h"
#include "LoadedApk.h"
+#include "androidfw/ConfigDescription.h"
+#include "androidfw/IDiagnostics.h"
#include "configuration/ConfigurationParser.h"
namespace aapt {
@@ -58,12 +57,13 @@ class MultiApkGenerator {
FilterChain* chain);
private:
- IDiagnostics* GetDiagnostics() {
+ android::IDiagnostics* GetDiagnostics() {
return context_->GetDiagnostics();
}
bool UpdateManifest(const configuration::OutputArtifact& artifact,
- std::unique_ptr<xml::XmlResource>* updated_manifest, IDiagnostics* diag);
+ std::unique_ptr<xml::XmlResource>* updated_manifest,
+ android::IDiagnostics* diag);
/**
* Adds the <screen> elements to the parent node for the provided density configuration.
diff --git a/tools/aapt2/optimize/ResourceDeduper.cpp b/tools/aapt2/optimize/ResourceDeduper.cpp
index 0278b439cfae..c71cb4c21020 100644
--- a/tools/aapt2/optimize/ResourceDeduper.cpp
+++ b/tools/aapt2/optimize/ResourceDeduper.cpp
@@ -77,12 +77,11 @@ class DominatedKeyValueRemover : public DominatorTree::BottomUpVisitor {
}
}
if (context_->IsVerbose()) {
- context_->GetDiagnostics()->Note(
- DiagMessage(node_value->value->GetSource())
- << "removing dominated duplicate resource with name \""
- << entry_->name << "\"");
- context_->GetDiagnostics()->Note(
- DiagMessage(parent_value->value->GetSource()) << "dominated here");
+ context_->GetDiagnostics()->Note(android::DiagMessage(node_value->value->GetSource())
+ << "removing dominated duplicate resource with name \""
+ << entry_->name << "\"");
+ context_->GetDiagnostics()->Note(android::DiagMessage(parent_value->value->GetSource())
+ << "dominated here");
}
node_value->value = {};
}