purge code that modifies the app description, including linkifying

closes #845
This commit is contained in:
Hans-Christoph Steiner 2020-11-17 14:17:08 +01:00
parent 15a6e2d3a0
commit 828d6015ef
14 changed files with 68 additions and 1488 deletions

View File

@ -405,7 +405,7 @@ def make_v0(apps, apks, repodir, repodict, requestsdict, fdroid_signing_key_fing
addElement('icon', app.icon, doc, apel)
addElementCheckLocalized('desc', app, 'Description', doc, apel,
'<p>No description available</p>')
'No description available')
addElement('license', app.License, doc, apel)
if app.Categories:

View File

@ -583,7 +583,7 @@ def main():
config = common.read_config(options)
# Get all apps...
allapps = metadata.read_metadata(xref=True)
allapps = metadata.read_metadata()
apps = common.read_app_args(options.appid, allapps, False)
anywarns = check_for_unsupported_metadata_files()

View File

@ -21,10 +21,7 @@
import os
import re
import glob
import html
import logging
import textwrap
import io
import yaml
try:
from yaml import CSafeLoader as SafeLoader
@ -467,196 +464,6 @@ def check_metadata(app):
v.check(app[k], app.id)
# Formatter for descriptions. Create an instance, and call parseline() with
# each line of the description source from the metadata. At the end, call
# end() and then text_txt and text_html will contain the result.
class DescriptionFormatter:
stNONE = 0
stPARA = 1
stUL = 2
stOL = 3
def __init__(self, linkres):
self.bold = False
self.ital = False
self.state = self.stNONE
self.laststate = self.stNONE
self.text_html = ''
self.text_txt = ''
self.html = io.StringIO()
self.text = io.StringIO()
self.para_lines = []
self.linkResolver = None
self.linkResolver = linkres
def endcur(self, notstates=None):
if notstates and self.state in notstates:
return
if self.state == self.stPARA:
self.endpara()
elif self.state == self.stUL:
self.endul()
elif self.state == self.stOL:
self.endol()
def endpara(self):
self.laststate = self.state
self.state = self.stNONE
whole_para = ' '.join(self.para_lines)
self.addtext(whole_para)
wrapped = textwrap.fill(whole_para, 80,
break_long_words=False,
break_on_hyphens=False)
self.text.write(wrapped)
self.html.write('</p>')
del self.para_lines[:]
def endul(self):
self.html.write('</ul>')
self.laststate = self.state
self.state = self.stNONE
def endol(self):
self.html.write('</ol>')
self.laststate = self.state
self.state = self.stNONE
def formatted(self, txt, htmlbody):
res = ''
if htmlbody:
txt = html.escape(txt, quote=False)
while True:
index = txt.find("''")
if index == -1:
return res + txt
res += txt[:index]
txt = txt[index:]
if txt.startswith("'''"):
if htmlbody:
if self.bold:
res += '</b>'
else:
res += '<b>'
self.bold = not self.bold
txt = txt[3:]
else:
if htmlbody:
if self.ital:
res += '</i>'
else:
res += '<i>'
self.ital = not self.ital
txt = txt[2:]
def linkify(self, txt):
res_plain = ''
res_html = ''
while True:
index = txt.find("[")
if index == -1:
return (res_plain + self.formatted(txt, False), res_html + self.formatted(txt, True))
res_plain += self.formatted(txt[:index], False)
res_html += self.formatted(txt[:index], True)
txt = txt[index:]
if txt.startswith("[["):
index = txt.find("]]")
if index == -1:
_warn_or_exception(_("Unterminated ]]"))
url = txt[2:index]
if self.linkResolver:
url, urltext = self.linkResolver.resolve_description_link(url)
else:
urltext = url
res_html += '<a href="' + url + '">' + html.escape(urltext, quote=False) + '</a>'
res_plain += urltext
txt = txt[index + 2:]
else:
index = txt.find("]")
if index == -1:
_warn_or_exception(_("Unterminated ]"))
url = txt[1:index]
index2 = url.find(' ')
if index2 == -1:
urltxt = url
else:
urltxt = url[index2 + 1:]
url = url[:index2]
if url == urltxt:
_warn_or_exception(_("URL title is just the URL, use brackets: [URL]"))
res_html += '<a href="' + url + '">' + html.escape(urltxt, quote=False) + '</a>'
res_plain += urltxt
if urltxt != url:
res_plain += ' (' + url + ')'
txt = txt[index + 1:]
def addtext(self, txt):
p, h = self.linkify(txt)
self.html.write(h)
def parseline(self, line):
if not line:
self.endcur()
elif line.startswith('* '):
self.endcur([self.stUL])
if self.state != self.stUL:
self.html.write('<ul>')
self.state = self.stUL
if self.laststate != self.stNONE:
self.text.write('\n\n')
else:
self.text.write('\n')
self.text.write(line)
self.html.write('<li>')
self.addtext(line[1:])
self.html.write('</li>')
elif line.startswith('# '):
self.endcur([self.stOL])
if self.state != self.stOL:
self.html.write('<ol>')
self.state = self.stOL
if self.laststate != self.stNONE:
self.text.write('\n\n')
else:
self.text.write('\n')
self.text.write(line)
self.html.write('<li>')
self.addtext(line[1:])
self.html.write('</li>')
else:
self.para_lines.append(line)
self.endcur([self.stPARA])
if self.state == self.stNONE:
self.state = self.stPARA
if self.laststate != self.stNONE:
self.text.write('\n\n')
self.html.write('<p>')
def end(self):
self.endcur()
self.text_txt = self.text.getvalue()
self.text_html = self.html.getvalue()
self.text.close()
self.html.close()
# Parse multiple lines of description as written in a metadata file, returning
# a single string in wiki format. Used for the Maintainer Notes field as well,
# because it's the same format.
def description_wiki(s):
return s
# Parse multiple lines of description as written in a metadata file, returning
# a single string in HTML format.
def description_html(s, linkres):
ps = DescriptionFormatter(linkres)
for line in s.splitlines():
ps.parseline(line)
ps.end()
return ps.text_html
def parse_yaml_srclib(metadatapath):
thisinfo = {'RepoType': '',
@ -734,7 +541,7 @@ def read_srclibs():
srclibs[srclibname] = parse_yaml_srclib(metadatapath)
def read_metadata(xref=True, check_vcs=[], refresh=True, sort_by_time=False):
def read_metadata(check_vcs=[], refresh=True, sort_by_time=False):
"""Return a list of App instances sorted newest first
This reads all of the metadata files in a 'data' repository, then
@ -780,16 +587,6 @@ def read_metadata(xref=True, check_vcs=[], refresh=True, sort_by_time=False):
check_metadata(app)
apps[app.id] = app
if xref:
# Parse all descriptions at load time, just to ensure cross-referencing
# errors are caught early rather than when they hit the build server.
for appid, app in apps.items():
try:
description_html(app.Description, DummyDescriptionResolver(apps))
except MetaDataException as e:
_warn_or_exception(_("Problem with description of {appid}: {error}")
.format(appid=appid, error=str(e)))
return apps
@ -1179,23 +976,3 @@ def add_metadata_arguments(parser):
'''add common command line flags related to metadata processing'''
parser.add_argument("-W", choices=['error', 'warn', 'ignore'], default='error',
help=_("force metadata errors (default) to be warnings, or to be ignored."))
class DescriptionResolver:
def __init__(self, apps):
self.apps = apps
def resolve_description_link(self, appid):
if appid in self.apps:
if self.apps[appid].Name:
return "fdroid.app:" + appid, self.apps[appid].Name
raise MetaDataException(_('Cannot resolve application ID {appid}')
.format(appid=appid))
class DummyDescriptionResolver(DescriptionResolver):
def resolve_description_link(self, appid):
if appid in self.apps:
return "fdroid.app:" + appid, "Dummy name - don't know yet"
_warn_or_exception(_('Cannot resolve application ID {appid}')
.format(appid=appid))

View File

@ -32,7 +32,7 @@ def main():
metadata.warnings_action = options.W
common.read_config(None)
metadata.read_metadata(xref=True)
metadata.read_metadata()
if __name__ == "__main__":

View File

@ -61,7 +61,7 @@ def main():
config = common.read_config(options)
# Get all apps...
allapps = metadata.read_metadata(xref=True)
allapps = metadata.read_metadata()
apps = common.read_app_args(options.appid, allapps, False)
for appid, app in apps.items():

View File

@ -234,11 +234,11 @@ def update_wiki(apps, apks):
wikidata += " - [https://f-droid.org/repository/browse/?fdid=" + appid + " view in repository]\n\n"
wikidata += "=Description=\n"
wikidata += metadata.description_wiki(app.Description) + "\n"
wikidata += app.Description + "\n"
wikidata += "=Maintainer Notes=\n"
if app.MaintainerNotes:
wikidata += metadata.description_wiki(app.MaintainerNotes) + "\n"
wikidata += app.MaintainerNotes + "\n"
wikidata += "\nMetadata: [https://gitlab.com/fdroid/fdroiddata/blob/master/metadata/{0}.yml current] [https://gitlab.com/fdroid/fdroiddata/commits/master/metadata/{0}.yml history]\n".format(appid)
# Get a list of all packages for this application...
@ -2120,16 +2120,6 @@ def read_names_from_apks(apps, apks):
app.Name = bestapk['name']
def render_app_descriptions(apps, all_apps):
"""
Renders the app html description.
For resolving inter-app links it needs the full list of apps, even if they end up in
separate repos (i.e. archive or per app repos).
"""
for app in apps.values():
app['Description'] = metadata.description_html(app['Description'], metadata.DescriptionResolver(all_apps))
def get_apps_with_packages(apps, apks):
"""Returns a deepcopy of that subset apps that actually has any associated packages. Skips disabled apps."""
appsWithPackages = collections.OrderedDict()
@ -2157,7 +2147,6 @@ def prepare_apps(apps, apks, repodir):
"""
apps_with_packages = get_apps_with_packages(apps, apks)
apply_info_from_latest_apk(apps_with_packages, apks)
render_app_descriptions(apps_with_packages, apps)
insert_funding_yml_donation_links(apps)
# This is only currently done for /repo because doing it for the archive
# will take a lot of time and bloat the archive mirrors and index

View File

@ -84,7 +84,7 @@ savedir = os.path.join('metadata', 'dump_' + repo.git.describe())
if not os.path.isdir(savedir):
os.mkdir(savedir)
apps = fdroidserver.metadata.read_metadata(xref=True)
apps = fdroidserver.metadata.read_metadata()
for appid, app in apps.items():
savepath = os.path.join(savedir, appid + '.yaml')
if hasattr(app, 'attr_to_field'):

View File

@ -133,7 +133,7 @@ class MetadataTest(unittest.TestCase):
fdroidserver.common.config = config
fdroidserver.metadata.warnings_action = None
apps = fdroidserver.metadata.read_metadata(xref=True)
apps = fdroidserver.metadata.read_metadata()
for appid in ('org.smssecure.smssecure', 'org.adaway',
'org.videolan.vlc', 'com.politedroid'):
savepath = os.path.join('metadata', 'dump', appid + '.yaml')
@ -154,7 +154,7 @@ class MetadataTest(unittest.TestCase):
fdroidserver.metadata.warnings_action = None
# rewrite metadata
allapps = fdroidserver.metadata.read_metadata(xref=True)
allapps = fdroidserver.metadata.read_metadata()
for appid, app in allapps.items():
if appid == 'fake.ota.update':
fdroidserver.metadata.write_metadata(os.path.join(testdir, appid + '.yml'), app)
@ -170,7 +170,7 @@ class MetadataTest(unittest.TestCase):
fdroidserver.common.config = {'accepted_formats': ['yml']}
# rewrite metadata
allapps = fdroidserver.metadata.read_metadata(xref=True)
allapps = fdroidserver.metadata.read_metadata()
for appid, app in allapps.items():
if appid == 'org.fdroid.fdroid':
fdroidserver.metadata.write_metadata(os.path.join(testdir, appid + '.yml'), app)
@ -185,7 +185,7 @@ class MetadataTest(unittest.TestCase):
testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir)
# rewrite metadata
allapps = fdroidserver.metadata.read_metadata(xref=True)
allapps = fdroidserver.metadata.read_metadata()
for appid, app in allapps.items():
if appid == 'app.with.special.build.params':
fdroidserver.metadata.write_metadata(os.path.join(testdir, appid + '.yml'), app)
@ -258,7 +258,7 @@ class MetadataTest(unittest.TestCase):
randomlist = [os.path.basename(f)[:-4]] + randomlist
i += 1
os.chdir(testdir)
allapps = fdroidserver.metadata.read_metadata(xref=True, sort_by_time=True)
allapps = fdroidserver.metadata.read_metadata(sort_by_time=True)
allappids = []
for appid, app in allapps.items():
allappids.append(appid)
@ -828,13 +828,6 @@ class MetadataTest(unittest.TestCase):
'Subdir': None,
'Prepare': None}})
def test_read_xref_metadata(self):
os.chdir('xref')
fdroidserver.metadata.warnings_action = 'error'
apps = fdroidserver.metadata.read_metadata(xref=True)
self.assertListEqual(list(apps.keys()),
['aarddict.android', 'org.coolreader', 'org.geometerplus.zlibrary.ui.android'])
if __name__ == "__main__":
os.chdir(os.path.dirname(__file__))

