From 34fe3df8519523dbb4bc27010fa57f259d5e868d Mon Sep 17 00:00:00 2001 From: Yusuke Sato Date: Fri, 19 Jun 2015 17:18:07 -0700 Subject: 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. Bug: 21957428 Change-Id: I315fd3c6d5aa1076b993752525de449a9933de12 --- libs/androidfw/ZipFileRO.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'libs/androidfw') diff --git a/libs/androidfw/ZipFileRO.cpp b/libs/androidfw/ZipFileRO.cpp index 6f927b4..a6f6d8c 100644 --- a/libs/androidfw/ZipFileRO.cpp +++ b/libs/androidfw/ZipFileRO.cpp @@ -126,10 +126,18 @@ bool ZipFileRO::getEntryInfo(ZipEntryRO entry, uint16_t* pMethod, return true; } -bool ZipFileRO::startIteration(void** cookie) +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; - int32_t error = StartIteration(mHandle, &(ze->cookie), NULL /* prefix */); + ZipEntryName pe(prefix ? prefix : ""); + ZipEntryName se(suffix ? suffix : ""); + int32_t error = StartIteration(mHandle, &(ze->cookie), + prefix ? &pe : NULL, + suffix ? &se : NULL); if (error) { ALOGW("Could not start iteration over %s: %s", mFileName, ErrorCodeString(error)); delete ze; -- cgit v1.1