From: Hans-Christoph Steiner Date: Fri, 22 Dec 2017 16:28:25 +0000 (+0100) Subject: aapt 26.0.0 is required to properly parse permissions and label X-Git-Tag: 1.0.0~10^2~2 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=109eb928e8cd12492194b05b1c4be446cbeebf1b;p=fdroidserver.git 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' --- 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 00000000..a7510f3a Binary files /dev/null and b/tests/repo/duplicate.permisssions_9999999.apk differ diff --git a/tests/repo/index-v1.json b/tests/repo/index-v1.json index 17cfff83..b5a4c6ca 100644 --- a/tests/repo/index-v1.json +++ b/tests/repo/index-v1.json @@ -21,6 +21,19 @@ ] }, "apps": [ + { + "categories": [ + "tests" + ], + "suggestedVersionCode": "9999999", + "license": "Unknown", + "name": "Duplicate Permisssions", + "summary": "Test app for all possible ", + "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: