Revert "Use reference counted pointers for ApkAssets"

This reverts commit c357f719ed3734aee05418808699a48dd150a1a5.

Reason for revert: b/279154343 - performance regression

Change-Id: If2e212d8fc5b9ed8638032a33f450440cbaeceb0
diff --git a/cmds/idmap2/idmap2/Lookup.cpp b/cmds/idmap2/idmap2/Lookup.cpp
index add0d8d..f41e57c 100644
--- a/cmds/idmap2/idmap2/Lookup.cpp
+++ b/cmds/idmap2/idmap2/Lookup.cpp
@@ -174,7 +174,7 @@
     return Error("failed to parse config");
   }
 
-  std::vector<AssetManager2::ApkAssetsPtr> apk_assets;
+  std::vector<std::unique_ptr<const ApkAssets>> apk_assets;
   std::string target_path;
   std::string target_package_name;
   for (size_t i = 0; i < idmap_paths.size(); i++) {
@@ -217,21 +217,24 @@
     apk_assets.push_back(std::move(overlay_apk));
   }
 
-  {
-    // Make sure |apk_assets| vector outlives the asset manager as it doesn't own the assets.
-    AssetManager2 am(apk_assets, config);
+  // AssetManager2::SetApkAssets requires raw ApkAssets pointers, not unique_ptrs
+  std::vector<const ApkAssets*> raw_pointer_apk_assets;
+  std::transform(apk_assets.cbegin(), apk_assets.cend(), std::back_inserter(raw_pointer_apk_assets),
+                 [](const auto& p) -> const ApkAssets* { return p.get(); });
+  AssetManager2 am;
+  am.SetApkAssets(raw_pointer_apk_assets);
+  am.SetConfiguration(config);
 
-    const Result<ResourceId> resid = ParseResReference(am, resid_str, target_package_name);
-    if (!resid) {
-      return Error(resid.GetError(), "failed to parse resource ID");
-    }
-
-    const Result<std::string> value = GetValue(&am, *resid);
-    if (!value) {
-      return Error(value.GetError(), "resource 0x%08x not found", *resid);
-    }
-    std::cout << *value << std::endl;
+  const Result<ResourceId> resid = ParseResReference(am, resid_str, target_package_name);
+  if (!resid) {
+    return Error(resid.GetError(), "failed to parse resource ID");
   }
 
+  const Result<std::string> value = GetValue(&am, *resid);
+  if (!value) {
+    return Error(value.GetError(), "resource 0x%08x not found", *resid);
+  }
+  std::cout << *value << std::endl;
+
   return Unit{};
 }
diff --git a/cmds/idmap2/libidmap2/ResourceContainer.cpp b/cmds/idmap2/libidmap2/ResourceContainer.cpp
index 7869fbd..0e35904 100644
--- a/cmds/idmap2/libidmap2/ResourceContainer.cpp
+++ b/cmds/idmap2/libidmap2/ResourceContainer.cpp
@@ -262,7 +262,7 @@
 }
 
 struct ResState {
-  AssetManager2::ApkAssetsPtr apk_assets;
+  std::unique_ptr<ApkAssets> apk_assets;
   const LoadedArsc* arsc;
   const LoadedPackage* package;
   std::unique_ptr<AssetManager2> am;
@@ -284,7 +284,7 @@
     }
 
     state.am = std::make_unique<AssetManager2>();
-    if (!state.am->SetApkAssets({state.apk_assets})) {
+    if (!state.am->SetApkAssets({state.apk_assets.get()})) {
       return Error("failed to create asset manager");
     }
 
diff --git a/cmds/idmap2/tests/ResourceUtilsTests.cpp b/cmds/idmap2/tests/ResourceUtilsTests.cpp
index 011040b..6914208 100644
--- a/cmds/idmap2/tests/ResourceUtilsTests.cpp
+++ b/cmds/idmap2/tests/ResourceUtilsTests.cpp
@@ -38,7 +38,7 @@
     apk_assets_ = ApkAssets::Load(GetTargetApkPath());
     ASSERT_THAT(apk_assets_, NotNull());
 
-    am_.SetApkAssets({apk_assets_});
+    am_.SetApkAssets({apk_assets_.get()});
   }
 
   const AssetManager2& GetAssetManager() {
@@ -47,7 +47,7 @@
 
  private:
   AssetManager2 am_;
-  AssetManager2::ApkAssetsPtr apk_assets_;
+  std::unique_ptr<const ApkAssets> apk_assets_;
 };
 
 TEST_F(ResourceUtilsTests, ResToTypeEntryName) {