mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-11-11 09:40:28 +03:00
use partial androguard binary XML parsing to speed up APK ID lookup
Normally, androguard parses the entire APK before it is possible to get any values from it. This uses androguard primitives to only attempt to parse the AndroidManifest.xml, then to quit as soon as it gets what it needs. This greatly speeds up the parsing (1 minute vs 60 minutes). fdroid/fdroidserver#557
This commit is contained in:
parent
fa09337b4b
commit
a3cecc16a3
2 changed files with 69 additions and 12 deletions
|
|
@ -611,14 +611,14 @@ class CommonTest(unittest.TestCase):
|
|||
for apkfilename, appid, versionCode, versionName in testcases:
|
||||
if 'aapt' in config:
|
||||
a, vc, vn = fdroidserver.common.get_apk_id_aapt(apkfilename)
|
||||
self.assertEqual(appid, a)
|
||||
self.assertEqual(versionCode, vc)
|
||||
self.assertEqual(versionName, vn)
|
||||
self.assertEqual(appid, a, 'aapt appid parsing failed for ' + apkfilename)
|
||||
self.assertEqual(versionCode, vc, 'aapt versionCode parsing failed for ' + apkfilename)
|
||||
self.assertEqual(versionName, vn, 'aapt versionName parsing failed for ' + apkfilename)
|
||||
if fdroidserver.common.use_androguard():
|
||||
a, vc, vn = fdroidserver.common.get_apk_id_androguard(apkfilename)
|
||||
self.assertEqual(appid, a)
|
||||
self.assertEqual(versionCode, vc)
|
||||
self.assertEqual(versionName, vn)
|
||||
a, vc, vn = fdroidserver.common.get_apk_id(apkfilename)
|
||||
self.assertEqual(appid, a, 'androguard appid parsing failed for ' + apkfilename)
|
||||
self.assertEqual(versionName, vn, 'androguard versionName parsing failed for ' + apkfilename)
|
||||
self.assertEqual(versionCode, vc, 'androguard versionCode parsing failed for ' + apkfilename)
|
||||
|
||||
with self.assertRaises(FDroidException):
|
||||
fdroidserver.common.get_apk_id('nope')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue