From 109eb928e8cd12492194b05b1c4be446cbeebf1b Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 22 Dec 2017 17:28:25 +0100 Subject: [PATCH] aapt 26.0.0 is required to properly parse permissions and label #236 closes #395 aapt 26.0.0 outputs the permissions correctly closes #306 aapt 26.0.0 now outputs: application-label:'K-9 Mail' --- fdroidserver/common.py | 13 ++-- tests/metadata/duplicate.permisssions.yml | 4 + tests/repo/duplicate.permisssions_9999999.apk | Bin 0 -> 11988 bytes tests/repo/index-v1.json | 69 ++++++++++++++++++ tests/repo/index.xml | 32 ++++++++ tests/stats/known_apks.txt | 1 + tests/update.TestCase | 6 +- 7 files changed, 117 insertions(+), 8 deletions(-) create mode 100644 tests/metadata/duplicate.permisssions.yml create mode 100644 tests/repo/duplicate.permisssions_9999999.apk diff --git a/fdroidserver/common.py b/fdroidserver/common.py index bd831f1e..6fce3340 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -57,6 +57,9 @@ from fdroidserver.exception import FDroidException, VCSException, NoSubmodulesEx BuildException, VerificationException from .asynchronousfilereader import AsynchronousFileReader +# this is the build-tools version, aapt has a separate version that +# has to be manually set in test_aapt_version() +MINIMUM_AAPT_VERSION = '26.0.0' # A signature block file with a .DSA, .RSA, or .EC extension CERT_PATH_REGEX = re.compile(r'^META-INF/.*\.(DSA|EC|RSA)$') @@ -84,7 +87,7 @@ default_config = { 'r16': None, }, 'qt_sdk_path': None, - 'build_tools': "25.0.2", + 'build_tools': MINIMUM_AAPT_VERSION, 'force_build_tools': False, 'java_paths': None, 'ant': "ant", @@ -397,13 +400,13 @@ def test_aapt_version(aapt): # the Debian package has the version string like "v0.2-23.0.2" too_old = False if '.' in bugfix: - if LooseVersion(bugfix) < LooseVersion('24.0.0'): + if LooseVersion(bugfix) < LooseVersion(MINIMUM_AAPT_VERSION): too_old = True - elif LooseVersion('.'.join((major, minor, bugfix))) < LooseVersion('0.2.2964546'): + elif LooseVersion('.'.join((major, minor, bugfix))) < LooseVersion('0.2.4062713'): too_old = True if too_old: - logging.warning(_("'{aapt}' is too old, fdroid requires build-tools-24.0.0 or newer!") - .format(aapt=aapt)) + logging.warning(_("'{aapt}' is too old, fdroid requires build-tools-{version} or newer!") + .format(aapt=aapt, version=MINIMUM_AAPT_VERSION)) else: logging.warning(_('Unknown version of aapt, might cause problems: ') + output) diff --git a/tests/metadata/duplicate.permisssions.yml b/tests/metadata/duplicate.permisssions.yml new file mode 100644 index 00000000..3401c235 --- /dev/null +++ b/tests/metadata/duplicate.permisssions.yml @@ -0,0 +1,4 @@ +Categories: +- tests +Name: Duplicate Permisssions +Summary: 'Test app for all possible ' diff --git a/tests/repo/duplicate.permisssions_9999999.apk b/tests/repo/duplicate.permisssions_9999999.apk new file mode 100644 index 0000000000000000000000000000000000000000..a7510f3a5efdb1ba22854588725817445569fad6 GIT binary patch literal 11988 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", + "added": 1513900800000, + "icon": "duplicate.permisssions.9999999.png", + "packageName": "duplicate.permisssions", + "lastUpdated": 1513900800000 + }, { "categories": [ "System" @@ -271,6 +284,62 @@ "versionName": "1.2" } ], + "duplicate.permisssions": [ + { + "added": 1513900800000, + "apkName": "duplicate.permisssions_9999999.apk", + "hash": "9ffc7e9b2740ce664059194805b2fbfc08b7970c8448a22b8bd828dfd6ad161c", + "hashType": "sha256", + "minSdkVersion": "18", + "packageName": "duplicate.permisssions", + "sig": "2d337e40aef77564bf62781ac424595c", + "signer": "f49af3f11efddf20dffd70f5e3117b9976674167adca280e6b1932a0601b26f6", + "size": 11988, + "targetSdkVersion": "27", + "uses-permission": [ + [ + "android.permission.INTERNET", + null + ], + [ + "android.permission.ACCESS_NETWORK_STATE", + null + ], + [ + "android.permission.ACCESS_WIFI_STATE", + null + ], + [ + "android.permission.CHANGE_WIFI_MULTICAST_STATE", + null + ], + [ + "android.permission.INTERNET", + null + ], + [ + "android.permission.WRITE_EXTERNAL_STORAGE", + 18 + ], + [ + "android.permission.READ_EXTERNAL_STORAGE", + 18 + ] + ], + "uses-permission-sdk-23": [ + [ + "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", + 27 + ], + [ + "android.permission.REQUEST_INSTALL_PACKAGES", + null + ] + ], + "versionCode": 9999999, + "versionName": "0.3-7-gb817ac8" + } + ], "fake.ota.update": [ { "added": 1457568000000, diff --git a/tests/repo/index.xml b/tests/repo/index.xml index 1c696042..3209f8bf 100644 --- a/tests/repo/index.xml +++ b/tests/repo/index.xml @@ -8,6 +8,38 @@ + + duplicate.permisssions + 2017-12-22 + 2017-12-22 + Duplicate Permisssions + Test app for all possible <uses-permissions> + duplicate.permisssions.9999999.png + <p>No description available</p> + Unknown + tests + tests + + + + + 9999999 + + 0.3-7-gb817ac8 + 9999999 + duplicate.permisssions_9999999.apk + 9ffc7e9b2740ce664059194805b2fbfc08b7970c8448a22b8bd828dfd6ad161c + 11988 + 18 + 27 + 2017-12-22 + 2d337e40aef77564bf62781ac424595c + ACCESS_NETWORK_STATE,ACCESS_WIFI_STATE,CHANGE_WIFI_MULTICAST_STATE,INTERNET,READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE + + + + + fake.ota.update 2016-03-10 diff --git a/tests/stats/known_apks.txt b/tests/stats/known_apks.txt index fbab3620..e6e4d37e 100644 --- a/tests/stats/known_apks.txt +++ b/tests/stats/known_apks.txt @@ -2,6 +2,7 @@ com.politedroid_3.apk repo/com.politedroid 2017-06-23 com.politedroid_4.apk repo/com.politedroid 2017-06-23 com.politedroid_5.apk repo/com.politedroid 2017-06-23 com.politedroid_6.apk repo/com.politedroid 2017-06-23 +duplicate.permisssions_9999999.apk duplicate.permisssions 2017-12-22 fake.ota.update_1234.zip fake.ota.update 2016-03-10 obb.main.oldversion_1444412523.apk obb.main.oldversion 2013-12-31 obb.main.twoversions_1101613.apk obb.main.twoversions 2015-10-12 diff --git a/tests/update.TestCase b/tests/update.TestCase index db463a89..94bf507d 100755 --- a/tests/update.TestCase +++ b/tests/update.TestCase @@ -253,14 +253,14 @@ class UpdateTest(unittest.TestCase): apps = fdroidserver.metadata.read_metadata(xref=True) knownapks = fdroidserver.common.KnownApks() apks, cachechanged = fdroidserver.update.process_apks({}, 'repo', knownapks, False) - self.assertEqual(len(apks), 11) + self.assertEqual(len(apks), 12) apk = apks[0] self.assertEqual(apk['packageName'], 'com.politedroid') self.assertEqual(apk['versionCode'], 3) self.assertEqual(apk['minSdkVersion'], '3') self.assertEqual(apk['targetSdkVersion'], '3') self.assertFalse('maxSdkVersion' in apk) - apk = apks[4] + apk = apks[5] self.assertEqual(apk['packageName'], 'obb.main.oldversion') self.assertEqual(apk['versionCode'], 1444412523) self.assertEqual(apk['minSdkVersion'], '4') @@ -527,7 +527,7 @@ class UpdateTest(unittest.TestCase): knownapks = fdroidserver.common.KnownApks() apks, cachechanged = fdroidserver.update.process_apks({}, 'repo', knownapks, False) fdroidserver.update.translate_per_build_anti_features(apps, apks) - self.assertEqual(len(apks), 11) + self.assertEqual(len(apks), 12) foundtest = False for apk in apks: if apk['packageName'] == 'com.politedroid' and apk['versionCode'] == 3: -- 2.30.2