View File

@ -27,7 +27,7 @@
],
"suggestedVersionName": "0.9",
"suggestedVersionCode": "9",
"description": "<p>In order to keep away curious eyes, SMS-bypass filters incoming SMS messages before they reach your inbox. Based on bughunter2.smsfilter.</p><p>Features:</p><ul><li> Discrete fake app \"Battery level\": Long tap on Battery percentage will show SMS.</li><li> Filter incoming SMS specified address: redirect the SMS to SMS-bypass messages list; remove SMS arrival sound or vibration; show a discreet notification icon (battery level); vibrate if checked in settings</li><li> Add contact from contact list</li><li> Export messages to a text file</li></ul>",
"description": "In order to keep away curious eyes, SMS-bypass filters incoming SMS messages\nbefore they reach your inbox. Based on bughunter2.smsfilter.\n\nFeatures:\n\n* Discrete fake app \"Battery level\": Long tap on Battery percentage will show SMS.\n* Filter incoming SMS specified address: redirect the SMS to SMS-bypass messages list; remove SMS arrival sound or vibration; show a discreet notification icon (battery level); vibrate if checked in settings\n* Add contact from contact list\n* Export messages to a text file",
"donate": "http://rodolphe.souchaud.free.fr/donate",
"flattrID": "cad90e036b975ed129a3ce80a0750466",
"issueTracker": "https://gitlab.com/souch/SMSbypass/issues",
@ -73,7 +73,7 @@
],
"suggestedVersionName": "0.2.1",
"suggestedVersionCode": "2000",
"description": "<p>F-Droid can make use of system privileges or permissions to install, update and remove applications on its own. The only way to obtain those privileges is to become a system app.</p><p>This is where the Privileged Extension comes in - being a separate app and much smaller, it can be installed as a system app and communicate with the main app via AIDL IPC.</p><p>This has several advantages:</p><ul><li> Reduced disk usage in the system partition</li><li> System updates don't remove F-Droid</li><li> The process of installing into system via root is safer</li></ul><p>This is packaged as an OTA (Over-The-Air) update ZIP file. It must be installed using TWRP or other Android recovery that can flash updates to the system from the /data/data/org.fdroid.fdroid folder on the /data partition. The standalone APK is called F-Droid Privileged Extension.</p>",
"description": "F-Droid can make use of system privileges or permissions to\ninstall, update and remove applications on its own. The only way to obtain those\nprivileges is to become a system app.\n\nThis is where the Privileged Extension comes in - being a separate app and much\nsmaller, it can be installed as a system app and communicate with the main app\nvia AIDL IPC.\n\nThis has several advantages:\n\n* Reduced disk usage in the system partition\n* System updates don't remove F-Droid\n* The process of installing into system via root is safer\n\nThis is packaged as an OTA (Over-The-Air) update ZIP file. It must be installed\nusing TWRP or other Android recovery that can flash updates to the system from\nthe /data/data/org.fdroid.fdroid folder on the /data partition. The standalone\nAPK is called F-Droid Privileged Extension.",
"donate": "https://f-droid.org/about",
"issueTracker": "https://gitlab.com/fdroid/privileged-extension/issues",
"license": "Apache-2.0",
@ -162,7 +162,7 @@
],
"suggestedVersionName": "1.5",
"suggestedVersionCode": "6",
"description": "<p>Activates silent mode during calendar events.</p>",
"description": "Activates silent mode during calendar events.",
"issueTracker": "https://github.com/miguelvps/PoliteDroid/issues",
"license": "GPL-3.0-only",
"name": "Polite Droid",
@ -183,7 +183,7 @@
"2.0"
],
"suggestedVersionCode": "2147483647",
"description": "<p>It\u2019s Urzip \u662f\u4e00\u4e2a\u83b7\u5f97\u5df2\u5b89\u88c5 APK \u76f8\u5173\u4fe1\u606f\u7684\u5b9e\u7528\u5de5\u5177\u3002\u5b83\u4ece\u60a8\u7684\u8bbe\u5907\u4e0a\u5df2\u5b89\u88c5\u7684\u6240\u6709\u5e94\u7528\u5f00\u59cb\uff0c\u4e00\u952e\u89e6\u6478\u5373\u53ef\u663e\u793a APK \u7684\u6307\u7eb9\uff0c\u5e76\u4e14\u63d0\u4f9b\u5230\u8fbe virustotal.com \u548c androidobservatory.org \u7684\u5feb\u6377\u94fe\u63a5\uff0c\u8ba9\u60a8\u65b9\u4fbf\u5730\u4e86\u89e3\u7279\u5b9a APK \u7684\u6863\u6848\u3002\u5b83\u8fd8\u53ef\u4ee5\u8ba9\u60a8\u5bfc\u51fa\u7b7e\u540d\u8bc1\u4e66\u548c\u751f\u6210 ApkSignaturePin Pin \u6587\u4ef6\u4f9b TrustedIntents \u5e93\u4f7f\u7528\u3002</p><p>\u2605 Urzip \u652f\u6301\u4e0b\u5217\u8bed\u8a00\uff1a Deutsch, English, espa\u00f1ol, suomi, \u65e5\u672c\u8a9e, \ud55c\uad6d\uc5b4, Norsk, portugu\u00eas (Portugal), \u0420\u0443\u0441\u0441\u043a\u0438\u0439, Sloven\u0161\u010dina, T\u00fcrk\u00e7e \u6ca1\u770b\u5230\u60a8\u7684\u8bed\u8a00\uff1f\u5e2e\u5fd9\u7ffb\u8bd1\u672c\u5e94\u7528\u5427\uff1a https://www.transifex.com/projects/p/urzip</p><p>\u2605 \u81f4\u7528\u6237\uff1a\u6211\u4eec\u8fd8\u7f3a\u5c11\u4f60\u559c\u6b22\u7684\u529f\u80fd\uff1f\u53d1\u73b0\u4e86\u4e00\u4e2a bug\uff1f\u8bf7\u544a\u8bc9\u6211\u4eec\uff01\u6211\u4eec\u4e50\u4e8e\u542c\u53d6\u60a8\u7684\u610f\u89c1\u3002\u8bf7\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u81f3: support@guardianproject.info \u6216\u8005\u52a0\u5165\u6211\u4eec\u7684\u804a\u5929\u5ba4 https://guardianproject.info/contact</p>",
"description": "It\u2019s Urzip \u662f\u4e00\u4e2a\u83b7\u5f97\u5df2\u5b89\u88c5 APK \u76f8\u5173\u4fe1\u606f\u7684\u5b9e\u7528\u5de5\u5177\u3002\u5b83\u4ece\u60a8\u7684\u8bbe\u5907\u4e0a\u5df2\u5b89\u88c5\u7684\u6240\u6709\u5e94\u7528\u5f00\u59cb\uff0c\u4e00\u952e\u89e6\u6478\u5373\u53ef\u663e\u793a APK \u7684\u6307\u7eb9\uff0c\u5e76\u4e14\u63d0\u4f9b\u5230\u8fbe virustotal.com \u548c androidobservatory.org \u7684\u5feb\u6377\u94fe\u63a5\uff0c\u8ba9\u60a8\u65b9\u4fbf\u5730\u4e86\u89e3\u7279\u5b9a APK \u7684\u6863\u6848\u3002\u5b83\u8fd8\u53ef\u4ee5\u8ba9\u60a8\u5bfc\u51fa\u7b7e\u540d\u8bc1\u4e66\u548c\u751f\u6210 ApkSignaturePin Pin \u6587\u4ef6\u4f9b TrustedIntents \u5e93\u4f7f\u7528\u3002\n\n\u2605 Urzip \u652f\u6301\u4e0b\u5217\u8bed\u8a00\uff1a Deutsch, English, espa\u00f1ol, suomi, \u65e5\u672c\u8a9e, \ud55c\uad6d\uc5b4, Norsk, portugu\u00eas (Portugal), \u0420\u0443\u0441\u0441\u043a\u0438\u0439, Sloven\u0161\u010dina, T\u00fcrk\u00e7e\n\u6ca1\u770b\u5230\u60a8\u7684\u8bed\u8a00\uff1f\u5e2e\u5fd9\u7ffb\u8bd1\u672c\u5e94\u7528\u5427\uff1a\nhttps://www.transifex.com/projects/p/urzip\n\n\u2605 \u81f4\u7528\u6237\uff1a\u6211\u4eec\u8fd8\u7f3a\u5c11\u4f60\u559c\u6b22\u7684\u529f\u80fd\uff1f\u53d1\u73b0\u4e86\u4e00\u4e2a bug\uff1f\u8bf7\u544a\u8bc9\u6211\u4eec\uff01\u6211\u4eec\u4e50\u4e8e\u542c\u53d6\u60a8\u7684\u610f\u89c1\u3002\u8bf7\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u81f3: support@guardianproject.info \u6216\u8005\u52a0\u5165\u6211\u4eec\u7684\u804a\u5929\u5ba4 https://guardianproject.info/contact\n",
"issueTracker": "https://dev.guardianproject.info/projects/urzip/issues",
"liberapayID": "9999999",
"license": "GPL-3.0-only",

