aapt2: add stringified resource configuration to Configuration.proto

This is needed for adevtool, to reuse large ConfigDescription.to_string() function which is used
for describing resource qualifiers, e.g. "values-mcc123-sw600dp-night-en".

Change-Id: I5d8aaaf276403f4e5c87a88d7d4305bccce9127c
(cherry picked from commit 904098744d59d82b292ced0c0a7fed5b33ab6c95)
diff --git a/tools/aapt2/Configuration.proto b/tools/aapt2/Configuration.proto
index 4883844..a8111a2 100644
--- a/tools/aapt2/Configuration.proto
+++ b/tools/aapt2/Configuration.proto
@@ -213,4 +213,6 @@
   //
 
   string product = 25;
+
+  string stringified = 100;
 }
diff --git a/tools/aapt2/cmd/Convert.h b/tools/aapt2/cmd/Convert.h
index 9452e58..b78029f 100644
--- a/tools/aapt2/cmd/Convert.h
+++ b/tools/aapt2/cmd/Convert.h
@@ -74,6 +74,8 @@
         "Has no effect on APKs where resource names are kept.",
         &table_flattener_options_.deduplicate_entry_values);
     AddOptionalSwitch("-v", "Enables verbose logging", &verbose_);
+    AddOptionalSwitch("--for-adevtool", "This flag exists to prevent using adevtool with "
+            "upstream aapt2 which lacks the Configuration.proto customization.", &for_adevtool_);
   }
 
   int Action(const std::vector<std::string>& args) override;
@@ -91,6 +93,7 @@
   bool force_sparse_encoding_ = false;
   bool enable_compact_entries_ = false;
   std::optional<std::string> resources_config_path_;
+  bool for_adevtool_ = false;
 };
 
 int Convert(IAaptContext* context, LoadedApk* input, IArchiveWriter* output_writer,
diff --git a/tools/aapt2/format/proto/ProtoSerialize.cpp b/tools/aapt2/format/proto/ProtoSerialize.cpp
index 0903205..273f95c 100644
--- a/tools/aapt2/format/proto/ProtoSerialize.cpp
+++ b/tools/aapt2/format/proto/ProtoSerialize.cpp
@@ -63,6 +63,7 @@
 }
 
 void SerializeConfig(const ConfigDescription& config, pb::Configuration* out_pb_config) {
+  out_pb_config->set_stringified(config.to_string());
   out_pb_config->set_mcc(config.mcc);
   out_pb_config->set_mnc(config.mnc);
   out_pb_config->set_locale(config.GetBcp47LanguageTag());