diff options
author | Yusuke Sato <yusukes@google.com> | 2015-08-03 16:17:16 -0700 |
---|---|---|
committer | Yusuke Sato <yusukes@google.com> | 2015-08-03 17:24:32 -0700 |
commit | 957c23775f46c26142bc6d4f9a592ac4586a9ef8 (patch) | |
tree | b0e5e6aa058940d5acd4afdf279f1db30bfd74b1 /libs/androidfw/ZipFileRO.cpp | |
parent | 608ad1409dc3cd86a66208ddaa31e3a4c54adfac (diff) |
Let findSupportedAbi and hasRenderscriptBitcode scan only relevant files
for better performance. Without the optimization, these two functions
may check more than 100k file names in the pre-installed APK files,
which can take a few seconds to finish even on a recent device.
(cherry-pick of 34fe3df8519523dbb4bc27010fa57f259d5e868d)
Bug: 21957428
Change-Id: I5ebe0438019958d883a7fda6bd92ea4484211d23
Diffstat (limited to 'libs/androidfw/ZipFileRO.cpp')
-rw-r--r-- | libs/androidfw/ZipFileRO.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libs/androidfw/ZipFileRO.cpp b/libs/androidfw/ZipFileRO.cpp index bdb659c38b42..37aae524d889 100644 --- a/libs/androidfw/ZipFileRO.cpp +++ b/libs/androidfw/ZipFileRO.cpp @@ -127,9 +127,17 @@ bool ZipFileRO::getEntryInfo(ZipEntryRO entry, uint16_t* pMethod, bool ZipFileRO::startIteration(void** cookie) { + return startIteration(cookie, NULL, NULL); +} + +bool ZipFileRO::startIteration(void** cookie, const char* prefix, const char* suffix) +{ _ZipEntryRO* ze = new _ZipEntryRO; + ZipString pe(prefix ? prefix : ""); + ZipString se(suffix ? suffix : ""); int32_t error = StartIteration(mHandle, &(ze->cookie), - NULL /* prefix */, NULL /* suffix */); + prefix ? &pe : NULL, + suffix ? &se : NULL); if (error) { ALOGW("Could not start iteration over %s: %s", mFileName, ErrorCodeString(error)); delete ze; |