mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-10-02 09:10:11 +02:00
Merge branch 'purge-description-formatting' into 'master'
Purge description formatting Closes #845 and #678 See merge request fdroid/fdroidserver!828
This commit is contained in:
commit
ac5ed93428
@ -54,7 +54,7 @@
|
||||
repo_url: https://MyFirstFDroidRepo.org/fdroid/repo
|
||||
repo_name: My First F-Droid Repo Demo
|
||||
repo_icon: fdroid-icon.png
|
||||
repo_description: |
|
||||
repo_description: >-
|
||||
This is a repository of apps to be used with F-Droid. Applications in this
|
||||
repository are either official binaries built by the original application
|
||||
developers, or are binaries built from source by the admin of f-droid.org
|
||||
@ -68,7 +68,7 @@ archive_older: 3
|
||||
archive_url: https://f-droid.org/archive
|
||||
archive_name: My First F-Droid Archive Demo
|
||||
archive_icon: fdroid-icon.png
|
||||
archive_description: |
|
||||
archive_description: >-
|
||||
The repository of older versions of packages from the main demo repository.
|
||||
|
||||
# This allows a specific kind of insecure APK to be included in the
|
||||
|
@ -355,10 +355,6 @@ def read_config(opts):
|
||||
|
||||
fill_config_defaults(config)
|
||||
|
||||
for k in ["repo_description", "archive_description"]:
|
||||
if k in config:
|
||||
config[k] = clean_description(config[k])
|
||||
|
||||
if 'serverwebroot' in config:
|
||||
if isinstance(config['serverwebroot'], str):
|
||||
roots = [config['serverwebroot']]
|
||||
@ -671,19 +667,6 @@ def get_extension(filename):
|
||||
publish_name_regex = re.compile(r"^(.+)_([0-9]+)\.(apk|zip)$")
|
||||
|
||||
|
||||
def clean_description(description):
|
||||
'Remove unneeded newlines and spaces from a block of description text'
|
||||
returnstring = ''
|
||||
# this is split up by paragraph to make removing the newlines easier
|
||||
for paragraph in re.split(r'\n\n', description):
|
||||
paragraph = re.sub('\r', '', paragraph)
|
||||
paragraph = re.sub('\n', ' ', paragraph)
|
||||
paragraph = re.sub(' {2,}', ' ', paragraph)
|
||||
paragraph = re.sub(r'^\s*(\w)', r'\1', paragraph)
|
||||
returnstring += paragraph + '\n\n'
|
||||
return returnstring.rstrip('\n')
|
||||
|
||||
|
||||
def publishednameinfo(filename):
|
||||
filename = os.path.basename(filename)
|
||||
m = publish_name_regex.match(filename)
|
||||
|
@ -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:
|
||||
|
@ -583,7 +583,7 @@ def main():
|
||||
config = common.read_config(options)
|
||||
|
||||
# Get all apps...
|
||||
allapps = metadata.read_metadata(xref=True)
|
||||
allapps = metadata.read_metadata(options.appid)
|
||||
apps = common.read_app_args(options.appid, allapps, False)
|
||||
|
||||
anywarns = check_for_unsupported_metadata_files()
|
||||
|
@ -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(appids=None, 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
|
||||
@ -756,8 +563,22 @@ def read_metadata(xref=True, check_vcs=[], refresh=True, sort_by_time=False):
|
||||
if not os.path.exists(basedir):
|
||||
os.makedirs(basedir)
|
||||
|
||||
metadatafiles = (glob.glob(os.path.join('metadata', '*.yml'))
|
||||
+ glob.glob('.fdroid.yml'))
|
||||
if appids:
|
||||
vercodes = fdroidserver.common.read_pkg_args(appids)
|
||||
found_invalid = False
|
||||
metadatafiles = []
|
||||
for appid in vercodes.keys():
|
||||
f = os.path.join('metadata', '%s.yml' % appid)
|
||||
if os.path.exists(f):
|
||||
metadatafiles.append(f)
|
||||
else:
|
||||
found_invalid = True
|
||||
logging.critical(_("No such package: %s") % appid)
|
||||
if found_invalid:
|
||||
raise FDroidException(_("Found invalid appids in arguments"))
|
||||
else:
|
||||
metadatafiles = (glob.glob(os.path.join('metadata', '*.yml'))
|
||||
+ glob.glob('.fdroid.yml'))
|
||||
|
||||
if sort_by_time:
|
||||
entries = ((os.stat(path).st_mtime, path) for path in metadatafiles)
|
||||
@ -780,16 +601,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 +990,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))
|
||||
|
@ -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__":
|
||||
|
@ -61,7 +61,7 @@ def main():
|
||||
config = common.read_config(options)
|
||||
|
||||
# Get all apps...
|
||||
allapps = metadata.read_metadata(xref=True)
|
||||
allapps = metadata.read_metadata(options.appid)
|
||||
apps = common.read_app_args(options.appid, allapps, False)
|
||||
|
||||
for appid, app in apps.items():
|
||||
|
@ -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
|
||||
|
@ -1,47 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
sys.path.insert(1, os.path.join(os.getcwd(), '..', 'fdroidserver'))
|
||||
import common
|
||||
|
||||
config = common.get_default_config()
|
||||
|
||||
testtext = '''
|
||||
This is a block of text that has been wrapped to fit nicely in PEP8 style:
|
||||
|
||||
GnuPrivacyGuard extends the gpgcli command line tool to bring an integrated
|
||||
privacy engine to your Android. It gives you command line access to the entire
|
||||
GnuPG suite of encryption software. It also serves as the test bed for
|
||||
complete Android integration for all of GnuPG's crypto services, including
|
||||
OpenPGP, symmetric encryption, and more.
|
||||
|
||||
GPG is GNU’s tool for end-to-end secure communication and encrypted data
|
||||
storage. This trusted protocol is the free software alternative to PGP. This
|
||||
app is built upon GnuPG 2.1, the new modularized version of GnuPG that now
|
||||
supports S/MIME.
|
||||
|
||||
GPG aims to provide an integrated experience, so clicking on PGP files should
|
||||
"just work". You can also share files to GPG to encrypt them. GPG will also
|
||||
respond when you click on a PGP fingerprint URL (one that starts with
|
||||
openpgp4fpr:).
|
||||
|
||||
Before using GPG, be sure to launch the app and let it finish its installation
|
||||
process. Once it has completed, then you're ready to use it. The easiest way
|
||||
to get started with GPG is to install [[jackpal.androidterm]]. GPG will
|
||||
automatically configure Android Terminal Emulator as long as you have the
|
||||
"Allow PATH extensions" settings enabled.
|
||||
'''
|
||||
|
||||
archive_description = """
|
||||
The repository of older versions of applications from the main demo repository.
|
||||
"""
|
||||
|
||||
|
||||
print('\n\n\n----------------------------------------------------')
|
||||
print(common.clean_description(testtext))
|
||||
print('\n\n\n----------------------------------------------------')
|
||||
print(common.clean_description(archive_description))
|
||||
print('\n\n\n----------------------------------------------------')
|
||||
print(common.clean_description(config['repo_description']))
|
@ -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'):
|
||||
|
@ -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__))
|
||||
|
@ -5,7 +5,7 @@
|
||||
"name": "My First F-Droid Repo Demo",
|
||||
"icon": "fdroid-icon.png",
|
||||
"address": "https://MyFirstFDroidRepo.org/fdroid/repo",
|
||||
"description": "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/u/fdroid. ",
|
||||
"description": "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/u/fdroid.",
|
||||
"mirrors": [
|
||||
"http://foobarfoobarfoobar.onion/fdroid/repo",
|
||||
"https://foo.bar/fdroid/repo"
|
||||
@ -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",
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<fdroid>
|
||||
<repo icon="fdroid-icon.png" name="My First F-Droid Repo Demo" pubkey="308204e1308202c9a003020102020434597643300d06092a864886f70d01010b050030213110300e060355040b1307462d44726f6964310d300b06035504031304736f7661301e170d3136303931333230313930395a170d3434303133303230313930395a30213110300e060355040b1307462d44726f6964310d300b06035504031304736f766130820222300d06092a864886f70d01010105000382020f003082020a028202010086ef94b5aacf2ba4f38c875f4194b44f5644392e3715575d7c92828577e692c352b567172823851c8c72347fbc9d99684cd7ca3e1db3e4cca126382c53f2a5869fb4c19bdec989b2930501af3e758ff40588915fe96b10076ce3346a193a0277d79e83e30fd8657c20e35260dd085aa32eac7c4b85786ffefbf1555cafe2bc928443430cdbba48cfbe701e12ae86e676477932730d4fc7c00af820aef85038a5b4df084cf6470d110dc4c49ea1b749b80b34709d199b3db516b223625c5de4501e861f7d261b3838f8f616aa78831d618d41d25872dc810c9b2087b5a9e146ca95be740316dcdbcb77314e23ab87d4487913b800b1113c0603ea2294188b71d3e49875df097b56f9151211fc6832f9790c5c83d17481f14ad37915fd164f4fd713f6732a15f4245714b84cd665bdbd085660ea33ad7d7095dcc414f09e3903604a40facc2314a115c0045bb50e9df38efb57e1b8e7cc105f340a26eeb46aba0fa6672953eee7f1f92dcb408e561909bbd4bdf4a4948c4d57c467d21aa238c34ba43be050398be963191fa2b49828bc1e4eeed224b40dbe9dc3e570890a71a974a2f4527edb1b07105071755105edcb2af2f269facfb89180903a572a99b46456e80d4a01685a80b233278805f2c876678e731f4ec4f52075aeef6b2b023efbb8a3637ef507c4c37c27e428152ec1817fcba640ad601cb09f72f0fbe2d274a2410203010001a321301f301d0603551d0e04160414c28bf33dd5a9a17338e5b1d1a6edd8c7d141ed0b300d06092a864886f70d01010b0500038202010084e20458b2aafd7fc27146b0986f9324f4260f244920417a77c9bf15e2e2d22d2725bdd8093ec261c3779c3ca03312516506f9410075b90595b41345956d8eb2786fb5994f195611382c2b99dba13381b0100a30bc9e6e47248bf4325e2f6eec9d789216dc7536e753bf1f4be603d9fa2e6f5e192b4eb988b8cdb0bb1e8668a9225426f7d4636479f73ed24ad1d2657c31e63c93d9679b9080171b3bd1bf10a3b92b80bd790fbf62d3644900cd08eae8b9bf9c2567be98dc8cdd2ae19a8d57a3e3e2de899f81f1279f578989e6af906f80c8c2b67651730ee7e568c1af5bcb845b6d685dc55332a9984aeceaea3b7e883447edf1c76b155d95253e39b9710eaa22efa6c81468829702b5dce7126538f3ca70c2f0ad9a5795435fdb1f715f20d60359ef9a9926c7050116e802df651727447848827815f70bd82af3cedd08783156102d2d8ce995c4c43b8e47e91a3e6927f3505a5d395e6bebb84542c570903eeab4382a1c2151f1471c7a06a34dc4d268d8fa72e93bdcd2dccc4302ecac47b9e7e3d8bc9b46d21cd097874a24d529548018dc190ff568c6aa428f0a5eedff1a347730931c74f19277538e49647a4ad7254f4c1ec7d4da12cce9e1fad9607534e66ab40a56b473d9d7e3d563fd03cad2052bad365c5a29f8ae54f09b60dbca3ea768d7767cbe1c133ca08ce725c1c1370f4aab8e5b6e286f52dc0be8d0982b5a" timestamp="1480431575" url="https://MyFirstFDroidRepo.org/fdroid/repo" version="21">
|
||||
<description>This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/u/fdroid. </description>
|
||||
<description>This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/u/fdroid.</description>
|
||||
<mirror>http://foobarfoobarfoobar.onion/fdroid/repo</mirror>
|
||||
<mirror>https://foo.bar/fdroid/repo</mirror>
|
||||
</repo>
|
||||
@ -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><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></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 "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</desc>
|
||||
<license>GPL-3.0-only</license>
|
||||
<categories>Phone & SMS</categories>
|
||||
<category>Phone & 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><p>No description available</p></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 <uses-permissions></summary>
|
||||
<icon>duplicate.permisssions.9999999.png</icon>
|
||||
<desc><p>No description available</p></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><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></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 <uses-sdk> block in AndroidManifest.xml</summary>
|
||||
<icon>no.min.target.sdk.987.png</icon>
|
||||
<desc><p>No description available</p></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><p>No description available</p></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><p>No description available</p></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><p>No description available</p></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><p>Activates silent mode during calendar events.</p></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><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></desc>
|
||||
<desc>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
|
||||
</desc>
|
||||
<license>GPL-3.0-only</license>
|
||||
<categories>Development,GuardianProject,1,2.0</categories>
|
||||
<category>Development</category>
|
||||
|
@ -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'])
|
||||
|
@ -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
|
@ -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
|
@ -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
|
Loading…
Reference in New Issue
Block a user