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:
Hans-Christoph Steiner 2017-12-22 17:28:25 +01:00
parent 01f3d071ee
commit 109eb928e8
7 changed files with 117 additions and 8 deletions

View 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)

View File

@ -0,0 +1,4 @@
Categories:
- tests
Name: Duplicate Permisssions
Summary: 'Test app for all possible <uses-permissions>'

Binary file not shown.

View File

@ -21,6 +21,19 @@
]
},
"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"
@ -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,

View 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>

View 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

View File

@ -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: