From 499ecd35d37df8847813158a70315611154a8ec6 Mon Sep 17 00:00:00 2001 From: Iurii Makhno Date: Fri, 19 Aug 2022 16:34:26 +0000 Subject: [PATCH] Fix achitectures and 'camera' component extraction in 'dump badging'. Logic is synchronised with 'aapt': * use 'android.media.*' intents for 'camera' component detection; * use only 'lib/' under root to parse supported archs. Bug: b/243145989 Test: Dump_test.cpp Change-Id: I90fbe802a97a4382e3021b344d0c5e9708563389 --- tools/aapt2/dump/DumpManifest.cpp | 16 ++++++++-------- .../integration-tests/DumpTest/components.apk | Bin 84534 -> 92659 bytes .../DumpTest/components_full_proto.txt | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tools/aapt2/dump/DumpManifest.cpp b/tools/aapt2/dump/DumpManifest.cpp index 39ac24b29f351..b3165d320e9b7 100644 --- a/tools/aapt2/dump/DumpManifest.cpp +++ b/tools/aapt2/dump/DumpManifest.cpp @@ -1981,10 +1981,11 @@ class Action : public ManifestExtractor::Element { if (ElementCast(parent_stack[1])) { // Detects the presence of a particular type of activity. Activity* activity = ElementCast(parent_stack[1]); - auto map = std::map({ - { "android.intent.action.MAIN" , "main" }, - { "android.intent.action.VIDEO_CAMERA" , "camera" }, - { "android.intent.action.STILL_IMAGE_CAMERA_SECURE" , "camera-secure" }, + static const auto map = std::map({ + {"android.intent.action.MAIN", "main"}, + {"android.media.action.VIDEO_CAMERA", "camera"}, + {"android.media.action.STILL_IMAGE_CAMERA", "camera"}, + {"android.media.action.STILL_IMAGE_CAMERA_SECURE", "camera-secure"}, }); auto entry = map.find(action); @@ -2735,10 +2736,9 @@ bool ManifestExtractor::Extract(android::IDiagnostics* diag) { auto it = apk_->GetFileCollection()->Iterator(); while (it->HasNext()) { auto file_path = it->Next()->GetSource().path; - size_t pos = file_path.find("lib/"); - if (pos != std::string::npos) { - file_path = file_path.substr(pos + 4); - pos = file_path.find('/'); + if (file_path.starts_with("lib/")) { + file_path = file_path.substr(4); + size_t pos = file_path.find('/'); if (pos != std::string::npos) { file_path = file_path.substr(0, pos); } diff --git a/tools/aapt2/integration-tests/DumpTest/components.apk b/tools/aapt2/integration-tests/DumpTest/components.apk index deb55ea6fda36bc1c288827c4a73e040f4321c82..a34ec83f3dae3d5d376cfaec58d12f6bd742fb22 100644 GIT binary patch delta 8911 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 diff --git a/tools/aapt2/integration-tests/DumpTest/components_full_proto.txt b/tools/aapt2/integration-tests/DumpTest/components_full_proto.txt index bd7673616ddc8..8e733a5db034a 100644 --- a/tools/aapt2/integration-tests/DumpTest/components_full_proto.txt +++ b/tools/aapt2/integration-tests/DumpTest/components_full_proto.txt @@ -1677,7 +1677,7 @@ xml_files { attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "name" - value: "android.intent.action.VIDEO_CAMERA" + value: "android.media.action.VIDEO_CAMERA" resource_id: 16842755 } } @@ -1691,7 +1691,7 @@ xml_files { attribute { namespace_uri: "http://schemas.android.com/apk/res/android" name: "name" - value: "android.intent.action.STILL_IMAGE_CAMERA_SECURE" + value: "android.media.action.STILL_IMAGE_CAMERA_SECURE" resource_id: 16842755 } }