From 957c23775f46c26142bc6d4f9a592ac4586a9ef8 Mon Sep 17 00:00:00 2001 From: Yusuke Sato Date: Mon, 3 Aug 2015 16:17:16 -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. (cherry-pick of 34fe3df8519523dbb4bc27010fa57f259d5e868d) Bug: 21957428 Change-Id: I5ebe0438019958d883a7fda6bd92ea4484211d23 --- libs/androidfw/ZipFileRO.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'libs/androidfw/ZipFileRO.cpp') 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 @@ -126,10 +126,18 @@ 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; -- cgit v1.2.3-59-g8ed1b