Support multiple UsesConfiguration in proto format.

Bug: b/260704482
Test: Dump_test
Change-Id: If3b3574356957a18263272286b5eaea2465d9e62
diff --git a/tools/aapt2/ApkInfo.proto b/tools/aapt2/ApkInfo.proto
index 80bdccb..b5ff71f 100644
--- a/tools/aapt2/ApkInfo.proto
+++ b/tools/aapt2/ApkInfo.proto
@@ -40,7 +40,8 @@
   PackageInfo package = 1;
   Application application = 2;
   UsesSdk uses_sdk = 3;
-  UsesConfiguration uses_configuration = 4;
+  // Previously: UsesConfiguration uses_configuration = 4;
+  reserved 4;
   SupportsScreen supports_screen = 5;
   SupportsInput supports_input = 6;
   LaunchableActivity launchable_activity = 7;
@@ -57,6 +58,8 @@
   repeated string locales = 17;
   repeated int32 densities = 18;
 
+  repeated UsesPackage uses_packages = 51;
+  repeated UsesConfiguration uses_configurations = 52;
   repeated FeatureGroup feature_groups = 53;
   repeated UsesPermission uses_permissions = 54;
   repeated Permission permissions = 55;
@@ -64,7 +67,6 @@
   repeated UsesStaticLibrary uses_static_libraries = 57;
   repeated UsesSdkLibrary uses_sdk_libraries = 58;
   repeated UsesNativeLibrary uses_native_libraries = 59;
-  repeated UsesPackage uses_packages = 51;
 
   repeated Metadata metadata = 62;
   repeated Property properties = 63;
diff --git a/tools/aapt2/dump/DumpManifest.cpp b/tools/aapt2/dump/DumpManifest.cpp
index d60869a..76a6db6 100644
--- a/tools/aapt2/dump/DumpManifest.cpp
+++ b/tools/aapt2/dump/DumpManifest.cpp
@@ -901,7 +901,7 @@
   }
 
   void ToProto(pb::Badging* out_badging) override {
-    auto out_configuration = out_badging->mutable_uses_configuration();
+    auto out_configuration = out_badging->add_uses_configurations();
     out_configuration->set_req_touch_screen(req_touch_screen);
     out_configuration->set_req_keyboard_type(req_keyboard_type);
     out_configuration->set_req_hard_keyboard(req_hard_keyboard);
diff --git a/tools/aapt2/integration-tests/DumpTest/components_expected_proto.txt b/tools/aapt2/integration-tests/DumpTest/components_expected_proto.txt
index 4aed4af..456a5a7 100644
--- a/tools/aapt2/integration-tests/DumpTest/components_expected_proto.txt
+++ b/tools/aapt2/integration-tests/DumpTest/components_expected_proto.txt
@@ -40,13 +40,6 @@
     min_sdk_version: 21
     target_sdk_version: 31
   }
-  uses_configuration {
-    req_touch_screen: 3
-    req_keyboard_type: 2
-    req_hard_keyboard: -1
-    req_navigation: 3
-    req_five_way_nav: -1
-  }
   supports_screen {
     screens: NORMAL
     screens: LARGE
@@ -101,6 +94,13 @@
   densities: 480
   densities: 640
   densities: 65534
+  uses_configurations {
+    req_touch_screen: 3
+    req_keyboard_type: 2
+    req_hard_keyboard: -1
+    req_navigation: 3
+    req_five_way_nav: -1
+  }
   feature_groups {
     features {
       name: "android.hardware.bluetooth"
diff --git a/tools/aapt2/integration-tests/DumpTest/components_full_proto.txt b/tools/aapt2/integration-tests/DumpTest/components_full_proto.txt
index c783f47..a7e8353 100644
--- a/tools/aapt2/integration-tests/DumpTest/components_full_proto.txt
+++ b/tools/aapt2/integration-tests/DumpTest/components_full_proto.txt
@@ -40,13 +40,6 @@
     min_sdk_version: 21
     target_sdk_version: 31
   }
-  uses_configuration {
-    req_touch_screen: 3
-    req_keyboard_type: 2
-    req_hard_keyboard: -1
-    req_navigation: 3
-    req_five_way_nav: -1
-  }
   supports_screen {
     screens: NORMAL
     screens: LARGE
@@ -101,6 +94,13 @@
   densities: 480
   densities: 640
   densities: 65534
+  uses_configurations {
+    req_touch_screen: 3
+    req_keyboard_type: 2
+    req_hard_keyboard: -1
+    req_navigation: 3
+    req_five_way_nav: -1
+  }
   feature_groups {
     features {
       name: "android.hardware.bluetooth"