View File

@ -15,7 +15,15 @@
<name>Battery level</name>
<summary>Filter SMS and show them in a fake app</summary>
<icon>souch.smsbypass.9.png</icon>
<desc>&lt;p&gt;In order to keep away curious eyes, SMS-bypass filters incoming SMS messages before they reach your inbox. Based on bughunter2.smsfilter.&lt;/p&gt;&lt;p&gt;Features:&lt;/p&gt;&lt;ul&gt;&lt;li&gt; Discrete fake app &quot;Battery level&quot;: Long tap on Battery percentage will show SMS.&lt;/li&gt;&lt;li&gt; Filter incoming SMS specified address: redirect the SMS to SMS-bypass messages list; remove SMS arrival sound or vibration; show a discreet notification icon (battery level); vibrate if checked in settings&lt;/li&gt;&lt;li&gt; Add contact from contact list&lt;/li&gt;&lt;li&gt; Export messages to a text file&lt;/li&gt;&lt;/ul&gt;</desc>
<desc>In order to keep away curious eyes, SMS-bypass filters incoming SMS messages
before they reach your inbox. Based on bughunter2.smsfilter.
Features:
* Discrete fake app &quot;Battery level&quot;: Long tap on Battery percentage will show SMS.
* Filter incoming SMS specified address: redirect the SMS to SMS-bypass messages list; remove SMS arrival sound or vibration; show a discreet notification icon (battery level); vibrate if checked in settings
* Add contact from contact list
* Export messages to a text file</desc>
<license>GPL-3.0-only</license>
<categories>Phone &amp; SMS</categories>
<category>Phone &amp; SMS</category>
@ -46,7 +54,7 @@
<name>Caffeine Tile</name>
<summary>Test app for extracting icons when an XML one is default</summary>
<icon>info.zwanenburg.caffeinetile.4.xml</icon>
<desc>&lt;p&gt;No description available&lt;/p&gt;</desc>
<desc>No description available</desc>
<license>Unknown</license>
<categories>Development</categories>
<category>Development</category>
@ -75,7 +83,7 @@
<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>
<desc>No description available</desc>
<license>Unknown</license>
<categories>tests</categories>
<category>tests</category>
@ -105,7 +113,24 @@
<lastupdated>2016-03-10</lastupdated>
<name>fake.ota.update_1234</name>
<summary>Tests whether OTA ZIP files are being include</summary>
<desc>&lt;p&gt;F-Droid can make use of system privileges or permissions to install, update and remove applications on its own. The only way to obtain those privileges is to become a system app.&lt;/p&gt;&lt;p&gt;This is where the Privileged Extension comes in - being a separate app and much smaller, it can be installed as a system app and communicate with the main app via AIDL IPC.&lt;/p&gt;&lt;p&gt;This has several advantages:&lt;/p&gt;&lt;ul&gt;&lt;li&gt; Reduced disk usage in the system partition&lt;/li&gt;&lt;li&gt; System updates don't remove F-Droid&lt;/li&gt;&lt;li&gt; The process of installing into system via root is safer&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This is packaged as an OTA (Over-The-Air) update ZIP file. It must be installed using TWRP or other Android recovery that can flash updates to the system from the /data/data/org.fdroid.fdroid folder on the /data partition. The standalone APK is called F-Droid Privileged Extension.&lt;/p&gt;</desc>
<desc>F-Droid can make use of system privileges or permissions to
install, update and remove applications on its own. The only way to obtain those
privileges is to become a system app.
This is where the Privileged Extension comes in - being a separate app and much
smaller, it can be installed as a system app and communicate with the main app
via AIDL IPC.
This has several advantages:
* Reduced disk usage in the system partition
* System updates don't remove F-Droid
* The process of installing into system via root is safer
This is packaged as an OTA (Over-The-Air) update ZIP file. It must be installed
using TWRP or other Android recovery that can flash updates to the system from
the /data/data/org.fdroid.fdroid folder on the /data partition. The standalone
APK is called F-Droid Privileged Extension.</desc>
<license>Apache-2.0</license>
<categories>System</categories>
<category>System</category>
@ -131,7 +156,7 @@
<name>No minSdkVersion or targetSdkVersion</name>
<summary>An APK without any &lt;uses-sdk&gt; block in AndroidManifest.xml</summary>
<icon>no.min.target.sdk.987.png</icon>
<desc>&lt;p&gt;No description available&lt;/p&gt;</desc>
<desc>No description available</desc>
<license>Unknown</license>
<categories>Development</categories>
<category>Development</category>
@ -159,7 +184,7 @@
<name>OBB Main Old Version</name>
<summary></summary>
<icon>obb.main.oldversion.1444412523.png</icon>
<desc>&lt;p&gt;No description available&lt;/p&gt;</desc>
<desc>No description available</desc>
<license>GPL-3.0-only</license>
<categories>Development</categories>
<category>Development</category>
@ -194,7 +219,7 @@
<name>OBB Main Two Versions</name>
<summary></summary>
<icon>obb.main.twoversions.1101617.png</icon>
<desc>&lt;p&gt;No description available&lt;/p&gt;</desc>
<desc>No description available</desc>
<license>GPL-3.0-only</license>
<categories>Development</categories>
<category>Development</category>
@ -252,7 +277,7 @@
<name>OBB Main/Patch Current</name>
<summary></summary>
<icon>obb.mainpatch.current.1619.png</icon>
<desc>&lt;p&gt;No description available&lt;/p&gt;</desc>
<desc>No description available</desc>
<license>GPL-3.0-only</license>
<categories>Development</categories>
<category>Development</category>
@ -285,7 +310,7 @@
<name>Polite Droid</name>
<summary>Calendar tool</summary>
<icon>com.politedroid.6.png</icon>
<desc>&lt;p&gt;Activates silent mode during calendar events.&lt;/p&gt;</desc>
<desc>Activates silent mode during calendar events.</desc>
<license>GPL-3.0-only</license>
<categories>Time</categories>
<category>Time</category>
@ -349,7 +374,14 @@
<name>urzip-πÇÇπÇÇ现代汉语通用字-български-عربي1234</name>
<summary>一个实用工具,获取已安装在您的设备上的应用的有关信息</summary>
<icon>info.guardianproject.urzip.100.png</icon>
<desc>&lt;p&gt;Its Urzip 是一个获得已安装 APK 相关信息的实用工具。它从您的设备上已安装的所有应用开始,一键触摸即可显示 APK 的指纹,并且提供到达 virustotal.com 和 androidobservatory.org 的快捷链接,让您方便地了解特定 APK 的档案。它还可以让您导出签名证书和生成 ApkSignaturePin Pin 文件供 TrustedIntents 库使用。&lt;/p&gt;&lt;p&gt;★ Urzip 支持下列语言: Deutsch, English, español, suomi, 日本語, 한국어, Norsk, português (Portugal), Русский, Slovenščina, Türkçe 没看到您的语言?帮忙翻译本应用吧: https://www.transifex.com/projects/p/urzip&lt;/p&gt;&lt;p&gt;★ 致用户:我们还缺少你喜欢的功能?发现了一个 bug请告诉我们我们乐于听取您的意见。请发送电子邮件至: support@guardianproject.info 或者加入我们的聊天室 https://guardianproject.info/contact&lt;/p&gt;</desc>
<desc>Its Urzip 是一个获得已安装 APK 相关信息的实用工具。它从您的设备上已安装的所有应用开始,一键触摸即可显示 APK 的指纹,并且提供到达 virustotal.com 和 androidobservatory.org 的快捷链接,让您方便地了解特定 APK 的档案。它还可以让您导出签名证书和生成 ApkSignaturePin Pin 文件供 TrustedIntents 库使用。
★ Urzip 支持下列语言: Deutsch, English, español, suomi, 日本語, 한국어, Norsk, português (Portugal), Русский, Slovenščina, Türkçe
没看到您的语言?帮忙翻译本应用吧:
https://www.transifex.com/projects/p/urzip
★ 致用户:我们还缺少你喜欢的功能?发现了一个 bug请告诉我们我们乐于听取您的意见。请发送电子邮件至: support@guardianproject.info 或者加入我们的聊天室 https://guardianproject.info/contact
</desc>
<license>GPL-3.0-only</license>
<categories>Development,GuardianProject,1,2.0</categories>
<category>Development</category>

