update: find aapt when it is not in the PATH

This is some very messy logic built up since 2010.  This will all go away
once we have a python3 version of androguard available.

The removed imports and `dir(APK)` is to silence pyflakes

closes #303
This commit is contained in:
Hans-Christoph Steiner 2017-05-18 17:20:24 +02:00
parent c348186ad6
commit 0345d2c79f
4 changed files with 6 additions and 9 deletions

View File

@ -544,7 +544,7 @@ def get_apk_metadata_androguard(apkfile):
def get_metadata_from_apk(app, build, apkfile):
"""get the required metadata from the built APK"""
if common.set_command_in_config('aapt'):
if common.SdkToolsPopen(['aapt', 'version'], output=False):
vercode, version, foundid, nativecode = get_apk_metadata_aapt(apkfile)
else:
vercode, version, foundid, nativecode = get_apk_metadata_androguard(apkfile)

View File

@ -1727,7 +1727,7 @@ def isApkAndDebuggable(apkfile, config):
if get_file_extension(apkfile) != 'apk':
return False
if set_command_in_config('aapt'):
if SdkToolsPopen(['aapt', 'version'], output=False):
return get_apk_debuggable_aapt(apkfile)
else:
return get_apk_debuggable_androguard(apkfile)

View File

@ -1128,7 +1128,7 @@ def scan_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk):
apk['antiFeatures'].add('KnownVuln')
try:
if common.set_command_in_config('aapt'):
if SdkToolsPopen(['aapt', 'version'], output=False):
scan_apk_aapt(apk, apkfile)
else:
scan_apk_androguard(apk, apkfile)

View File

@ -4,12 +4,8 @@ import inspect
import logging
import optparse
import os
import shutil
import sys
import tempfile
import unittest
import yaml
from binascii import unhexlify
localmodule = os.path.realpath(
os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..'))
@ -53,9 +49,10 @@ class UpdateTest(unittest.TestCase):
fdroidserver.update.options.clean = True
fdroidserver.update.options.delete_unknown = True
self.assertTrue(fdroidserver.common.set_command_in_config('aapt'))
self.assertTrue(fdroidserver.common.SdkToolsPopen('aapt'))
try:
from androguard.core.bytecodes.apk import APK
dir(APK)
except ImportError:
raise Exception("androguard not installed!")
@ -89,4 +86,4 @@ if __name__ == "__main__":
newSuite = unittest.TestSuite()
newSuite.addTest(unittest.makeSuite(UpdateTest))
unittest.main()
unittest.main()