From 828d6015efc0f18fe4f7de1139ff3065169ead93 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 17 Nov 2020 14:17:08 +0100 Subject: [PATCH] purge code that modifies the app description, including linkifying closes #845 --- fdroidserver/index.py | 2 +- fdroidserver/lint.py | 2 +- fdroidserver/metadata.py | 225 +------ fdroidserver/readmeta.py | 2 +- fdroidserver/rewritemeta.py | 2 +- fdroidserver/update.py | 15 +- tests/dump_internal_metadata_format.py | 2 +- tests/metadata.TestCase | 17 +- tests/repo/index-v1.json | 8 +- tests/repo/index.xml | 52 +- tests/update.TestCase | 18 +- tests/xref/metadata/aarddict.android.yml | 104 ---- tests/xref/metadata/org.coolreader.yml | 551 ----------------- .../org.geometerplus.zlibrary.ui.android.yml | 556 ------------------ 14 files changed, 68 insertions(+), 1488 deletions(-) delete mode 100644 tests/xref/metadata/aarddict.android.yml delete mode 100644 tests/xref/metadata/org.coolreader.yml delete mode 100644 tests/xref/metadata/org.geometerplus.zlibrary.ui.android.yml diff --git a/fdroidserver/index.py b/fdroidserver/index.py index 078b64fb..e707824d 100644 --- a/fdroidserver/index.py +++ b/fdroidserver/index.py @@ -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, - '

No description available

') + 'No description available') addElement('license', app.License, doc, apel) if app.Categories: diff --git a/fdroidserver/lint.py b/fdroidserver/lint.py index dd48e05f..7ee37865 100644 --- a/fdroidserver/lint.py +++ b/fdroidserver/lint.py @@ -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() diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index 79195289..2b6c8482 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -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('