View File

@ -205,7 +205,7 @@ class UpdateTest(unittest.TestCase):
fdroidserver.update.options = fdroidserver.common.options
os.chdir(tmptestsdir)
apps = fdroidserver.metadata.read_metadata(xref=True)
apps = fdroidserver.metadata.read_metadata()
fdroidserver.update.copy_triple_t_store_metadata(apps)
# TODO ideally, this would compare the whole dict like in metadata.TestCase's test_read_metadata()
@ -236,7 +236,7 @@ class UpdateTest(unittest.TestCase):
fdroidserver.update.config = config
fdroidserver.update.options = fdroidserver.common.options
apps = fdroidserver.metadata.read_metadata(xref=True)
apps = fdroidserver.metadata.read_metadata()
self.assertTrue(packageName in apps)
fdroidserver.update.copy_triple_t_store_metadata(apps)
correctlocales = ['de-DE', 'en-US', 'fr-FR', 'kn-IN']
@ -382,7 +382,7 @@ class UpdateTest(unittest.TestCase):
fdroidserver.update.options.rename_apks = False
fdroidserver.update.options.allow_disabled_algorithms = False
apps = fdroidserver.metadata.read_metadata(xref=True)
apps = fdroidserver.metadata.read_metadata()
knownapks = fdroidserver.common.KnownApks()
apks, cachechanged = fdroidserver.update.process_apks({}, 'repo', knownapks, False)
self.assertEqual(len(apks), 17)
@ -439,7 +439,7 @@ class UpdateTest(unittest.TestCase):
fdroidserver.update.options.rename_apks = False
fdroidserver.update.options.allow_disabled_algorithms = False
fdroidserver.metadata.read_metadata(xref=True)
fdroidserver.metadata.read_metadata()
knownapks = fdroidserver.common.KnownApks()
apkcache = fdroidserver.update.get_cache()
self.assertEqual(2, len(apkcache))
@ -817,7 +817,7 @@ class UpdateTest(unittest.TestCase):
fdroidserver.update.options.rename_apks = False
fdroidserver.update.options.allow_disabled_algorithms = False
apps = fdroidserver.metadata.read_metadata(xref=True)
apps = fdroidserver.metadata.read_metadata()
knownapks = fdroidserver.common.KnownApks()
apks, cachechanged = fdroidserver.update.process_apks({}, 'repo', knownapks, False)
fdroidserver.update.translate_per_build_anti_features(apps, apks)
@ -860,16 +860,16 @@ class UpdateTest(unittest.TestCase):
testfile = 'metadata/info.guardianproject.urzip.yml'
# create empty 0 byte .yml file, run read_metadata, it should work
open(testfile, 'a').close()
apps = fdroidserver.metadata.read_metadata(xref=True)
apps = fdroidserver.metadata.read_metadata()
self.assertEqual(1, len(apps))
os.remove(testfile)
# test using internal template
apps = fdroidserver.metadata.read_metadata(xref=True)
apps = fdroidserver.metadata.read_metadata()
self.assertEqual(0, len(apps))
fdroidserver.update.create_metadata_from_template(apk)
self.assertTrue(os.path.exists(testfile))
apps = fdroidserver.metadata.read_metadata(xref=True)
apps = fdroidserver.metadata.read_metadata()
self.assertEqual(1, len(apps))
for app in apps.values():
self.assertEqual('urzip', app['Name'])
@ -882,7 +882,7 @@ class UpdateTest(unittest.TestCase):
shutil.copy(os.path.join(localmodule, 'examples', 'template.yml'), tmptestsdir)
fdroidserver.update.create_metadata_from_template(apk)
self.assertTrue(os.path.exists(testfile))
apps = fdroidserver.metadata.read_metadata(xref=True)
apps = fdroidserver.metadata.read_metadata()
self.assertEqual(1, len(apps))
for app in apps.values():
self.assertEqual('urzip', app['Name'])

