From 06598ae406819223dc927ec5422cb15085277662 Mon Sep 17 00:00:00 2001 From: thez3ro Date: Thu, 13 Apr 2017 14:18:48 +0200 Subject: [PATCH] use androguard if aapt isn't found --- fdroidserver/build.py | 47 ++- fdroidserver/common.py | 40 ++- fdroidserver/update.py | 313 ++++++++++++------ tests/androguard_test.py | 92 +++++ .../apk/info.guardianproject.urzip.yaml | 20 ++ tests/metadata/apk/org.dyndns.fules.ck.yaml | 41 +++ tests/org.dyndns.fules.ck_20.apk | Bin 0 -> 132453 bytes tests/update.TestCase | 48 +++ 8 files changed, 490 insertions(+), 111 deletions(-) create mode 100644 tests/androguard_test.py create mode 100644 tests/metadata/apk/info.guardianproject.urzip.yaml create mode 100644 tests/metadata/apk/org.dyndns.fules.ck.yaml create mode 100644 tests/org.dyndns.fules.ck_20.apk diff --git a/fdroidserver/build.py b/fdroidserver/build.py index f0f027be..5b21939b 100644 --- a/fdroidserver/build.py +++ b/fdroidserver/build.py @@ -483,15 +483,23 @@ def capitalize_intact(string): return string[0].upper() + string[1:] -def get_metadata_from_apk(app, build, apkfile): - """get the required metadata from the built APK""" +def has_native_code(apkobj): + """aapt checks if there are architecture folders under the lib/ folder + so we are simulating the same behaviour""" + arch_re = re.compile("^lib/(.*)/.*$") + arch = [file for file in apkobj.get_files() if arch_re.match(file)] + return False if not arch else True - p = SdkToolsPopen(['aapt', 'dump', 'badging', apkfile], output=False) +def get_apk_metadata_aapt(apkfile): + """aapt function to extract versionCode, versionName, packageName and nativecode""" vercode = None version = None foundid = None nativecode = None + + p = SdkToolsPopen(['aapt', 'dump', 'badging', apkfile], output=False) + for line in p.output.splitlines(): if line.startswith("package:"): pat = re.compile(".*name='([a-zA-Z0-9._]*)'.*") @@ -509,6 +517,38 @@ def get_metadata_from_apk(app, build, apkfile): elif line.startswith("native-code:"): nativecode = line[12:] + return vercode, version, foundid, nativecode + + +def get_apk_metadata_androguard(apkfile): + """androguard function to extract versionCode, versionName, packageName and nativecode""" + try: + from androguard.core.bytecodes.apk import APK + apkobject = APK(apkfile) + except ImportError: + raise BuildException("androguard library is not installed and aapt binary not found") + except FileNotFoundError: + raise BuildException("Could not open apk file for metadata analysis") + + if not apkobject.is_valid_APK(): + raise BuildException("Invalid APK provided") + + foundid = apkobject.get_package() + vercode = apkobject.get_androidversion_code() + version = apkobject.get_androidversion_name() + nativecode = has_native_code(apkobject) + + return vercode, version, foundid, nativecode + + +def get_metadata_from_apk(app, build, apkfile): + """get the required metadata from the built APK""" + + if common.set_command_in_config('aapt'): + vercode, version, foundid, nativecode = get_apk_metadata_aapt(apkfile) + else: + vercode, version, foundid, nativecode = get_apk_metadata_androguard(apkfile) + # Ignore empty strings or any kind of space/newline chars that we don't # care about if nativecode is not None: @@ -533,7 +573,6 @@ def get_metadata_from_apk(app, build, apkfile): def build_local(app, build, vcs, build_dir, output_dir, log_dir, srclib_dir, extlib_dir, tmp_dir, force, onserver, refresh): """Do a build locally.""" - ndk_path = build.ndk_path() if build.ndk or (build.buildjni and build.buildjni != ['no']): if not ndk_path: diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 2d3864d8..df90e5f4 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -46,6 +46,8 @@ from pyasn1.codec.der import decoder, encoder from pyasn1_modules import rfc2315 from pyasn1.error import PyAsn1Error +from distutils.util import strtobool + import fdroidserver.metadata from .asynchronousfilereader import AsynchronousFileReader @@ -1690,14 +1692,7 @@ def get_file_extension(filename): return os.path.splitext(filename)[1].lower()[1:] -def isApkAndDebuggable(apkfile, config): - """Returns True if the given file is an APK and is debuggable - - :param apkfile: full path to the apk to check""" - - if get_file_extension(apkfile) != 'apk': - return False - +def get_apk_debuggable_aapt(apkfile): p = SdkToolsPopen(['aapt', 'dump', 'xmltree', apkfile, 'AndroidManifest.xml'], output=False) if p.returncode != 0: @@ -1709,6 +1704,35 @@ def isApkAndDebuggable(apkfile, config): return False +def get_apk_debuggable_androguard(apkfile): + try: + from androguard.core.bytecodes.apk import APK + except ImportError: + logging.critical("androguard library is not installed and aapt not present") + sys.exit(1) + + apkobject = APK(apkfile) + if apkobject.is_valid_APK(): + debuggable = apkobject.get_element("application", "debuggable") + if debuggable is not None: + return bool(strtobool(debuggable)) + return False + + +def isApkAndDebuggable(apkfile, config): + """Returns True if the given file is an APK and is debuggable + + :param apkfile: full path to the apk to check""" + + if get_file_extension(apkfile) != 'apk': + return False + + if set_command_in_config('aapt'): + return get_apk_debuggable_aapt(apkfile) + else: + return get_apk_debuggable_androguard(apkfile) + + class PopenResult: def __init__(self): self.returncode = None diff --git a/fdroidserver/update.py b/fdroidserver/update.py index f89513d6..1cb2fc4e 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -41,7 +41,7 @@ from . import btlog from . import common from . import index from . import metadata -from .common import SdkToolsPopen +from .common import BuildException, SdkToolsPopen METADATA_VERSION = 18 @@ -60,6 +60,17 @@ APK_PERMISSION_PAT = \ APK_FEATURE_PAT = re.compile(".*name='([^']*)'.*") screen_densities = ['640', '480', '320', '240', '160', '120'] +screen_resolutions = { + "xxxhdpi": '640', + "xxhdpi": '480', + "xhdpi": '320', + "hdpi": '240', + "mdpi": '160', + "ldpi": '120', + "undefined": '-1', + "anydpi": '65534', + "nodpi": '65535' +} all_screen_densities = ['0'] + screen_densities @@ -871,6 +882,196 @@ def scan_repo_files(apkcache, repodir, knownapks, use_date_from_file=False): return repo_files, cachechanged +def scan_apk_aapt(apk, apkfile): + p = SdkToolsPopen(['aapt', 'dump', 'badging', apkfile], output=False) + if p.returncode != 0: + if options.delete_unknown: + if os.path.exists(apkfile): + logging.error("Failed to get apk information, deleting " + apkfile) + os.remove(apkfile) + else: + logging.error("Could not find {0} to remove it".format(apkfile)) + else: + logging.error("Failed to get apk information, skipping " + apkfile) + raise BuildException("Invaild APK") + for line in p.output.splitlines(): + if line.startswith("package:"): + try: + apk['packageName'] = re.match(APK_NAME_PAT, line).group(1) + apk['versionCode'] = int(re.match(APK_VERCODE_PAT, line).group(1)) + apk['versionName'] = re.match(APK_VERNAME_PAT, line).group(1) + except Exception as e: + logging.error("Package matching failed: " + str(e)) + logging.info("Line was: " + line) + sys.exit(1) + elif line.startswith("application:"): + apk['name'] = re.match(APK_LABEL_PAT, line).group(1) + # Keep path to non-dpi icon in case we need it + match = re.match(APK_ICON_PAT_NODPI, line) + if match: + apk['icons_src']['-1'] = match.group(1) + elif line.startswith("launchable-activity:"): + # Only use launchable-activity as fallback to application + if not apk['name']: + apk['name'] = re.match(APK_LABEL_PAT, line).group(1) + if '-1' not in apk['icons_src']: + match = re.match(APK_ICON_PAT_NODPI, line) + if match: + apk['icons_src']['-1'] = match.group(1) + elif line.startswith("application-icon-"): + match = re.match(APK_ICON_PAT, line) + if match: + density = match.group(1) + path = match.group(2) + apk['icons_src'][density] = path + elif line.startswith("sdkVersion:"): + m = re.match(APK_SDK_VERSION_PAT, line) + if m is None: + logging.error(line.replace('sdkVersion:', '') + + ' is not a valid minSdkVersion!') + else: + apk['minSdkVersion'] = m.group(1) + # if target not set, default to min + if 'targetSdkVersion' not in apk: + apk['targetSdkVersion'] = m.group(1) + elif line.startswith("targetSdkVersion:"): + m = re.match(APK_SDK_VERSION_PAT, line) + if m is None: + logging.error(line.replace('targetSdkVersion:', '') + + ' is not a valid targetSdkVersion!') + else: + apk['targetSdkVersion'] = m.group(1) + elif line.startswith("maxSdkVersion:"): + apk['maxSdkVersion'] = re.match(APK_SDK_VERSION_PAT, line).group(1) + elif line.startswith("native-code:"): + apk['nativecode'] = [] + for arch in line[13:].split(' '): + apk['nativecode'].append(arch[1:-1]) + elif line.startswith('uses-permission:'): + perm_match = re.match(APK_PERMISSION_PAT, line).groupdict() + if perm_match['maxSdkVersion']: + perm_match['maxSdkVersion'] = int(perm_match['maxSdkVersion']) + permission = UsesPermission( + perm_match['name'], + perm_match['maxSdkVersion'] + ) + + apk['uses-permission'].append(permission) + elif line.startswith('uses-permission-sdk-23:'): + perm_match = re.match(APK_PERMISSION_PAT, line).groupdict() + if perm_match['maxSdkVersion']: + perm_match['maxSdkVersion'] = int(perm_match['maxSdkVersion']) + permission_sdk_23 = UsesPermissionSdk23( + perm_match['name'], + perm_match['maxSdkVersion'] + ) + + apk['uses-permission-sdk-23'].append(permission_sdk_23) + + elif line.startswith('uses-feature:'): + feature = re.match(APK_FEATURE_PAT, line).group(1) + # Filter out this, it's only added with the latest SDK tools and + # causes problems for lots of apps. + if feature != "android.hardware.screen.portrait" \ + and feature != "android.hardware.screen.landscape": + if feature.startswith("android.feature."): + feature = feature[16:] + apk['features'].add(feature) + + +def scan_apk_androguard(apk, apkfile): + try: + from androguard.core.bytecodes.apk import APK + apkobject = APK(apkfile) + if apkobject.is_valid_APK(): + arsc = apkobject.get_android_resources() + else: + if options.delete_unknown: + if os.path.exists(apkfile): + logging.error("Failed to get apk information, deleting " + apkfile) + os.remove(apkfile) + else: + logging.error("Could not find {0} to remove it".format(apkfile)) + else: + logging.error("Failed to get apk information, skipping " + apkfile) + raise BuildException("Invaild APK") + except ImportError: + logging.critical("androguard library is not installed and aapt not present") + sys.exit(1) + except FileNotFoundError: + logging.error("Could not open apk file for analysis") + raise BuildException("Invaild APK") + + apk['packageName'] = apkobject.get_package() + apk['versionCode'] = int(apkobject.get_androidversion_code()) + apk['versionName'] = apkobject.get_androidversion_name() + if apk['versionName'][0] == "@": + version_id = int(apk['versionName'].replace("@", "0x"), 16) + version_id = arsc.get_id(apk['packageName'], version_id)[1] + apk['versionName'] = arsc.get_string(apk['packageName'], version_id)[1] + apk['name'] = apkobject.get_app_name() + + if apkobject.get_max_sdk_version() is not None: + apk['maxSdkVersion'] = apkobject.get_max_sdk_version() + apk['minSdkVersion'] = apkobject.get_min_sdk_version() + apk['targetSdkVersion'] = apkobject.get_target_sdk_version() + + icon_id = int(apkobject.get_element("application", "icon").replace("@", "0x"), 16) + icon_name = arsc.get_id(apk['packageName'], icon_id)[1] + + density_re = re.compile("^res/(.*)/" + icon_name + ".*$") + + for file in apkobject.get_files(): + d_re = density_re.match(file) + if d_re: + folder = d_re.group(1).split('-') + if len(folder) > 1: + resolution = folder[1] + else: + resolution = 'mdpi' + density = screen_resolutions[resolution] + apk['icons_src'][density] = d_re.group(0) + + if apk['icons_src'].get('-1') is None: + apk['icons_src']['-1'] = apk['icons_src']['160'] + + arch_re = re.compile("^lib/(.*)/.*$") + arch = set([arch_re.match(file).group(1) for file in apkobject.get_files() if arch_re.match(file)]) + if len(arch) >= 1: + apk['nativecode'] = [] + apk['nativecode'].extend(sorted(list(arch))) + + xml = apkobject.get_android_manifest_xml() + + for item in xml.getElementsByTagName('uses-permission'): + name = str(item.getAttribute("android:name")) + maxSdkVersion = item.getAttribute("android:maxSdkVersion") + maxSdkVersion = None if maxSdkVersion is '' else int(maxSdkVersion) + permission = UsesPermission( + name, + maxSdkVersion + ) + apk['uses-permission'].append(permission) + + for item in xml.getElementsByTagName('uses-permission-sdk-23'): + name = str(item.getAttribute("android:name")) + maxSdkVersion = item.getAttribute("android:maxSdkVersion") + maxSdkVersion = None if maxSdkVersion is '' else int(maxSdkVersion) + permission_sdk_23 = UsesPermissionSdk23( + name, + maxSdkVersion + ) + apk['uses-permission-sdk-23'].append(permission_sdk_23) + + for item in xml.getElementsByTagName('uses-feature'): + feature = str(item.getAttribute("android:name")) + if feature != "android.hardware.screen.portrait" \ + and feature != "android.hardware.screen.landscape": + if feature.startswith("android.feature."): + feature = feature[16:] + apk['features'].append(feature) + + def scan_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk): """Scan the apk with the given filename in the given repo directory. @@ -888,7 +1089,7 @@ def scan_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk): if ' ' in apkfilename: logging.critical("Spaces in filenames are not allowed.") - sys.exit(1) + return True, None, False apkfile = os.path.join(repodir, apkfilename) shasum = sha256sum(apkfile) @@ -921,100 +1122,16 @@ def scan_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk): apk['antiFeatures'] = set() if has_old_openssl(apkfile): apk['antiFeatures'].add('KnownVuln') - p = SdkToolsPopen(['aapt', 'dump', 'badging', apkfile], output=False) - if p.returncode != 0: - if options.delete_unknown: - if os.path.exists(apkfile): - logging.error("Failed to get apk information, deleting " + apkfile) - os.remove(apkfile) - else: - logging.error("Could not find {0} to remove it".format(apkfile)) + + try: + if common.set_command_in_config('aapt'): + logging.warning("Using AAPT for metadata") + scan_apk_aapt(apk, apkfile) else: - logging.error("Failed to get apk information, skipping " + apkfile) + logging.warning("Using androguard for metadata") + scan_apk_androguard(apk, apkfile) + except BuildException: return True, None, False - for line in p.output.splitlines(): - if line.startswith("package:"): - try: - apk['packageName'] = re.match(APK_NAME_PAT, line).group(1) - apk['versionCode'] = int(re.match(APK_VERCODE_PAT, line).group(1)) - apk['versionName'] = re.match(APK_VERNAME_PAT, line).group(1) - except Exception as e: - logging.error("Package matching failed: " + str(e)) - logging.info("Line was: " + line) - sys.exit(1) - elif line.startswith("application:"): - apk['name'] = re.match(APK_LABEL_PAT, line).group(1) - # Keep path to non-dpi icon in case we need it - match = re.match(APK_ICON_PAT_NODPI, line) - if match: - apk['icons_src']['-1'] = match.group(1) - elif line.startswith("launchable-activity:"): - # Only use launchable-activity as fallback to application - if not apk['name']: - apk['name'] = re.match(APK_LABEL_PAT, line).group(1) - if '-1' not in apk['icons_src']: - match = re.match(APK_ICON_PAT_NODPI, line) - if match: - apk['icons_src']['-1'] = match.group(1) - elif line.startswith("application-icon-"): - match = re.match(APK_ICON_PAT, line) - if match: - density = match.group(1) - path = match.group(2) - apk['icons_src'][density] = path - elif line.startswith("sdkVersion:"): - m = re.match(APK_SDK_VERSION_PAT, line) - if m is None: - logging.error(line.replace('sdkVersion:', '') - + ' is not a valid minSdkVersion!') - else: - apk['minSdkVersion'] = m.group(1) - # if target not set, default to min - if 'targetSdkVersion' not in apk: - apk['targetSdkVersion'] = m.group(1) - elif line.startswith("targetSdkVersion:"): - m = re.match(APK_SDK_VERSION_PAT, line) - if m is None: - logging.error(line.replace('targetSdkVersion:', '') - + ' is not a valid targetSdkVersion!') - else: - apk['targetSdkVersion'] = m.group(1) - elif line.startswith("maxSdkVersion:"): - apk['maxSdkVersion'] = re.match(APK_SDK_VERSION_PAT, line).group(1) - elif line.startswith("native-code:"): - apk['nativecode'] = [] - for arch in line[13:].split(' '): - apk['nativecode'].append(arch[1:-1]) - elif line.startswith('uses-permission:'): - perm_match = re.match(APK_PERMISSION_PAT, line).groupdict() - if perm_match['maxSdkVersion']: - perm_match['maxSdkVersion'] = int(perm_match['maxSdkVersion']) - permission = UsesPermission( - perm_match['name'], - perm_match['maxSdkVersion'] - ) - - apk['uses-permission'].append(permission) - elif line.startswith('uses-permission-sdk-23:'): - perm_match = re.match(APK_PERMISSION_PAT, line).groupdict() - if perm_match['maxSdkVersion']: - perm_match['maxSdkVersion'] = int(perm_match['maxSdkVersion']) - permission_sdk_23 = UsesPermissionSdk23( - perm_match['name'], - perm_match['maxSdkVersion'] - ) - - apk['uses-permission-sdk-23'].append(permission_sdk_23) - - elif line.startswith('uses-feature:'): - feature = re.match(APK_FEATURE_PAT, line).group(1) - # Filter out this, it's only added with the latest SDK tools and - # causes problems for lots of apps. - if feature != "android.hardware.screen.portrait" \ - and feature != "android.hardware.screen.landscape": - if feature.startswith("android.feature."): - feature = feature[16:] - apk['features'].add(feature) if 'minSdkVersion' not in apk: logging.warn("No SDK version information found in {0}".format(apkfile)) @@ -1029,7 +1146,7 @@ def scan_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk): apk['sig'] = getsig(os.path.join(os.getcwd(), apkfile)) if not apk['sig']: logging.critical("Failed to get apk signature") - sys.exit(1) + return True, None, False apkzip = zipfile.ZipFile(apkfile, 'r') @@ -1068,10 +1185,8 @@ def scan_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk): with open(icondest, 'wb') as f: f.write(get_icon_bytes(apkzip, iconsrc)) apk['icons'][density] = iconfilename - - except Exception as e: - logging.warn("Error retrieving icon file: %s" % (e)) - del apk['icons'][density] + except (zipfile.BadZipFile, ValueError, KeyError) as e: + logging.warning("Error retrieving icon file: %s" % (icondest)) del apk['icons_src'][density] empty_densities.append(density) diff --git a/tests/androguard_test.py b/tests/androguard_test.py new file mode 100644 index 00000000..9e5d845a --- /dev/null +++ b/tests/androguard_test.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 + +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())), '..')) +print('localmodule: ' + localmodule) +if localmodule not in sys.path: + sys.path.insert(0, localmodule) + +import fdroidserver.common +import fdroidserver.metadata +import fdroidserver.update + + +class UpdateTest(unittest.TestCase): + '''fdroid androguard manual tests''' + + def testScanMetadataAndroguardAAPT(self): + + def _create_apkmetadata_object(apkName): + '''Create an empty apk metadata object''' + apk = {} + apk['apkName'] = apkName + apk['uses-permission'] = [] + apk['uses-permission-sdk-23'] = [] + apk['features'] = [] + apk['icons_src'] = {} + return apk + + config = dict() + fdroidserver.common.fill_config_defaults(config) + fdroidserver.update.config = config + os.chdir(os.path.dirname(__file__)) + if os.path.basename(os.getcwd()) != 'tests': + raise Exception('This test must be run in the "tests/" subdir') + + config['ndk_paths'] = dict() + config['accepted_formats'] = ['json', 'txt', 'yml'] + fdroidserver.common.config = config + fdroidserver.update.config = config + + fdroidserver.update.options = type('', (), {})() + fdroidserver.update.options.clean = True + fdroidserver.update.options.delete_unknown = True + + self.assertTrue(fdroidserver.common.set_command_in_config('aapt')) + try: + from androguard.core.bytecodes.apk import APK + except ImportError: + raise Exception("androguard not installed!") + + apkList = ['../info.guardianproject.urzip.apk', '../org.dyndns.fules.ck_20.apk'] + + for apkName in apkList: + logging.debug("Processing " + apkName) + apkfile = os.path.join('repo', apkName) + + apkaapt = _create_apkmetadata_object(apkName) + logging.debug("Using AAPT for metadata") + fdroidserver.update.scan_apk_aapt(apkaapt, apkfile) + # avoid AAPT application name bug + del apkaapt['name'] + + apkandroguard = _create_apkmetadata_object(apkName) + logging.debug("Using androguard for metadata") + fdroidserver.update.scan_apk_androguard(apkandroguard, apkfile) + # avoid AAPT application name bug + del apkandroguard['name'] + + self.maxDiff = None + self.assertEqual(apkaapt, apkandroguard) + + +if __name__ == "__main__": + parser = optparse.OptionParser() + parser.add_option("-v", "--verbose", action="store_true", default=False, + help="Spew out even more information than normal") + (fdroidserver.common.options, args) = parser.parse_args(['--verbose']) + + newSuite = unittest.TestSuite() + newSuite.addTest(unittest.makeSuite(UpdateTest)) + unittest.main() \ No newline at end of file diff --git a/tests/metadata/apk/info.guardianproject.urzip.yaml b/tests/metadata/apk/info.guardianproject.urzip.yaml new file mode 100644 index 00000000..2234cf1f --- /dev/null +++ b/tests/metadata/apk/info.guardianproject.urzip.yaml @@ -0,0 +1,20 @@ +antiFeatures: !!set {} +features: [] +hash: abfb3adb7496611749e7abfb014c5c789e3a02489e48a5c3665110d1b1acd931 +hashType: sha256 +icon: info.guardianproject.urzip.100.png +icons: + '0': info.guardianproject.urzip.100.png + '160': info.guardianproject.urzip.100.png +icons_src: + '-1': res/drawable/ic_launcher.png + '160': res/drawable/ic_launcher.png +minSdkVersion: '4' +packageName: info.guardianproject.urzip +sig: e0ecb5fc2d63088e4a07ae410a127722 +size: 9969 +targetSdkVersion: '18' +uses-permission: [] +uses-permission-sdk-23: [] +versionCode: 100 +versionName: '0.1' diff --git a/tests/metadata/apk/org.dyndns.fules.ck.yaml b/tests/metadata/apk/org.dyndns.fules.ck.yaml new file mode 100644 index 00000000..cbb62836 --- /dev/null +++ b/tests/metadata/apk/org.dyndns.fules.ck.yaml @@ -0,0 +1,41 @@ +antiFeatures: !!set {} +features: [] +hash: 897486e1f857c6c0ee32ccbad0e1b8cd82f6d0e65a44a23f13f852d2b63a18c8 +hashType: sha256 +icon: org.dyndns.fules.ck.20.png +icons: + '0': org.dyndns.fules.ck.20.png + '120': org.dyndns.fules.ck.20.png + '160': org.dyndns.fules.ck.20.png + '240': org.dyndns.fules.ck.20.png +icons_src: + '-1': res/drawable-mdpi-v4/icon_launcher.png + '120': res/drawable-ldpi-v4/icon_launcher.png + '160': res/drawable-mdpi-v4/icon_launcher.png + '240': res/drawable-hdpi-v4/icon_launcher.png +minSdkVersion: '7' +nativecode: +- arm64-v8a +- armeabi +- armeabi-v7a +- mips +- mips64 +- x86 +- x86_64 +packageName: org.dyndns.fules.ck +sig: 9bf7a6a67f95688daec75eab4b1436ac +size: 132453 +targetSdkVersion: '8' +uses-permission: +- !!python/object/new:fdroidserver.update.UsesPermission + - android.permission.BIND_INPUT_METHOD + - null +- !!python/object/new:fdroidserver.update.UsesPermission + - android.permission.READ_EXTERNAL_STORAGE + - null +- !!python/object/new:fdroidserver.update.UsesPermission + - android.permission.VIBRATE + - null +uses-permission-sdk-23: [] +versionCode: 20 +versionName: v1.6pre2 diff --git a/tests/org.dyndns.fules.ck_20.apk b/tests/org.dyndns.fules.ck_20.apk new file mode 100644 index 0000000000000000000000000000000000000000..a7ccf762fe03960196979d229760b5ed8927ae95 GIT binary patch literal 132453 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