') - del self.para_lines[:] - - def endul(self): - self.html.write('') - self.laststate = self.state - self.state = self.stNONE - - def endol(self): - self.html.write('') - 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 += '' - else: - res += '' - self.bold = not self.bold - txt = txt[3:] - else: - if htmlbody: - if self.ital: - res += '' - else: - res += '' - 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 += '' + html.escape(urltext, quote=False) + '' - 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 += '' + html.escape(urltxt, quote=False) + '' - 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('
    ') - 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('
  • ') - self.addtext(line[1:]) - self.html.write('
  • ') - elif line.startswith('# '): - self.endcur([self.stOL]) - if self.state != self.stOL: - self.html.write('
      ') - 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('
    1. ') - self.addtext(line[1:]) - self.html.write('
    2. ') - 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('

      ') - - 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)) diff --git a/fdroidserver/readmeta.py b/fdroidserver/readmeta.py index f9688658..b45e9559 100644 --- a/fdroidserver/readmeta.py +++ b/fdroidserver/readmeta.py @@ -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__": diff --git a/fdroidserver/rewritemeta.py b/fdroidserver/rewritemeta.py index 5a6a10a3..16c18af1 100644 --- a/fdroidserver/rewritemeta.py +++ b/fdroidserver/rewritemeta.py @@ -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(): diff --git a/fdroidserver/update.py b/fdroidserver/update.py index bcd8865b..fd5dc924 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -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 diff --git a/tests/dump_internal_metadata_format.py b/tests/dump_internal_metadata_format.py index 50a4cd20..e4679449 100755 --- a/tests/dump_internal_metadata_format.py +++ b/tests/dump_internal_metadata_format.py @@ -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'): diff --git a/tests/metadata.TestCase b/tests/metadata.TestCase index c48bdba2..f2c85331 100755 --- a/tests/metadata.TestCase +++ b/tests/metadata.TestCase @@ -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__)) diff --git a/tests/repo/index-v1.json b/tests/repo/index-v1.json index eef8b389..70939868 100644 --- a/tests/repo/index-v1.json +++ b/tests/repo/index-v1.json @@ -27,7 +27,7 @@ ], "suggestedVersionName": "0.9", "suggestedVersionCode": "9", - "description": "

      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 \"Battery level\": 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
      ", + "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": "

      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.

      ", + "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": "

      Activates silent mode during calendar events.

      ", + "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": "

      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

      \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

      \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

      ", + "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", diff --git a/tests/repo/index.xml b/tests/repo/index.xml index 20b526dc..bb9ad9a3 100644 --- a/tests/repo/index.xml +++ b/tests/repo/index.xml @@ -15,7 +15,15 @@ Battery level Filter SMS and show them in a fake app souch.smsbypass.9.png - <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> + 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 "Battery level": 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 GPL-3.0-only Phone & SMS Phone & SMS @@ -46,7 +54,7 @@ Caffeine Tile Test app for extracting icons when an XML one is default info.zwanenburg.caffeinetile.4.xml - <p>No description available</p> + No description available Unknown Development Development @@ -75,7 +83,7 @@ Duplicate Permisssions Test app for all possible <uses-permissions> duplicate.permisssions.9999999.png - <p>No description available</p> + No description available Unknown tests tests @@ -105,7 +113,24 @@ 2016-03-10 fake.ota.update_1234 Tests whether OTA ZIP files are being include - <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> + 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. Apache-2.0 System System @@ -131,7 +156,7 @@ No minSdkVersion or targetSdkVersion An APK without any <uses-sdk> block in AndroidManifest.xml no.min.target.sdk.987.png - <p>No description available</p> + No description available Unknown Development Development @@ -159,7 +184,7 @@ OBB Main Old Version obb.main.oldversion.1444412523.png - <p>No description available</p> + No description available GPL-3.0-only Development Development @@ -194,7 +219,7 @@ OBB Main Two Versions obb.main.twoversions.1101617.png - <p>No description available</p> + No description available GPL-3.0-only Development Development @@ -252,7 +277,7 @@ OBB Main/Patch Current obb.mainpatch.current.1619.png - <p>No description available</p> + No description available GPL-3.0-only Development Development @@ -285,7 +310,7 @@ Polite Droid Calendar tool com.politedroid.6.png - <p>Activates silent mode during calendar events.</p> + Activates silent mode during calendar events. GPL-3.0-only Time Time @@ -349,7 +374,14 @@ urzip-πÇÇπÇÇ现代汉语通用字-български-عربي1234 一个实用工具,获取已安装在您的设备上的应用的有关信息 info.guardianproject.urzip.100.png - <p>It’s Urzip 是一个获得已安装 APK 相关信息的实用工具。它从您的设备上已安装的所有应用开始,一键触摸即可显示 APK 的指纹,并且提供到达 virustotal.com 和 androidobservatory.org 的快捷链接,让您方便地了解特定 APK 的档案。它还可以让您导出签名证书和生成 ApkSignaturePin Pin 文件供 TrustedIntents 库使用。</p><p>★ Urzip 支持下列语言: Deutsch, English, español, suomi, 日本語, 한국어, Norsk, português (Portugal), Русский, Slovenščina, Türkçe 没看到您的语言?帮忙翻译本应用吧: https://www.transifex.com/projects/p/urzip</p><p>★ 致用户:我们还缺少你喜欢的功能?发现了一个 bug?请告诉我们!我们乐于听取您的意见。请发送电子邮件至: support@guardianproject.info 或者加入我们的聊天室 https://guardianproject.info/contact</p> + It’s 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 + GPL-3.0-only Development,GuardianProject,1,2.0 Development diff --git a/tests/update.TestCase b/tests/update.TestCase index dd3db64e..322387be 100755 --- a/tests/update.TestCase +++ b/tests/update.TestCase @@ -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']) diff --git a/tests/xref/metadata/aarddict.android.yml b/tests/xref/metadata/aarddict.android.yml deleted file mode 100644 index d679c6b0..00000000 --- a/tests/xref/metadata/aarddict.android.yml +++ /dev/null @@ -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 diff --git a/tests/xref/metadata/org.coolreader.yml b/tests/xref/metadata/org.coolreader.yml deleted file mode 100644 index e1dc1df9..00000000 --- a/tests/xref/metadata/org.coolreader.yml +++ /dev/null @@ -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 diff --git a/tests/xref/metadata/org.geometerplus.zlibrary.ui.android.yml b/tests/xref/metadata/org.geometerplus.zlibrary.ui.android.yml deleted file mode 100644 index ff2897eb..00000000 --- a/tests/xref/metadata/org.geometerplus.zlibrary.ui.android.yml +++ /dev/null @@ -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