View File

@ -1,104 +0,0 @@
Categories:
- Reading
License: GPL-3.0-only
WebSite: http://aarddict.org
SourceCode: https://github.com/aarddict/android
IssueTracker: https://github.com/aarddict/android/issues
Donate: http://aarddict.org/android
FlattrID: '80944'
AutoName: Aard
Description: |-
'''Note:''' This app is no longer maintained.
* looks up words fast even with huge dictionaries like English Wikipedia
* looks up words in multiple dictionaries in multiple languages without switching
* works great as an offline Wikipedia reader
* uses same the efficient, highly compressed dictionary data storage format as the desktop version
* it can integrate with both [[org.geometerplus.zlibrary.ui.android]] and [[org.coolreader]]
Ready-made dictionaries can be found on the website, or you can roll your own
with the tools on the website.
RepoType: git
Repo: https://github.com/aarddict/android.git
Builds:
- versionName: 1.3.1
versionCode: 10
commit: 1.3.1
prebuild: mv lib libs
- versionName: 1.4.0
versionCode: 12
commit: 7df930161256324e31b2c720281629f58446b6d6
prebuild: mv lib libs
- versionName: 1.4.1
versionCode: 13
commit: b81c9c8c52de5f65b550e3c608a610962582e5cd
prebuild: mv lib libs
- versionName: 1.6.1
versionCode: 16
commit: 1.6.1
target: android-17
- versionName: 1.6.2
versionCode: 17
commit: 1.6.2
target: android-17
- versionName: 1.6.3
versionCode: 18
commit: 1.6.3
target: android-17
- versionName: 1.6.4
versionCode: 19
commit: 1.6.4
target: android-17
- versionName: 1.6.5
versionCode: 20
commit: 1.6.5
target: android-17
- versionName: 1.6.6
versionCode: 21
commit: 1.6.6
target: android-17
- versionName: 1.6.7
versionCode: 22
commit: 1.6.7
target: android-17
- versionName: 1.6.8
versionCode: 23
commit: 1.6.8
target: android-17
- versionName: 1.6.9
versionCode: 24
commit: 1.6.9
target: android-17
- versionName: 1.6.10
versionCode: 25
commit: 1.6.10
target: android-17
- versionName: 1.6.11
versionCode: 26
commit: 1.6.11
target: android-17
MaintainerNotes: |-
Github site points to https://github.com/itkach/aard2-android (itkach.aard2) as successor.
We cannot point to this app as all its builds are disabled (as of 2018-10-16).
AutoUpdateMode: Version %v
UpdateCheckMode: Tags
CurrentVersion: 1.6.11
CurrentVersionCode: 26

View File

