mirror of
				https://github.com/f-droid/fdroidserver.git
				synced 2025-11-04 14:30:30 +03:00 
			
		
		
		
	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'
This commit is contained in:
		
							parent
							
								
									01f3d071ee
								
							
						
					
					
						commit
						109eb928e8
					
				
					 7 changed files with 117 additions and 8 deletions
				
			
		| 
						 | 
					@ -57,6 +57,9 @@ from fdroidserver.exception import FDroidException, VCSException, NoSubmodulesEx
 | 
				
			||||||
    BuildException, VerificationException
 | 
					    BuildException, VerificationException
 | 
				
			||||||
from .asynchronousfilereader import AsynchronousFileReader
 | 
					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
 | 
					# A signature block file with a .DSA, .RSA, or .EC extension
 | 
				
			||||||
CERT_PATH_REGEX = re.compile(r'^META-INF/.*\.(DSA|EC|RSA)$')
 | 
					CERT_PATH_REGEX = re.compile(r'^META-INF/.*\.(DSA|EC|RSA)$')
 | 
				
			||||||
| 
						 | 
					@ -84,7 +87,7 @@ default_config = {
 | 
				
			||||||
        'r16': None,
 | 
					        'r16': None,
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    'qt_sdk_path': None,
 | 
					    'qt_sdk_path': None,
 | 
				
			||||||
    'build_tools': "25.0.2",
 | 
					    'build_tools': MINIMUM_AAPT_VERSION,
 | 
				
			||||||
    'force_build_tools': False,
 | 
					    'force_build_tools': False,
 | 
				
			||||||
    'java_paths': None,
 | 
					    'java_paths': None,
 | 
				
			||||||
    'ant': "ant",
 | 
					    'ant': "ant",
 | 
				
			||||||
| 
						 | 
					@ -397,13 +400,13 @@ def test_aapt_version(aapt):
 | 
				
			||||||
            # the Debian package has the version string like "v0.2-23.0.2"
 | 
					            # the Debian package has the version string like "v0.2-23.0.2"
 | 
				
			||||||
            too_old = False
 | 
					            too_old = False
 | 
				
			||||||
            if '.' in bugfix:
 | 
					            if '.' in bugfix:
 | 
				
			||||||
                if LooseVersion(bugfix) < LooseVersion('24.0.0'):
 | 
					                if LooseVersion(bugfix) < LooseVersion(MINIMUM_AAPT_VERSION):
 | 
				
			||||||
                    too_old = True
 | 
					                    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
 | 
					                too_old = True
 | 
				
			||||||
            if too_old:
 | 
					            if too_old:
 | 
				
			||||||
                logging.warning(_("'{aapt}' is too old, fdroid requires build-tools-24.0.0 or newer!")
 | 
					                logging.warning(_("'{aapt}' is too old, fdroid requires build-tools-{version} or newer!")
 | 
				
			||||||
                                .format(aapt=aapt))
 | 
					                                .format(aapt=aapt, version=MINIMUM_AAPT_VERSION))
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            logging.warning(_('Unknown version of aapt, might cause problems: ') + output)
 | 
					            logging.warning(_('Unknown version of aapt, might cause problems: ') + output)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										4
									
								
								tests/metadata/duplicate.permisssions.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								tests/metadata/duplicate.permisssions.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,4 @@
 | 
				
			||||||
 | 
					Categories:
 | 
				
			||||||
 | 
					- tests
 | 
				
			||||||
 | 
					Name: Duplicate Permisssions
 | 
				
			||||||
 | 
					Summary: 'Test app for all possible <uses-permissions>'
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								tests/repo/duplicate.permisssions_9999999.apk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								tests/repo/duplicate.permisssions_9999999.apk
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -21,6 +21,19 @@
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "apps": [
 | 
					  "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": [
 | 
					      "categories": [
 | 
				
			||||||
        "System"
 | 
					        "System"
 | 
				
			||||||
| 
						 | 
					@ -271,6 +284,62 @@
 | 
				
			||||||
        "versionName": "1.2"
 | 
					        "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": [
 | 
					    "fake.ota.update": [
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "added": 1457568000000,
 | 
					        "added": 1457568000000,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,6 +8,38 @@
 | 
				
			||||||
	<install packageName="org.adaway"/>
 | 
						<install packageName="org.adaway"/>
 | 
				
			||||||
	<uninstall packageName="com.android.vending"/>
 | 
						<uninstall packageName="com.android.vending"/>
 | 
				
			||||||
	<uninstall packageName="com.facebook.orca"/>
 | 
						<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 <uses-permissions></summary>
 | 
				
			||||||
 | 
							<icon>duplicate.permisssions.9999999.png</icon>
 | 
				
			||||||
 | 
							<desc><p>No description available</p></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">
 | 
						<application id="fake.ota.update">
 | 
				
			||||||
		<id>fake.ota.update</id>
 | 
							<id>fake.ota.update</id>
 | 
				
			||||||
		<added>2016-03-10</added>
 | 
							<added>2016-03-10</added>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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_4.apk repo/com.politedroid 2017-06-23
 | 
				
			||||||
com.politedroid_5.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
 | 
					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
 | 
					fake.ota.update_1234.zip fake.ota.update 2016-03-10
 | 
				
			||||||
obb.main.oldversion_1444412523.apk obb.main.oldversion 2013-12-31
 | 
					obb.main.oldversion_1444412523.apk obb.main.oldversion 2013-12-31
 | 
				
			||||||
obb.main.twoversions_1101613.apk obb.main.twoversions 2015-10-12
 | 
					obb.main.twoversions_1101613.apk obb.main.twoversions 2015-10-12
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -253,14 +253,14 @@ class UpdateTest(unittest.TestCase):
 | 
				
			||||||
        apps = fdroidserver.metadata.read_metadata(xref=True)
 | 
					        apps = fdroidserver.metadata.read_metadata(xref=True)
 | 
				
			||||||
        knownapks = fdroidserver.common.KnownApks()
 | 
					        knownapks = fdroidserver.common.KnownApks()
 | 
				
			||||||
        apks, cachechanged = fdroidserver.update.process_apks({}, 'repo', knownapks, False)
 | 
					        apks, cachechanged = fdroidserver.update.process_apks({}, 'repo', knownapks, False)
 | 
				
			||||||
        self.assertEqual(len(apks), 11)
 | 
					        self.assertEqual(len(apks), 12)
 | 
				
			||||||
        apk = apks[0]
 | 
					        apk = apks[0]
 | 
				
			||||||
        self.assertEqual(apk['packageName'], 'com.politedroid')
 | 
					        self.assertEqual(apk['packageName'], 'com.politedroid')
 | 
				
			||||||
        self.assertEqual(apk['versionCode'], 3)
 | 
					        self.assertEqual(apk['versionCode'], 3)
 | 
				
			||||||
        self.assertEqual(apk['minSdkVersion'], '3')
 | 
					        self.assertEqual(apk['minSdkVersion'], '3')
 | 
				
			||||||
        self.assertEqual(apk['targetSdkVersion'], '3')
 | 
					        self.assertEqual(apk['targetSdkVersion'], '3')
 | 
				
			||||||
        self.assertFalse('maxSdkVersion' in apk)
 | 
					        self.assertFalse('maxSdkVersion' in apk)
 | 
				
			||||||
        apk = apks[4]
 | 
					        apk = apks[5]
 | 
				
			||||||
        self.assertEqual(apk['packageName'], 'obb.main.oldversion')
 | 
					        self.assertEqual(apk['packageName'], 'obb.main.oldversion')
 | 
				
			||||||
        self.assertEqual(apk['versionCode'], 1444412523)
 | 
					        self.assertEqual(apk['versionCode'], 1444412523)
 | 
				
			||||||
        self.assertEqual(apk['minSdkVersion'], '4')
 | 
					        self.assertEqual(apk['minSdkVersion'], '4')
 | 
				
			||||||
| 
						 | 
					@ -527,7 +527,7 @@ class UpdateTest(unittest.TestCase):
 | 
				
			||||||
        knownapks = fdroidserver.common.KnownApks()
 | 
					        knownapks = fdroidserver.common.KnownApks()
 | 
				
			||||||
        apks, cachechanged = fdroidserver.update.process_apks({}, 'repo', knownapks, False)
 | 
					        apks, cachechanged = fdroidserver.update.process_apks({}, 'repo', knownapks, False)
 | 
				
			||||||
        fdroidserver.update.translate_per_build_anti_features(apps, apks)
 | 
					        fdroidserver.update.translate_per_build_anti_features(apps, apks)
 | 
				
			||||||
        self.assertEqual(len(apks), 11)
 | 
					        self.assertEqual(len(apks), 12)
 | 
				
			||||||
        foundtest = False
 | 
					        foundtest = False
 | 
				
			||||||
        for apk in apks:
 | 
					        for apk in apks:
 | 
				
			||||||
            if apk['packageName'] == 'com.politedroid' and apk['versionCode'] == 3:
 | 
					            if apk['packageName'] == 'com.politedroid' and apk['versionCode'] == 3:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue