diff options
author | MÃ¥rten Kongstad <marten.kongstad@volvocars.com> | 2021-05-10 11:00:17 +0000 |
---|---|---|
committer | Ryan Mitchell <rtmitchell@google.com> | 2021-06-02 21:54:40 +0000 |
commit | 99ae898d3cc484de91bd8df6c93514c25f0b0dce (patch) | |
tree | 7ff728cccba7456f3e0c2ed98f88f12c097e9923 /cmds/idmap2/idmap2d/Idmap2Service.cpp | |
parent | a384fb763717ac0b841605b0b16b23784c09fc90 (diff) |
OMS: include idmap data in dump
Teach the overlay manager to ask the idmap service to pretty print the
contents of each idmap file as part of OMS dump. This creates a single
entry point for dumping both OMS and idmap data, and circumvents the
problem of accessing the idmap service if it has been killed due to
inactivity.
Example idmap section:
---- 8< ----
IDMAP OF com.android.theme.color.sand
Paths:
target path : /system/framework/framework-res.apk
overlay path : /product/overlay/AccentColorSand/AccentColorSandOverlay.apk
Debug info:
W failed to find resource 'string/accent_color_overlay'
Mapping:
0x0106006e -> 0x7f010000 (color/accent_device_default_dark -> color/accent_device_default_dark)
0x01060070 -> 0x7f010001 (color/accent_device_default_light -> color/accent_device_default_light)
---- >8 ----
Bug: 189963636
Test: adb exec-out dumpsys
Test: adb exec-out cmd overlay dump
Test: adb exec-out cmd overlay dump <overlay-identifier>
Change-Id: I9de6ba646ad4714c9d0f0d8081fbf632577107e7
Diffstat (limited to 'cmds/idmap2/idmap2d/Idmap2Service.cpp')
-rw-r--r-- | cmds/idmap2/idmap2d/Idmap2Service.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/cmds/idmap2/idmap2d/Idmap2Service.cpp b/cmds/idmap2/idmap2d/Idmap2Service.cpp index 4f775aa52195..73a7240219af 100644 --- a/cmds/idmap2/idmap2d/Idmap2Service.cpp +++ b/cmds/idmap2/idmap2d/Idmap2Service.cpp @@ -33,6 +33,7 @@ #include "idmap2/BinaryStreamVisitor.h" #include "idmap2/FileUtils.h" #include "idmap2/Idmap.h" +#include "idmap2/PrettyPrintVisitor.h" #include "idmap2/Result.h" #include "idmap2/SysTrace.h" @@ -45,6 +46,7 @@ using android::idmap2::FabricatedOverlayContainer; using android::idmap2::Idmap; using android::idmap2::IdmapHeader; using android::idmap2::OverlayResourceContainer; +using android::idmap2::PrettyPrintVisitor; using android::idmap2::TargetResourceContainer; using android::idmap2::utils::kIdmapCacheDir; using android::idmap2::utils::kIdmapFilePermissionMask; @@ -352,4 +354,24 @@ binder::Status Idmap2Service::deleteFabricatedOverlay(const std::string& overlay return ok(); } +binder::Status Idmap2Service::dumpIdmap(const std::string& overlay_path, + std::string* _aidl_return) { + assert(_aidl_return); + + const auto idmap_path = Idmap::CanonicalIdmapPathFor(kIdmapCacheDir, overlay_path); + std::ifstream fin(idmap_path); + const auto idmap = Idmap::FromBinaryStream(fin); + fin.close(); + if (!idmap) { + return error(idmap.GetErrorMessage()); + } + + std::stringstream stream; + PrettyPrintVisitor visitor(stream); + (*idmap)->accept(&visitor); + *_aidl_return = stream.str(); + + return ok(); +} + } // namespace android::os |