@ -1,551 +0,0 @@
Categories:
- Reading
License: GPL-2.0-only
AuthorName: Vadim Lopatin
AuthorEmail: coolreader.org@gmail.com
WebSite: https://sourceforge.net/projects/crengine/
SourceCode: https://github.com/buggins/coolreader
IssueTracker: https://github.com/buggins/coolreader/issues
Donate: https://sourceforge.net/p/crengine/donate
AutoName: Cool Reader
Description: |-
An e-book reader. Supported formats: FB2, TXT, RTF, TCR, HTML, EPUB, CHM. Browse
free books online and add your own OPDS shares.
The default dictionary app is non-free. However, you can choose
[[aarddict.android]] as a dictionary from the Dictionary section of the
Settings.
RepoType: git
Repo: https://github.com/buggins/coolreader
Builds:
- versionName: 3.0.39-35
versionCode: 60
commit: 68ad007ac1272ef322fd61cb6591618723422380
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.40-1
versionCode: 64
commit: cr3.0.40-1
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.40-6
versionCode: 69
commit: cr3.0.40-6
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.41-3
versionCode: 75
commit: cr3.0.41-3
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.41-9
versionCode: 81
commit: cr3.0.41-9
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.42-6
versionCode: 86
commit: cr3.0.42-6
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.43-4
versionCode: 94
commit: cr3.0.43-4
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.43-6
versionCode: 96
commit: cr3.0.43-6
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.44-03
versionCode: 103
commit: cr3.0.44-3
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.44-09
versionCode: 109
commit: cr3.0.44-9
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.45-04
versionCode: 114
disable: tag points to wrong version
commit: unknown - see disabled
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.45-09
versionCode: 119
disable: tag points to wrong version
commit: unknown - see disabled
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.45-11
versionCode: 121
commit: 6c42a9b65090da9640ccb6ee317bb32de24201fb
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.45-14
versionCode: 124
commit: cr3.0.45-14
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.46-1
versionCode: 131
commit: cr3.0.46-1
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.46-5
versionCode: 135
commit: cr3.0.46-5
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.46-11
versionCode: 141
commit: cr3.0.46-11
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.48-5
versionCode: 155
commit: cr3.0.48-5
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.49-2
versionCode: 162
commit: cr3.0.49-2
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.49-5
versionCode: 165
commit: cr3.0.49-5
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.49-9
versionCode: 169
commit: cr3.0.49-9
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.49-16
versionCode: 176
commit: cr3.0.49-16
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.51-7
versionCode: 197
commit: cr3.0.51-7
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.52-1
versionCode: 241
commit: cr3.0.52-1
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.52-4
versionCode: 244
commit: cr3.0.52-4
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.53-3
versionCode: 247
commit: cr3.0.53-3
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.53-10
versionCode: 255
commit: cr3.0.53-10
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.53-14
versionCode: 259
commit: cr3.0.53-14
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.53-18
versionCode: 263
commit: c555ecd66d18b218fb255733c8b33a0825992f76
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.53-19
versionCode: 264
commit: cr3.0.53-19
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.54-5
versionCode: 275
commit: cr3.0.54-5
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.54-9
versionCode: 279
commit: cr3.0.54-9
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.54-33
versionCode: 303
commit: cr3.0.54-33
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.54-38
versionCode: 308
commit: cr3.0.54-38
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.54-47
versionCode: 447
commit: cr3.0.54-47
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.55-5
versionCode: 505
commit: cr3.0.55-5
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.55-9
versionCode: 509
commit: cr3.0.55-9
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.55-14
versionCode: 514
commit: cr3.0.55-14
subdir: android
rm:
- android/build.properties
buildjni:
- yes
- versionName: 3.0.55-30
versionCode: 530
commit: cr3.0.55-30
subdir: android
rm:
- android/ant.properties
buildjni:
- yes
- versionName: 3.0.55-32
versionCode: 532
commit: cr3.0.55-32
subdir: android
rm:
- android/ant.properties
buildjni:
- yes
- versionName: 3.0.56-5
versionCode: 565
disable: builds ok but crashes at cr3.0.56-5
commit: cr3.0.56-5
subdir: android
rm:
- android/ant.properties
target: android-14
buildjni:
- yes
- versionName: 3.0.57-15
versionCode: 625
disable: builds ok but crashes at cr3.0.57-15
commit: cr3.0.57-15
subdir: android
rm:
- android/ant.properties
target: android-14
buildjni:
- yes
- versionName: 3.0.57-16
versionCode: 626
disable: builds ok but crashes at 2f3d5fb86df316d
commit: 2f3d5fb86df316d
subdir: android
rm:
- android/ant.properties
target: android-14
buildjni:
- yes
- versionName: 3.1.2-27
versionCode: 847
commit: cr3-3.1.2-27
subdir: android
rm:
- android/ant.properties
target: android-16
buildjni:
- yes
- versionName: 3.1.2-38
versionCode: 858
disable: ndk build errors
commit: cr3-3.1.2-38
subdir: android
buildjni:
- yes
- versionName: 3.1.2-39
versionCode: 859
commit: cr3-3.1.2-39-market
subdir: android
rm:
- android/build.properties
target: android-19
buildjni:
- yes
- versionName: 3.1.2-48
versionCode: 868
commit: cr3.1.2-48
subdir: android
rm:
- android/build.properties
target: android-19
buildjni:
- yes
- versionName: 3.1.2-50
versionCode: 870
commit: cr3.1.2-50
subdir: android
rm:
- android/build.properties
target: android-19
buildjni:
- yes
- versionName: 3.1.2-51
versionCode: 871
commit: cr3-3.1.2-51
subdir: android
rm:
- android/build.properties
target: android-19
buildjni:
- yes
- versionName: 3.1.2-55
versionCode: 875
commit: cr3-3.1.2-55
subdir: android
rm:
- android/build.properties
target: android-19
buildjni:
- yes
- versionName: 3.1.2-68
versionCode: 888
commit: cr3.1.2-68
subdir: android
rm:
- android/build.properties
target: android-22
buildjni:
- yes
- versionName: 3.1.2-72
versionCode: 892
commit: cr3.1.2-71
subdir: android
rm:
- android/build.properties
prebuild: sed -i -e 's/^APP_ABI\s*:=.*/APP_ABI := all/' jni/Application.mk
target: android-22
buildjni:
- yes
- versionName: 3.1.2-87
versionCode: 907
commit: 1e07d15d4644c690
subdir: android
rm:
- android/build.properties
prebuild: sed -i -e 's/^APP_ABI\s*:=.*/APP_ABI := all/' jni/Application.mk
target: android-22
scanignore:
- cr3wx
buildjni:
- yes
- versionName: 3.2.9-1
versionCode: 2091
commit: bf48e5b7a5e89e5fc8b1f971573b5046e6b27bd3
subdir: android
gradle:
- yes
output: app/build/outputs/apk/release/app-universal-release-unsigned.apk
rm:
- android/build.properties
prebuild: sed -i -e 's/^APP_ABI\s*:=.*/APP_ABI := all/' jni/Application.mk
scanignore:
- cr3wx
ndk: r16b
- versionName: 3.2.38-1
versionCode: 32380
commit: cr3.2.38
subdir: android/app
gradle:
- yes
rm:
- cr3wx/src/resources/crrcconv.exe
prebuild:
- sed -i -e 's/\r//' ../gradle/wrapper/gradle-wrapper.properties
- sed -i -e 's/enable true/enable false/' build.gradle
ndk: r21
AutoUpdateMode: None
UpdateCheckMode: Tags
CurrentVersion: 3.2.39-1
CurrentVersionCode: 32390

View File

@ -1,556 +0,0 @@
AntiFeatures:
- NonFreeAdd
- UpstreamNonFree
Categories:
- Reading
License: GPL-2.0-or-later
AuthorName: Nikolay Pultsin
AuthorEmail: geometer@fbreader.org
AuthorWebSite: https://fbreader.org/
WebSite: https://fbreader.org/FBReaderJ
SourceCode: https://github.com/geometer/FBReaderJ
IssueTracker: https://github.com/geometer/FBReaderJ/issues
Changelog: https://raw.githubusercontent.com/geometer/FBReaderJ/HEAD/ChangeLog
Donate: https://fbreader.org/donation/make.php
AutoName: FBReader
Description: |-
'''N.B'''There are three different apks to cover the different versions of
Android. Donut covers 1.5-1.6; Froyo covers 2.0-2.3 and Honeycomb covers 3.0+.
x86 and MIPS are supported natively in all apks.
An e-book reader. Features include the ability to stock up on books from online
OPDS libraries like Project Gutenberg straight from the app. F-Droid.org has two
other addon apps that provide text-to-speech functionality and one to support
''local'' OPDS shares.
Anti-features: Addons. While there are some addons for this app that are free,
the dictionaries that are suggested are not. However, it does support
[[aarddict.android]], as long as that is installed beforehand '''and''' you
choose it via the Dictionary section of the settings.
RepoType: git
Repo: https://github.com/geometer/FBReaderJ.git
Builds:
- versionName: 0.99.11
versionCode: 9911
commit: 0.99.11
antcommands:
- package
- versionName: 0.99.12
versionCode: 9912
commit: 0.99.12
antcommands:
- package
- versionName: 0.99.15
versionCode: 9915
commit: 0.99.15
antcommands:
- package
- versionName: 0.99.18
versionCode: 9918
commit: 0.99.18
antcommands:
- package
- versionName: 1.0.9
versionCode: 10011
commit: 1.0.9
antcommands:
- package
- versionName: 1.0.11
versionCode: 10013
commit: 1.0.11
antcommands:
- package
- versionName: 1.0.12
versionCode: 10014
commit: fd349108eff9caa9152a
antcommands:
- package
- versionName: 1.1.0
versionCode: 10100
commit: 5eb993e1fac2898d2361
antcommands:
- package
- versionName: 1.1.1
versionCode: 10101
commit: 1.1.1
antcommands:
- package
- versionName: 1.1.2
versionCode: 10102
commit: 1.1.2
antcommands:
- package
- versionName: 1.1.8
versionCode: 101081
commit: 1.1.8
antcommands:
- package
- versionName: 1.1.9
versionCode: 101091
commit: 1.1.9
antcommands:
- package
- versionName: 1.1.10
versionCode: 101101
commit: 13ee5d79431815dd694e
antcommands:
- package
- versionName: 1.2.2
versionCode: 102021
commit: e63c553aeb032da828b270a735f0171d8d22c54c
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
target: android-10
buildjni:
- yes
- versionName: 1.2.3
versionCode: 102031
commit: 46d83bb4351c2f6ec51e0d9aa6202c86c1297e7f
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
target: android-10
buildjni:
- yes
- versionName: 1.2.4
versionCode: 102041
commit: 6426bcf131d4
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
target: android-10
buildjni:
- yes
- versionName: 1.2.6
versionCode: 102061
commit: 1.2.6
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
target: android-10
buildjni:
- yes
- versionName: 1.3.3
versionCode: 103031
commit: 1.3.3
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
target: android-10
buildjni:
- yes
- versionName: 1.3.6
versionCode: 103061
commit: a16e3eb7ff731edea99248f8a7c1633148a26236
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
target: android-10
buildjni:
- yes
- versionName: 1.5.5
versionCode: 105051
commit: 1.5.5
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
target: android-10
buildjni:
- yes
- versionName: 1.6.1
versionCode: 106011
commit: 1.6.1
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
buildjni:
- yes
- versionName: 1.6.4-Donut
versionCode: 106040
commit: af881fe37
forceversion: true
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
buildjni:
- yes
- versionName: 1.6.4-Froyo
versionCode: 106041
commit: 696ed7704
forceversion: true
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
buildjni:
- yes
- versionName: 1.6.4
versionCode: 106042
commit: b3b4667ccb
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
buildjni:
- yes
- versionName: 1.7.2-Donut
versionCode: 107019
commit: a4a5e506b
forceversion: true
forcevercode: true
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
buildjni:
- yes
- versionName: 1.7.2-Froyo
versionCode: 107020
commit: 33ffc7e5b
forceversion: true
forcevercode: true
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
buildjni:
- yes
- versionName: 1.7.2-Honeycomb
versionCode: 107021
commit: 0520159677
forceversion: true
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
buildjni:
- yes
- versionName: 1.7.3-Donut
versionCode: 107040
commit: 2c6253dd
forceversion: true
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
buildjni:
- yes
- versionName: 1.7.3-Froyo
versionCode: 107041
commit: 934bf7f5
forceversion: true
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
buildjni:
- yes
- versionName: 1.7.3-Honeycomb
versionCode: 107042
commit: c4a3c7a9a
forceversion: true
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
buildjni:
- yes
- versionName: 1.7.8-Donut
versionCode: 107080
commit: c1470c9be1
forceversion: true
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
buildjni:
- yes
- versionName: 1.7.8-Froyo
versionCode: 107084
commit: 1.7.8
forceversion: true
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
buildjni:
- yes
- versionName: 1.7.8-Honeycomb
versionCode: 107085
commit: 1.7.8-ics
forceversion: true
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
buildjni:
- yes
- versionName: 1.8.2-Donut
versionCode: 108020
commit: 9bec0ff445e66a
forceversion: true
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
androidupdate:
- third-party/AmbilWarna
- .
buildjni:
- yes
- versionName: 1.8.2-Froyo
versionCode: 108021
commit: 0f02d4e9232227
forceversion: true
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
androidupdate:
- third-party/AmbilWarna
- .
buildjni:
- yes
- versionName: 1.8.2-Honeycomb+
versionCode: 108022
commit: 1112df415d
forceversion: true
prebuild:
- mkdir res/drawable
- find icons -iname "*.*" -exec cp {} res/drawable \;
androidupdate:
- third-party/AmbilWarna
- .
buildjni:
- yes
- versionName: 2.0.6-gb
versionCode: 2000610
disable: missing res with android-9
commit: 2.0.6
patch:
- fbreader-2.0.6.patch
srclibs:
- PDFParseLib@36d7479ce85638eb4f0ff9c875ec77680177da5d
- ApacheHttpClient@4.2.5
- NanoHttpd@Release-2.0.5
- JsonSimple@tag_release_1_1_1
forceversion: true
rm:
- libs/*jar
- obsolete/lib/*.jar
prebuild:
- echo -e "sdk.dir=$$SDK$$\nndk.dir=$$NDK$$\n" >> local.properties
- cp local.properties third-party/AmbilWarna/
- cp local.properties third-party/android-filechooser/code/
- cp local.properties third-party/drag-sort-listview/library/
- pushd $$ApacheHttpClient$$/httpmime/
- $$MVN3$$ package
- popd
- cp $$ApacheHttpClient$$/httpmime/target/httpmime-4.2.5.jar libs/
- pushd $$NanoHttpd$$
- $$MVN3$$ package
- popd
- cp $$NanoHttpd$$/core/target/nanohttpd-2.0.5.jar libs/
- cp -fR $$JsonSimple$$/src/main/java/org src/
- cp -fR $$PDFParseLib$$/pdfparse-lib/src/main/java/org src/
- rm -fR src/com/paragon
androidupdate:
- third-party/AmbilWarna
- third-party/android-filechooser/code
- third-party/drag-sort-listview/library
- .
target: android-14
buildjni:
- yes
- versionName: 2.0.6-ics
versionCode: 2000620
commit: b1dd70ff149560889e7548762046da4933e51e94
patch:
- fbreader-2.0.6.patch
srclibs:
- FBReaderJ@2.0.6
- PDFParseLib@36d7479ce85638eb4f0ff9c875ec77680177da5d
- ApacheHttpClient@4.2.5
- NanoHttpd@Release-2.0.5
- JsonSimple@tag_release_1_1_1
forceversion: true
rm:
- libs/*jar
- obsolete/lib/*.jar
prebuild:
- echo -e "sdk.dir=$$SDK$$\nndk.dir=$$NDK$$\n" >> local.properties
- cp local.properties third-party/AmbilWarna/
- cp local.properties third-party/android-filechooser/code/
- cp local.properties third-party/drag-sort-listview/library/
- pushd $$ApacheHttpClient$$/httpmime/
- $$MVN3$$ package
- popd
- cp $$ApacheHttpClient$$/httpmime/target/httpmime-4.2.5.jar libs/
- pushd $$NanoHttpd$$
- $$MVN3$$ package
- popd
- cp $$NanoHttpd$$/core/target/nanohttpd-2.0.5.jar libs/
- cp -fR $$JsonSimple$$/src/main/java/org src/
- cp -fR $$PDFParseLib$$/pdfparse-lib/src/main/java/org src/
- rm -fR src/com/paragon
- sed -i -e '/com.google.android.gms.version/d' -e '/google_play_services/d' AndroidManifest.xml
- sed -i -e '/google.services.lib.dir/d' project.properties
- rm -fR src/org/geometerplus/android/fbreader/network/auth
- cp -fR $$FBReaderJ$$/src/org/geometerplus/android/fbreader/network/auth src/org/geometerplus/android/fbreader/network/
androidupdate:
- third-party/AmbilWarna
- third-party/android-filechooser/code
- third-party/drag-sort-listview/library
- .
target: android-14
buildjni:
- yes
- versionName: 2.1-ics
versionCode: 2010020
commit: 33139e2b04ae36388956a57373ba74e8cc0ef23c
patch:
- fbreader-2.0.6.patch
srclibs:
- FBReaderJ@2.1
- PDFParseLib@36d7479ce85638eb4f0ff9c875ec77680177da5d
- ApacheHttpClient@4.2.5
- NanoHttpd@Release-2.0.5
- JsonSimple@tag_release_1_1_1
forceversion: true
rm:
- libs/*jar
- obsolete/lib/*.jar
prebuild:
- echo -e "sdk.dir=$$SDK$$\nndk.dir=$$NDK$$\n" >> local.properties
- cp local.properties third-party/AmbilWarna/
- cp local.properties third-party/android-filechooser/code/
- cp local.properties third-party/drag-sort-listview/library/
- pushd $$ApacheHttpClient$$/httpmime/
- $$MVN3$$ package
- popd
- cp $$ApacheHttpClient$$/httpmime/target/httpmime-4.2.5.jar libs/
- pushd $$NanoHttpd$$
- $$MVN3$$ package
- popd
- cp $$NanoHttpd$$/core/target/nanohttpd-2.0.5.jar libs/
- cp -fR $$JsonSimple$$/src/main/java/org src/
- cp -fR $$PDFParseLib$$/pdfparse-lib/src/main/java/org src/
- rm -fR src/com/paragon
- sed -i -e '/com.google.android.gms.version/d' -e '/google_play_services/d' AndroidManifest.xml
- sed -i -e '/google.services.lib.dir/d' project.properties
- rm -fR src/org/geometerplus/android/fbreader/network/auth
- cp -fR $$FBReaderJ$$/src/org/geometerplus/android/fbreader/network/auth src/org/geometerplus/android/fbreader/network/
androidupdate:
- third-party/AmbilWarna
- third-party/android-filechooser/code
- third-party/drag-sort-listview/library
- .
target: android-14
buildjni:
- yes
- versionName: 2.5.9-ics
versionCode: 2050920
commit: 43e14feedf10ad53ec68bf42b1644f488889381c
srclibs:
- FBReaderJ@2.5.9
- PDFParseLib@36d7479ce85638eb4f0ff9c875ec77680177da5d
- ApacheHttpClient@4.2.5
- NanoHttpd@Release-2.0.5
- JsonSimple@tag_release_1_1_1
forceversion: true
rm:
- libs/*jar
- obsolete/lib/*.jar
- src/org/geometerplus/android/fbreader/dict/OpenDictionary.java
- src/org/geometerplus/android/fbreader/dict/Lingvo.java
extlibs:
- android/android-support-v4.jar
prebuild:
- echo -e "sdk.dir=$$SDK$$\nndk.dir=$$NDK$$\n" >> local.properties
- cp local.properties third-party/AmbilWarna/
- cp local.properties third-party/android-filechooser/code/
- cp local.properties third-party/drag-sort-listview/library/
- echo 'APP_PLATFORM := android-11' >> jni/Application.mk
- pushd $$ApacheHttpClient$$/httpmime/
- $$MVN3$$ package -Dmaven.javadoc.skip=true
- popd
- cp $$ApacheHttpClient$$/httpmime/target/httpmime-4.2.5.jar libs/
- pushd $$NanoHttpd$$
- $$MVN3$$ package
- popd
- cp $$NanoHttpd$$/core/target/nanohttpd-2.0.5.jar libs/
- cp -fR $$JsonSimple$$/src/main/java/org src/
- cp -fR $$PDFParseLib$$/pdfparse-lib/src/main/java/org src/
- rm -fR src/com/paragon
- sed -i -e '/com.google.android.gms.version/d' -e '/google_play_services/d' AndroidManifest.xml
- sed -i -e '/google.services.lib.dir/d' project.properties
- mkdir third-party/drag-sort-listview/library/libs
- cp libs/android-support-v4.jar third-party/drag-sort-listview/library/libs/&&
sed -i -e '/Lingvo/d' src/org/geometerplus/android/fbreader/dict/DictionaryUtil.java
- rm -fR src/org/geometerplus/android/fbreader/network/auth
- cp -fR $$FBReaderJ$$/src/org/geometerplus/android/fbreader/network/auth src/org/geometerplus/android/fbreader/network/
- sed -i -e '/^\s*OpenDictionary.collect/d' src/org/geometerplus/android/fbreader/dict/DictionaryUtil.java
androidupdate:
- third-party/AmbilWarna
- third-party/android-filechooser/code
- third-party/drag-sort-listview/library
- .
target: android-21
buildjni:
- yes
MaintainerNotes: |-
* LingvoIntegration and OpenDictionary APIs are non-free. Remove jars and patch
depending code. Currently done with rm and sed in prebuilds.
* %v tags are currently targeting gingerbread, but have ressource conflicts
with target=android-9; they build with target=android-14
* %v-ics tags are actually based on the yotaphone branch, so we have to
use raw commits for the ice-cream-sandwich branch (look for "Merge
branch 'master' into ice-cream-sandwich" after a commit with "version
=> ...")
* ics branch uses google play, so we have to sed AM.xml and ant files.
/fbreader/network/ depends on Google Play Services, so these are
removed and replaced with the master branch which does not depend on
these.
* UCM is set to master branch, we don't care for target or device specific
releases.
TODO:
* make gingerbread/master available for android-9!
ArchivePolicy: 6 versions
AutoUpdateMode: None
UpdateCheckMode: Tags ^[0-9.]*$
VercodeOperation: '%c + 10'
CurrentVersion: 2.5.9
CurrentVersionCode: 2050920