summaryrefslogtreecommitdiff
path: root/libs/androidfw/ZipFileRO.cpp
diff options
context:
space:
mode:
authorYusuke Sato <yusukes@google.com>2015-08-03 16:17:16 -0700
committerYusuke Sato <yusukes@google.com>2015-08-03 17:24:32 -0700
commit957c23775f46c26142bc6d4f9a592ac4586a9ef8 (patch)
treeb0e5e6aa058940d5acd4afdf279f1db30bfd74b1 /libs/androidfw/ZipFileRO.cpp
parent608ad1409dc3cd86a66208ddaa31e3a4c54adfac (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.cpp10
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;