chiark / gitweb /
aapt 26.0.0 is required to properly parse permissions and label
authorHans-Christoph Steiner <hans@eds.org>
Fri, 22 Dec 2017 16:28:25 +0000 (17:28 +0100)
committerHans-Christoph Steiner <hans@eds.org>
Thu, 28 Dec 2017 22:07:26 +0000 (23:07 +0100)
#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
tests/metadata/duplicate.permisssions.yml [new file with mode: 0644]
tests/repo/duplicate.permisssions_9999999.apk [new file with mode: 0644]
tests/repo/index-v1.json
tests/repo/index.xml
tests/stats/known_apks.txt
tests/update.TestCase

index bd831f1e642ec4a3465d3fc5d4f3780682e84b91..6fce3340f12632251673cbd2010d0c88bac5ebbd 100644 (file)
@@ -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 (file)
index 0000000..3401c23
--- /dev/null
@@ -0,0 +1,4 @@
+Categories:
+- tests
+Name: Duplicate Permisssions
+Summary: 'Test app for all possible <uses-permissions>'
diff --git a/tests/repo/duplicate.permisssions_9999999.apk b/tests/repo/duplicate.permisssions_9999999.apk
new file mode 100644 (file)
index 0000000..a7510f3
Binary files /dev/null and b/tests/repo/duplicate.permisssions_9999999.apk differ
index 17cfff832258661a48a8df5509268796866ad353..b5a4c6ca0a302fb33f5a073597b5a20e6631e966 100644 (file)
     ]
   },
   "apps": [
+    {
+      "categories": [
+        "tests"
+      ],
+      "suggestedVersionCode": "9999999",
+      "license": "Unknown",
+      "name": "Duplicate Permisssions",
+      "summary": "Test app for all possible <uses-permissions>",
+      "added": 1513900800000,
+      "icon": "duplicate.permisssions.9999999.png",
+      "packageName": "duplicate.permisssions",
+      "lastUpdated": 1513900800000
+    },
     {
       "categories": [
         "System"
         "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,
index 1c696042c4fb29e970b52dce5d4f3738619cbe6b..3209f8bfb59c951c614f59cdd8319631736423c7 100644 (file)
@@ -8,6 +8,38 @@
        <install packageName="org.adaway"/>
        <uninstall packageName="com.android.vending"/>
        <uninstall packageName="com.facebook.orca"/>
+       <application id="duplicate.permisssions">
+               <id>duplicate.permisssions</id>
+               <added>2017-12-22</added>
+               <lastupdated>2017-12-22</lastupdated>
+               <name>Duplicate Permisssions</name>
+               <summary>Test app for all possible &lt;uses-permissions&gt;</summary>
+               <icon>duplicate.permisssions.9999999.png</icon>
+               <desc>&lt;p&gt;No description available&lt;/p&gt;</desc>
+               <license>Unknown</license>
+               <categories>tests</categories>
+               <category>tests</category>
+               <web></web>
+               <source></source>
+               <tracker></tracker>
+               <marketversion></marketversion>
+               <marketvercode>9999999</marketvercode>
+               <package>
+                       <version>0.3-7-gb817ac8</version>
+                       <versioncode>9999999</versioncode>
+                       <apkname>duplicate.permisssions_9999999.apk</apkname>
+                       <hash type="sha256">9ffc7e9b2740ce664059194805b2fbfc08b7970c8448a22b8bd828dfd6ad161c</hash>
+                       <size>11988</size>
+                       <sdkver>18</sdkver>
+                       <targetSdkVersion>27</targetSdkVersion>
+                       <added>2017-12-22</added>
+                       <sig>2d337e40aef77564bf62781ac424595c</sig>
+                       <permissions>ACCESS_NETWORK_STATE,ACCESS_WIFI_STATE,CHANGE_WIFI_MULTICAST_STATE,INTERNET,READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE</permissions>
+                       <uses-permission maxSdkVersion="18" name="android.permission.READ_EXTERNAL_STORAGE"/>
+                       <uses-permission maxSdkVersion="18" name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+                       <uses-permission-sdk-23 maxSdkVersion="27" name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
+               </package>
+       </application>
        <application id="fake.ota.update">
                <id>fake.ota.update</id>
                <added>2016-03-10</added>
index fbab3620e8d26d07ee937af2279d732824a7e469..e6e4d37e4d8bb0bb80f2006d81b1ce72c64bedef 100644 (file)
@@ -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
index db463a89ef543bd13bcdd88d5d72edd152575f0e..94bf507df934af9eb6b141264d6431a93e3dc0f1 100755 (executable)
@@ -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: