mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-10-05 18:50:09 +02:00
support app metadata in XML format
While the current text metadata format is good for human readability and editability, it is difficult to produce and parse using code. XML is a widespread standard format for easy automatic parsing and creating, while having decent human readability. The .pickle for testing is a lightly edited version of the real metadata for net.osmand.plus: * comments were removed * "NonFreeNet" was added as an AntiFeature
This commit is contained in:
parent
2831b3e93f
commit
ab145de6bc
@ -20,10 +20,14 @@
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
import sys
|
||||||
import glob
|
import glob
|
||||||
import cgi
|
import cgi
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
# use the C implementation when available
|
||||||
|
import xml.etree.cElementTree as ElementTree
|
||||||
|
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
import common
|
import common
|
||||||
@ -79,6 +83,8 @@ app_defaults = OrderedDict([
|
|||||||
|
|
||||||
# In the order in which they are laid out on files
|
# In the order in which they are laid out on files
|
||||||
# Sorted by their action and their place in the build timeline
|
# Sorted by their action and their place in the build timeline
|
||||||
|
# These variables can have varying datatypes. For example, anything with
|
||||||
|
# flagtype(v) == 'list' is inited as False, then set as a list of strings.
|
||||||
flag_defaults = OrderedDict([
|
flag_defaults = OrderedDict([
|
||||||
('disable', False),
|
('disable', False),
|
||||||
('commit', None),
|
('commit', None),
|
||||||
@ -494,6 +500,11 @@ def read_metadata(xref=True):
|
|||||||
check_metadata(appinfo)
|
check_metadata(appinfo)
|
||||||
apps[appid] = appinfo
|
apps[appid] = appinfo
|
||||||
|
|
||||||
|
for metafile in sorted(glob.glob(os.path.join('metadata', '*.xml'))):
|
||||||
|
appid, appinfo = parse_xml_metadata(metafile)
|
||||||
|
check_metadata(appinfo)
|
||||||
|
apps[appid] = appinfo
|
||||||
|
|
||||||
if xref:
|
if xref:
|
||||||
# Parse all descriptions at load time, just to ensure cross-referencing
|
# Parse all descriptions at load time, just to ensure cross-referencing
|
||||||
# errors are caught early rather than when they hit the build server.
|
# errors are caught early rather than when they hit the build server.
|
||||||
@ -579,6 +590,20 @@ def get_default_app_info_list():
|
|||||||
|
|
||||||
def post_metadata_parse(thisinfo):
|
def post_metadata_parse(thisinfo):
|
||||||
|
|
||||||
|
for build in thisinfo['builds']:
|
||||||
|
for k, v in build.iteritems():
|
||||||
|
if k == 'versionCode':
|
||||||
|
build['vercode'] = str(v)
|
||||||
|
del build['versionCode']
|
||||||
|
elif k == 'versionName':
|
||||||
|
build['version'] = str(v)
|
||||||
|
del build['versionName']
|
||||||
|
elif flagtype(k) == 'bool':
|
||||||
|
if v == 'no':
|
||||||
|
build[k] = False
|
||||||
|
else:
|
||||||
|
build[k] = True
|
||||||
|
|
||||||
if not thisinfo['Description']:
|
if not thisinfo['Description']:
|
||||||
thisinfo['Description'].append('No description available')
|
thisinfo['Description'].append('No description available')
|
||||||
|
|
||||||
@ -682,12 +707,6 @@ def parse_json_metadata(metafile):
|
|||||||
build[k] = ['yes']
|
build[k] = ['yes']
|
||||||
else:
|
else:
|
||||||
build[k] = ['no']
|
build[k] = ['no']
|
||||||
elif k == 'versionCode':
|
|
||||||
build['vercode'] = v
|
|
||||||
del build['versionCode']
|
|
||||||
elif k == 'versionName':
|
|
||||||
build['version'] = v
|
|
||||||
del build['versionName']
|
|
||||||
|
|
||||||
# TODO create schema using https://pypi.python.org/pypi/jsonschema
|
# TODO create schema using https://pypi.python.org/pypi/jsonschema
|
||||||
post_metadata_parse(thisinfo)
|
post_metadata_parse(thisinfo)
|
||||||
@ -695,6 +714,75 @@ def parse_json_metadata(metafile):
|
|||||||
return (appid, thisinfo)
|
return (appid, thisinfo)
|
||||||
|
|
||||||
|
|
||||||
|
def parse_xml_metadata(metafile):
|
||||||
|
|
||||||
|
appid = os.path.basename(metafile)[0:-4] # strip path and .xml
|
||||||
|
thisinfo = get_default_app_info_list()
|
||||||
|
thisinfo['id'] = appid
|
||||||
|
|
||||||
|
tree = ElementTree.ElementTree(file=metafile)
|
||||||
|
root = tree.getroot()
|
||||||
|
|
||||||
|
if root.tag != 'resources':
|
||||||
|
logging.critical(metafile + ' does not have root as <resources></resources>!')
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
supported_metadata = app_defaults.keys()
|
||||||
|
for child in root:
|
||||||
|
if child.tag != 'builds':
|
||||||
|
# builds does not have name="" attrib
|
||||||
|
name = child.attrib['name']
|
||||||
|
if name not in supported_metadata:
|
||||||
|
raise MetaDataException("Unrecognised metadata: <"
|
||||||
|
+ child.tag + ' name="' + name + '">'
|
||||||
|
+ child.text
|
||||||
|
+ "</" + child.tag + '>')
|
||||||
|
|
||||||
|
if child.tag == 'string':
|
||||||
|
thisinfo[name] = child.text
|
||||||
|
elif child.tag == 'string-array':
|
||||||
|
items = []
|
||||||
|
for item in child:
|
||||||
|
items.append(item.text)
|
||||||
|
thisinfo[name] = items
|
||||||
|
elif child.tag == 'builds':
|
||||||
|
builds = []
|
||||||
|
for build in child:
|
||||||
|
builddict = dict()
|
||||||
|
for key in build:
|
||||||
|
builddict[key.tag] = key.text
|
||||||
|
builds.append(builddict)
|
||||||
|
thisinfo['builds'] = builds
|
||||||
|
|
||||||
|
# convert to the odd internal format
|
||||||
|
for k in ('Description', 'Maintainer Notes'):
|
||||||
|
if isinstance(thisinfo[k], basestring):
|
||||||
|
text = thisinfo[k].rstrip().lstrip()
|
||||||
|
thisinfo[k] = text.split('\n')
|
||||||
|
|
||||||
|
supported_flags = flag_defaults.keys() + ['versionCode', 'versionName']
|
||||||
|
for build in thisinfo['builds']:
|
||||||
|
for k, v in build.iteritems():
|
||||||
|
if k not in supported_flags:
|
||||||
|
raise MetaDataException("Unrecognised build flag: {0}={1}"
|
||||||
|
.format(k, v))
|
||||||
|
keyflagtype = flagtype(k)
|
||||||
|
if keyflagtype == 'bool':
|
||||||
|
# TODO handle this using <xsd:element type="xsd:boolean> in a schema
|
||||||
|
if isinstance(v, basestring):
|
||||||
|
if v == 'true':
|
||||||
|
build[k] = True
|
||||||
|
else:
|
||||||
|
build[k] = False
|
||||||
|
elif keyflagtype == 'list':
|
||||||
|
if isinstance(v, basestring):
|
||||||
|
build[k] = [v]
|
||||||
|
|
||||||
|
post_metadata_parse(thisinfo)
|
||||||
|
|
||||||
|
return (appid, thisinfo)
|
||||||
|
|
||||||
|
|
||||||
def parse_txt_metadata(metafile):
|
def parse_txt_metadata(metafile):
|
||||||
|
|
||||||
appid = None
|
appid = None
|
||||||
|
@ -37,7 +37,7 @@ class MetadataTest(unittest.TestCase):
|
|||||||
fdroidserver.common.config = config
|
fdroidserver.common.config = config
|
||||||
|
|
||||||
apps = fdroidserver.metadata.read_metadata(xref=True)
|
apps = fdroidserver.metadata.read_metadata(xref=True)
|
||||||
for appid in ('org.smssecure.smssecure', 'org.adaway'):
|
for appid in ('org.smssecure.smssecure', 'org.adaway', 'net.osmand.plus'):
|
||||||
frompickle = pickle.load(open(os.path.join('metadata', appid + '.pickle')))
|
frompickle = pickle.load(open(os.path.join('metadata', appid + '.pickle')))
|
||||||
self.assertTrue(appid in apps.keys())
|
self.assertTrue(appid in apps.keys())
|
||||||
self.assertEquals(apps[appid], frompickle)
|
self.assertEquals(apps[appid], frompickle)
|
||||||
|
491
tests/metadata/net.osmand.plus.pickle
Normal file
491
tests/metadata/net.osmand.plus.pickle
Normal file
@ -0,0 +1,491 @@
|
|||||||
|
(dp0
|
||||||
|
S'Update Check Data'
|
||||||
|
p1
|
||||||
|
NsS'Bitcoin'
|
||||||
|
p2
|
||||||
|
NsS'AntiFeatures'
|
||||||
|
p3
|
||||||
|
(lp4
|
||||||
|
S'Tracking'
|
||||||
|
p5
|
||||||
|
aS'NonFreeNet'
|
||||||
|
p6
|
||||||
|
asS'Web Site'
|
||||||
|
p7
|
||||||
|
S'http://osmand.net'
|
||||||
|
p8
|
||||||
|
sS'Auto Update Mode'
|
||||||
|
p9
|
||||||
|
S'None'
|
||||||
|
p10
|
||||||
|
sS'Provides'
|
||||||
|
p11
|
||||||
|
NsS'Issue Tracker'
|
||||||
|
p12
|
||||||
|
S'https://github.com/osmandapp/Osmand/issues'
|
||||||
|
p13
|
||||||
|
sS'Donate'
|
||||||
|
p14
|
||||||
|
S'https://code.google.com/p/osmand/#Please_support_the_project'
|
||||||
|
p15
|
||||||
|
sS'Repo Type'
|
||||||
|
p16
|
||||||
|
S'git'
|
||||||
|
p17
|
||||||
|
sS'Description'
|
||||||
|
p18
|
||||||
|
(lp19
|
||||||
|
S"Osmand~'s features can be extended by enabling the plugins via the settings,"
|
||||||
|
p20
|
||||||
|
aS'which include online maps from many sources, tracking, OpenStreetMap (OSM) editing and'
|
||||||
|
p21
|
||||||
|
aS'accessibility enhancements.'
|
||||||
|
p22
|
||||||
|
aS''
|
||||||
|
p23
|
||||||
|
aS'Map data of both vector and raster types can be stored on the phone memory'
|
||||||
|
p24
|
||||||
|
aS'card for offline usage, and navigation by default uses offline methods. Map'
|
||||||
|
p25
|
||||||
|
aS'data packages for many territories can be downloaded from within the app and'
|
||||||
|
p26
|
||||||
|
aS'there is a desktop program available on the website as well for creating your'
|
||||||
|
p27
|
||||||
|
aS'own.'
|
||||||
|
p28
|
||||||
|
ag23
|
||||||
|
aS'Anti-Features: Tracking - It will send your device and application specs to an'
|
||||||
|
p29
|
||||||
|
aS'Analytics server upon downloading the list of maps you can download.'
|
||||||
|
p30
|
||||||
|
ag23
|
||||||
|
aS'[https://osmandapp.github.io/changes.html Changelog]'
|
||||||
|
p31
|
||||||
|
asS'Requires Root'
|
||||||
|
p32
|
||||||
|
I00
|
||||||
|
sS'comments'
|
||||||
|
p33
|
||||||
|
(lp34
|
||||||
|
sS'id'
|
||||||
|
p35
|
||||||
|
S'net.osmand.plus'
|
||||||
|
p36
|
||||||
|
sS'Repo'
|
||||||
|
p37
|
||||||
|
S'https://github.com/mvdan/OsmAnd-submodules'
|
||||||
|
p38
|
||||||
|
sS'No Source Since'
|
||||||
|
p39
|
||||||
|
g23
|
||||||
|
sS'Auto Name'
|
||||||
|
p40
|
||||||
|
g23
|
||||||
|
sS'Categories'
|
||||||
|
p41
|
||||||
|
(lp42
|
||||||
|
S'Navigation'
|
||||||
|
p43
|
||||||
|
asS'Source Code'
|
||||||
|
p44
|
||||||
|
S'https://github.com/osmandapp/Osmand'
|
||||||
|
p45
|
||||||
|
sS'Litecoin'
|
||||||
|
p46
|
||||||
|
NsS'Update Check Ignore'
|
||||||
|
p47
|
||||||
|
NsS'Name'
|
||||||
|
p48
|
||||||
|
S'OsmAnd~'
|
||||||
|
p49
|
||||||
|
sS'License'
|
||||||
|
p50
|
||||||
|
S'GPLv3'
|
||||||
|
p51
|
||||||
|
sS'Changelog'
|
||||||
|
p52
|
||||||
|
g23
|
||||||
|
sS'Update Check Mode'
|
||||||
|
p53
|
||||||
|
S'None'
|
||||||
|
p54
|
||||||
|
sS'Summary'
|
||||||
|
p55
|
||||||
|
S'Offline/online maps and navigation'
|
||||||
|
p56
|
||||||
|
sS'Dogecoin'
|
||||||
|
p57
|
||||||
|
NsS'Maintainer Notes'
|
||||||
|
p58
|
||||||
|
(lp59
|
||||||
|
S'No UCMs apply because git never contains actual releases, only pre-releses.'
|
||||||
|
p60
|
||||||
|
ag23
|
||||||
|
aS'The build instructions have been moved to a script in the root of the repo,'
|
||||||
|
p61
|
||||||
|
aS"'build'. This way it can be updated along with the submodules."
|
||||||
|
p62
|
||||||
|
asS'Current Version Code'
|
||||||
|
p63
|
||||||
|
S'197'
|
||||||
|
p64
|
||||||
|
sS'Binaries'
|
||||||
|
p65
|
||||||
|
NsS'Archive Policy'
|
||||||
|
p66
|
||||||
|
NsS'builds'
|
||||||
|
p67
|
||||||
|
(lp68
|
||||||
|
(dp69
|
||||||
|
S'submodules'
|
||||||
|
p70
|
||||||
|
I01
|
||||||
|
sS'vercode'
|
||||||
|
p71
|
||||||
|
S'182'
|
||||||
|
p72
|
||||||
|
sS'forceversion'
|
||||||
|
p73
|
||||||
|
I00
|
||||||
|
sS'oldsdkloc'
|
||||||
|
p74
|
||||||
|
I00
|
||||||
|
sS'kivy'
|
||||||
|
p75
|
||||||
|
I00
|
||||||
|
sS'gradle'
|
||||||
|
p76
|
||||||
|
I00
|
||||||
|
sS'scanignore'
|
||||||
|
p77
|
||||||
|
(lp78
|
||||||
|
sS'srclibs'
|
||||||
|
p79
|
||||||
|
(lp80
|
||||||
|
sS'encoding'
|
||||||
|
p81
|
||||||
|
NsS'extlibs'
|
||||||
|
p82
|
||||||
|
(lp83
|
||||||
|
sS'init'
|
||||||
|
p84
|
||||||
|
g23
|
||||||
|
sS'version'
|
||||||
|
p85
|
||||||
|
S'1.8.2'
|
||||||
|
p86
|
||||||
|
sS'build'
|
||||||
|
p87
|
||||||
|
S'./old-ndk-build.sh && ant -Dsdk.dir="$ANDROID_SDK" -Dndk.dir="$ANDROID_NDK" -DBLACKBERRY_BUILD=false -DBUILD_SUFFIX= -DAPK_NUMBER_VERSION=182 "-DFEATURES=+play_market +gps_status -parking_plugin -blackberry -amazon -route_nav" -DCLEAN_CPP=false -DPACKAGE_TO_BUILT=net.osmand.plus -DAPK_VERSION=1.8.2 -Dnet.osmand.plus= -Dbuild.version=1.8.2 -Dbuild.version.code=182 -Dnativeoff=false "-DversionFeatures=+play_market +gps_status -parking_plugin -blackberry -amazon -route_nav" clean release'
|
||||||
|
p88
|
||||||
|
sS'rm'
|
||||||
|
p89
|
||||||
|
(lp90
|
||||||
|
sS'type'
|
||||||
|
p91
|
||||||
|
S'raw'
|
||||||
|
p92
|
||||||
|
sS'subdir'
|
||||||
|
p93
|
||||||
|
S'android/OsmAnd'
|
||||||
|
p94
|
||||||
|
sS'ndk_path'
|
||||||
|
p95
|
||||||
|
g23
|
||||||
|
sS'forcevercode'
|
||||||
|
p96
|
||||||
|
I00
|
||||||
|
sS'preassemble'
|
||||||
|
p97
|
||||||
|
(lp98
|
||||||
|
sS'update'
|
||||||
|
p99
|
||||||
|
(lp100
|
||||||
|
S'auto'
|
||||||
|
p101
|
||||||
|
asS'maven'
|
||||||
|
p102
|
||||||
|
I00
|
||||||
|
sS'disable'
|
||||||
|
p103
|
||||||
|
I00
|
||||||
|
sS'commit'
|
||||||
|
p104
|
||||||
|
S'76ada6c8a08afe69acb755503373ac36328ef665'
|
||||||
|
p105
|
||||||
|
sS'scandelete'
|
||||||
|
p106
|
||||||
|
(lp107
|
||||||
|
sS'buildjni'
|
||||||
|
p108
|
||||||
|
(lp109
|
||||||
|
S'no'
|
||||||
|
p110
|
||||||
|
asS'ndk'
|
||||||
|
p111
|
||||||
|
S'r10e'
|
||||||
|
p112
|
||||||
|
sS'target'
|
||||||
|
p113
|
||||||
|
NsS'antcommands'
|
||||||
|
p114
|
||||||
|
NsS'patch'
|
||||||
|
p115
|
||||||
|
(lp116
|
||||||
|
sS'prebuild'
|
||||||
|
p117
|
||||||
|
S'sed -i \'s/"OsmAnd+"/"OsmAnd~"/g\' build.xml'
|
||||||
|
p118
|
||||||
|
sS'novcheck'
|
||||||
|
p119
|
||||||
|
I00
|
||||||
|
sS'output'
|
||||||
|
p120
|
||||||
|
S'bin/OsmAnd-release-unsigned.apk'
|
||||||
|
p121
|
||||||
|
sa(dp122
|
||||||
|
S'submodules'
|
||||||
|
p123
|
||||||
|
I01
|
||||||
|
sg71
|
||||||
|
S'183'
|
||||||
|
p124
|
||||||
|
sg73
|
||||||
|
I00
|
||||||
|
sg74
|
||||||
|
I00
|
||||||
|
sg75
|
||||||
|
I00
|
||||||
|
sg76
|
||||||
|
I00
|
||||||
|
sg77
|
||||||
|
g78
|
||||||
|
sg79
|
||||||
|
g80
|
||||||
|
sg81
|
||||||
|
Nsg82
|
||||||
|
g83
|
||||||
|
sg84
|
||||||
|
g23
|
||||||
|
sg85
|
||||||
|
S'1.8.3'
|
||||||
|
p125
|
||||||
|
sS'subdir'
|
||||||
|
p126
|
||||||
|
S'android/OsmAnd'
|
||||||
|
p127
|
||||||
|
sg89
|
||||||
|
g90
|
||||||
|
sg91
|
||||||
|
g92
|
||||||
|
sS'build'
|
||||||
|
p128
|
||||||
|
S'../../build'
|
||||||
|
p129
|
||||||
|
sg95
|
||||||
|
g23
|
||||||
|
sg96
|
||||||
|
I00
|
||||||
|
sg97
|
||||||
|
g98
|
||||||
|
sg99
|
||||||
|
g100
|
||||||
|
sg102
|
||||||
|
I00
|
||||||
|
sg103
|
||||||
|
I00
|
||||||
|
sS'commit'
|
||||||
|
p130
|
||||||
|
S'1.8.3'
|
||||||
|
p131
|
||||||
|
sg106
|
||||||
|
g107
|
||||||
|
sS'buildjni'
|
||||||
|
p132
|
||||||
|
(lp133
|
||||||
|
S'no'
|
||||||
|
p134
|
||||||
|
asg111
|
||||||
|
g112
|
||||||
|
sg113
|
||||||
|
Nsg114
|
||||||
|
Nsg115
|
||||||
|
g116
|
||||||
|
sS'prebuild'
|
||||||
|
p135
|
||||||
|
g23
|
||||||
|
sg119
|
||||||
|
I00
|
||||||
|
sS'output'
|
||||||
|
p136
|
||||||
|
S'bin/OsmAnd-release-unsigned.apk'
|
||||||
|
p137
|
||||||
|
sa(dp138
|
||||||
|
S'submodules'
|
||||||
|
p139
|
||||||
|
I01
|
||||||
|
sg71
|
||||||
|
S'196'
|
||||||
|
p140
|
||||||
|
sg73
|
||||||
|
I00
|
||||||
|
sg74
|
||||||
|
I00
|
||||||
|
sg75
|
||||||
|
I00
|
||||||
|
sg76
|
||||||
|
I00
|
||||||
|
sg77
|
||||||
|
g78
|
||||||
|
sg79
|
||||||
|
g80
|
||||||
|
sg81
|
||||||
|
Nsg82
|
||||||
|
g83
|
||||||
|
sg84
|
||||||
|
g23
|
||||||
|
sg85
|
||||||
|
S'1.9.4'
|
||||||
|
p141
|
||||||
|
sS'subdir'
|
||||||
|
p142
|
||||||
|
S'android/OsmAnd'
|
||||||
|
p143
|
||||||
|
sg89
|
||||||
|
g90
|
||||||
|
sg91
|
||||||
|
g92
|
||||||
|
sS'build'
|
||||||
|
p144
|
||||||
|
S'../../build'
|
||||||
|
p145
|
||||||
|
sg95
|
||||||
|
g23
|
||||||
|
sg96
|
||||||
|
I00
|
||||||
|
sg97
|
||||||
|
g98
|
||||||
|
sg99
|
||||||
|
g100
|
||||||
|
sg102
|
||||||
|
I00
|
||||||
|
sg103
|
||||||
|
I00
|
||||||
|
sS'commit'
|
||||||
|
p146
|
||||||
|
S'1.9.4'
|
||||||
|
p147
|
||||||
|
sg106
|
||||||
|
g107
|
||||||
|
sS'buildjni'
|
||||||
|
p148
|
||||||
|
(lp149
|
||||||
|
S'no'
|
||||||
|
p150
|
||||||
|
asS'ndk'
|
||||||
|
p151
|
||||||
|
S'r10d'
|
||||||
|
p152
|
||||||
|
sg113
|
||||||
|
Nsg114
|
||||||
|
Nsg115
|
||||||
|
g116
|
||||||
|
sg135
|
||||||
|
g23
|
||||||
|
sg119
|
||||||
|
I00
|
||||||
|
sS'output'
|
||||||
|
p153
|
||||||
|
S'bin/OsmAnd-release-unsigned.apk'
|
||||||
|
p154
|
||||||
|
sa(dp155
|
||||||
|
S'submodules'
|
||||||
|
p156
|
||||||
|
I01
|
||||||
|
sg71
|
||||||
|
S'197'
|
||||||
|
p157
|
||||||
|
sg73
|
||||||
|
I00
|
||||||
|
sg74
|
||||||
|
I00
|
||||||
|
sg75
|
||||||
|
I00
|
||||||
|
sg76
|
||||||
|
I00
|
||||||
|
sg77
|
||||||
|
g78
|
||||||
|
sg79
|
||||||
|
g80
|
||||||
|
sg81
|
||||||
|
Nsg82
|
||||||
|
g83
|
||||||
|
sg84
|
||||||
|
g23
|
||||||
|
sg85
|
||||||
|
S'1.9.5'
|
||||||
|
p158
|
||||||
|
sS'subdir'
|
||||||
|
p159
|
||||||
|
S'android/OsmAnd'
|
||||||
|
p160
|
||||||
|
sg89
|
||||||
|
g90
|
||||||
|
sg91
|
||||||
|
g92
|
||||||
|
sS'build'
|
||||||
|
p161
|
||||||
|
S'../../build'
|
||||||
|
p162
|
||||||
|
sg95
|
||||||
|
g23
|
||||||
|
sg96
|
||||||
|
I00
|
||||||
|
sg97
|
||||||
|
g98
|
||||||
|
sg99
|
||||||
|
g100
|
||||||
|
sg102
|
||||||
|
I00
|
||||||
|
sg103
|
||||||
|
I00
|
||||||
|
sS'commit'
|
||||||
|
p163
|
||||||
|
S'1.9.5'
|
||||||
|
p164
|
||||||
|
sg106
|
||||||
|
g107
|
||||||
|
sS'buildjni'
|
||||||
|
p165
|
||||||
|
(lp166
|
||||||
|
S'no'
|
||||||
|
p167
|
||||||
|
asS'ndk'
|
||||||
|
p168
|
||||||
|
S'r10d'
|
||||||
|
p169
|
||||||
|
sg113
|
||||||
|
Nsg114
|
||||||
|
Nsg115
|
||||||
|
g116
|
||||||
|
sg135
|
||||||
|
g23
|
||||||
|
sg119
|
||||||
|
I00
|
||||||
|
sS'output'
|
||||||
|
p170
|
||||||
|
S'bin/OsmAnd-release-unsigned.apk'
|
||||||
|
p171
|
||||||
|
sasS'FlattrID'
|
||||||
|
p172
|
||||||
|
NsS'Disabled'
|
||||||
|
p173
|
||||||
|
NsS'Update Check Name'
|
||||||
|
p174
|
||||||
|
NsS'Vercode Operation'
|
||||||
|
p175
|
||||||
|
NsS'Current Version'
|
||||||
|
p176
|
||||||
|
S'1.9.5'
|
||||||
|
p177
|
||||||
|
s.
|
180
tests/metadata/net.osmand.plus.xml
Normal file
180
tests/metadata/net.osmand.plus.xml
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<string-array name="AntiFeatures">
|
||||||
|
<item>Tracking</item>
|
||||||
|
<item>NonFreeNet</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="Categories">
|
||||||
|
<item>Navigation</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string name="License">GPLv3</string>
|
||||||
|
<string name="Web Site">http://osmand.net</string>
|
||||||
|
<string name="Source Code">https://github.com/osmandapp/Osmand</string>
|
||||||
|
<string name="Issue Tracker">https://github.com/osmandapp/Osmand/issues</string>
|
||||||
|
<string name="Donate">https://code.google.com/p/osmand/#Please_support_the_project</string>
|
||||||
|
|
||||||
|
<string name="Name">OsmAnd~</string>
|
||||||
|
<string name="Summary">Offline/online maps and navigation</string>
|
||||||
|
<string name="Description">Osmand~'s features can be extended by enabling the plugins via the settings,
|
||||||
|
which include online maps from many sources, tracking, OpenStreetMap (OSM) editing and
|
||||||
|
accessibility enhancements.
|
||||||
|
|
||||||
|
Map data of both vector and raster types can be stored on the phone memory
|
||||||
|
card for offline usage, and navigation by default uses offline methods. Map
|
||||||
|
data packages for many territories can be downloaded from within the app and
|
||||||
|
there is a desktop program available on the website as well for creating your
|
||||||
|
own.
|
||||||
|
|
||||||
|
Anti-Features: Tracking - It will send your device and application specs to an
|
||||||
|
Analytics server upon downloading the list of maps you can download.
|
||||||
|
|
||||||
|
[https://osmandapp.github.io/changes.html Changelog]
|
||||||
|
</string>
|
||||||
|
|
||||||
|
<string name="Repo Type">git</string>
|
||||||
|
<string name="Repo">https://github.com/mvdan/OsmAnd-submodules</string>
|
||||||
|
<!-- <string name="Repo">https://github.com/osmandapp/Osmand</string/ -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
# Old builds with the old repo
|
||||||
|
#Build:0.6.5,34
|
||||||
|
# commit=v0.6.5
|
||||||
|
# subdir=OsmAnd
|
||||||
|
# encoding=utf-8
|
||||||
|
# prebuild=mkdir assets && \
|
||||||
|
# mkdir raw
|
||||||
|
#
|
||||||
|
#Build:0.6.6,36
|
||||||
|
# commit=v0.6.6_2
|
||||||
|
# subdir=OsmAnd
|
||||||
|
# encoding=utf-8
|
||||||
|
# prebuild=mkdir raw
|
||||||
|
#
|
||||||
|
#Build:0.6.7,37
|
||||||
|
# commit=v0.6.7
|
||||||
|
# subdir=OsmAnd
|
||||||
|
# encoding=utf-8
|
||||||
|
# patch=code37.patch
|
||||||
|
# prebuild=mkdir raw
|
||||||
|
#
|
||||||
|
#Build:0.6.8,39
|
||||||
|
# commit=v0.6.8
|
||||||
|
# subdir=OsmAnd
|
||||||
|
# encoding=utf-8
|
||||||
|
# prebuild=mkdir raw
|
||||||
|
#
|
||||||
|
#Build:0.6.8',41
|
||||||
|
# disable=No corresponding source for whatever this is
|
||||||
|
# commit=unknown - see disabled
|
||||||
|
#
|
||||||
|
#Build:0.6.9,42
|
||||||
|
# commit=v0.6.9
|
||||||
|
# subdir=OsmAnd
|
||||||
|
# encoding=utf-8
|
||||||
|
# prebuild=mkdir raw
|
||||||
|
#
|
||||||
|
#Build:0.6.9',43
|
||||||
|
# disable=No corresponding source for whatever this is
|
||||||
|
# commit=unknown - see disabled
|
||||||
|
#
|
||||||
|
#Build:0.8.1,65
|
||||||
|
# commit=d62472532d8
|
||||||
|
# subdir=OsmAnd
|
||||||
|
# target=android-8
|
||||||
|
# init=rm -f build.xml
|
||||||
|
# encoding=utf-8
|
||||||
|
# forceversion=yes
|
||||||
|
# prebuild=cd ../DataExtractionOSM && \
|
||||||
|
# ant compile build && \
|
||||||
|
# cd ../OsmAnd/ && \
|
||||||
|
# cp ../DataExtractionOSM/build/OsmAndMapCreator.jar libs/ && \
|
||||||
|
# zip -d libs/OsmAndMapCreator.jar net/osmand/LogUtil.class && \
|
||||||
|
# cp -r ../DataExtractionOSM/build/lib/ libs/
|
||||||
|
# buildjni=no
|
||||||
|
#
|
||||||
|
#Build:0.8.2,71
|
||||||
|
# commit=50a4733475cd
|
||||||
|
# subdir=OsmAnd
|
||||||
|
# submodules=yes
|
||||||
|
# target=android-8
|
||||||
|
# init=rm -f build.xml
|
||||||
|
# encoding=utf-8
|
||||||
|
# forceversion=yes
|
||||||
|
# forcevercode=yes
|
||||||
|
# prebuild=cd ../DataExtractionOSM && \
|
||||||
|
# ant compile build && \
|
||||||
|
# cd ../OsmAnd/ && \
|
||||||
|
# sed -i 's/app_version">[^<]*/app_version">0.8.2-fdroid/' res/values/no_translate.xml && \
|
||||||
|
# cp ../DataExtractionOSM/build/OsmAndMapCreator.jar libs/ && \
|
||||||
|
# zip -d libs/OsmAndMapCreator.jar net/osmand/LogUtil.class && \
|
||||||
|
# cp -r ../DataExtractionOSM/build/lib/ libs/
|
||||||
|
# buildjni=yes
|
||||||
|
-->
|
||||||
|
|
||||||
|
<builds>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<versionCode>182</versionCode>
|
||||||
|
<versionName>1.8.2</versionName>
|
||||||
|
<commit>76ada6c8a08afe69acb755503373ac36328ef665</commit>
|
||||||
|
<subdir>android/OsmAnd</subdir>
|
||||||
|
<submodules>true</submodules>
|
||||||
|
<output>bin/OsmAnd-release-unsigned.apk</output>
|
||||||
|
<prebuild>sed -i 's/"OsmAnd+"/"OsmAnd~"/g' build.xml</prebuild>
|
||||||
|
<build>./old-ndk-build.sh && ant -Dsdk.dir="$ANDROID_SDK" -Dndk.dir="$ANDROID_NDK" -DBLACKBERRY_BUILD=false -DBUILD_SUFFIX= -DAPK_NUMBER_VERSION=182 "-DFEATURES=+play_market +gps_status -parking_plugin -blackberry -amazon -route_nav" -DCLEAN_CPP=false -DPACKAGE_TO_BUILT=net.osmand.plus -DAPK_VERSION=1.8.2 -Dnet.osmand.plus= -Dbuild.version=1.8.2 -Dbuild.version.code=182 -Dnativeoff=false "-DversionFeatures=+play_market +gps_status -parking_plugin -blackberry -amazon -route_nav" clean release</build>
|
||||||
|
<buildjni>no</buildjni>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<versionName>1.8.3</versionName>
|
||||||
|
<versionCode>183</versionCode>
|
||||||
|
<commit>1.8.3</commit>
|
||||||
|
<subdir>android/OsmAnd</subdir>
|
||||||
|
<submodules>true</submodules>
|
||||||
|
<output>bin/OsmAnd-release-unsigned.apk</output>
|
||||||
|
<build>../../build</build>
|
||||||
|
<buildjni>no</buildjni>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<versionName>1.9.4</versionName>
|
||||||
|
<versionCode>196</versionCode>
|
||||||
|
<commit>1.9.4</commit>
|
||||||
|
<subdir>android/OsmAnd</subdir>
|
||||||
|
<submodules>true</submodules>
|
||||||
|
<output>bin/OsmAnd-release-unsigned.apk</output>
|
||||||
|
<build>../../build</build>
|
||||||
|
<buildjni>no</buildjni>
|
||||||
|
<ndk>r10d</ndk>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<versionName>1.9.5</versionName>
|
||||||
|
<versionCode>197</versionCode>
|
||||||
|
<commit>1.9.5</commit>
|
||||||
|
<subdir>android/OsmAnd</subdir>
|
||||||
|
<submodules>true</submodules>
|
||||||
|
<output>bin/OsmAnd-release-unsigned.apk</output>
|
||||||
|
<build>../../build</build>
|
||||||
|
<buildjni>no</buildjni>
|
||||||
|
<ndk>r10d</ndk>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</builds>
|
||||||
|
|
||||||
|
<string name="Maintainer Notes">
|
||||||
|
No UCMs apply because git never contains actual releases, only pre-releses.
|
||||||
|
|
||||||
|
The build instructions have been moved to a script in the root of the repo,
|
||||||
|
'build'. This way it can be updated along with the submodules.
|
||||||
|
</string>
|
||||||
|
|
||||||
|
<string name="Auto Update Mode">None</string>
|
||||||
|
<string name="Update Check Mode">None</string>
|
||||||
|
<string name="Current Version">1.9.5</string>
|
||||||
|
<string name="Current Version Code">197</string>
|
||||||
|
|
||||||
|
</resources>
|
Loading…
Reference in New Issue
Block a user