ITVU5PwF_N$W*3&OT%|bY<7@ZiN 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 a*QzXc6Ll{H03M@0oTxuZv`Cb10{#!Qm;JW@ literal 0 HcmV?d00001 diff --git a/tests/update.TestCase b/tests/update.TestCase index 1d6dd846..4e204ae6 100755 --- a/tests/update.TestCase +++ b/tests/update.TestCase @@ -224,6 +224,54 @@ class UpdateTest(unittest.TestCase): self.assertIsNone(apk.get('obbMainFile')) self.assertIsNone(apk.get('obbPatchFile')) + def testScanApkMetadata(self): + + def _build_yaml_representer(dumper, data): + '''Creates a YAML representation of a Build instance''' + return dumper.represent_dict(data) + + config = dict() + fdroidserver.common.fill_config_defaults(config) + fdroidserver.update.config = config + os.chdir(os.path.dirname(__file__)) + if os.path.basename(os.getcwd()) != 'tests': + raise Exception('This test must be run in the "tests/" subdir') + + config['ndk_paths'] = dict() + config['accepted_formats'] = ['json', 'txt', 'yml'] + fdroidserver.common.config = config + fdroidserver.update.config = config + + fdroidserver.update.options = type('', (), {})() + fdroidserver.update.options.clean = True + fdroidserver.update.options.delete_unknown = True + + for icon_dir in fdroidserver.update.get_all_icon_dirs('repo'): + if not os.path.exists(icon_dir): + os.makedirs(icon_dir) + + knownapks = fdroidserver.common.KnownApks() + apkList = ['../urzip.apk', '../org.dyndns.fules.ck_20.apk'] + + for apkName in apkList: + _, apk, cachechanged = fdroidserver.update.scan_apk({}, apkName, 'repo', knownapks, False) + # Don't care about the date added to the repo and relative apkName + del apk['added'] + del apk['apkName'] + # avoid AAPT application name bug + del apk['name'] + + savepath = os.path.join('metadata', 'apk', apk['packageName'] + '.yaml') + # Uncomment to save APK metadata + # with open(savepath, 'w') as f: + # yaml.add_representer(fdroidserver.metadata.Build, _build_yaml_representer) + # yaml.dump(apk, f, default_flow_style=False) + + with open(savepath, 'r') as f: + frompickle = yaml.load(f) + self.maxDiff = None + self.assertEqual(apk, frompickle) + def test_scan_invalid_apk(self): os.chdir(os.path.join(localmodule, 'tests')) if os.path.basename(os.getcwd()) != 'tests':