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)$')
'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",
# 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)
--- /dev/null
+Categories:
+- tests
+Name: Duplicate Permisssions
+Summary: 'Test app for all possible <uses-permissions>'
]
},
"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,
<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 <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">
<id>fake.ota.update</id>
<added>2016-03-10</added>
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
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')
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: