1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-11-13 02:30:11 +01:00

Merge remote branch 'origin/master'

This commit is contained in:
Hans-Emil Skogh 2012-01-14 12:10:49 +01:00
commit bd136134e1
230 changed files with 2096 additions and 1175 deletions

1
.gitignore vendored
View File

@ -1,5 +1,6 @@
config.py
repo/
logs/
built/
build/
build_*/

25
README
View File

@ -21,18 +21,27 @@ To be able to auto-build packages, you're going to need:
*Linux
*Python
*A fully functional Android SDK with all SDK platforms and tools
*The Android NDK
*Android SDK with all SDK platforms (for all API versions) and tools
*Android NDK
*Ant
*Ant Contrib Tasks (Debian package ant-contrib)
*Maven (Debian package maven2)
*JavaCC (Debian package javacc)
*JDK (Debian package openjdk-6-jdk and openjdk-7-jdk)
*VCS clients: svn, git, hg, bzr
*A keystore for holding release keys. (Safe, secure and well backed up!)
You then need to create a config.py (copy config.sample.py and follow the
instructions) to specify the locations of some of these things.
==Building Apps==
Run
./build.py -p goo.TeaTimer
to test building apk files. They will be put in the repo directory.
=MetaData=
Information used by update.py to compile the public index comes from two
@ -91,7 +100,11 @@ The type of repository - for automatic building from source. If this is not
specified, automatic building is disabled for this application. Possible
values are:
git, svn, hg, bzr
git, git-svn, svn, hg, bzr
The git-svn option connects to an SVN repository, and you specify the URL in
exactly the same way, but git is used as a back-end. This is preferable for
performance reasons.
==Repo==
@ -99,7 +112,7 @@ The repository location. Usually a git: or svn: URL.
For a Subversion repo that requires authentication, you can precede the repo
URL with username:password@ and those parameters will be passed as --username
and --password to the SVN checkout command.
and --password to the SVN checkout command. (Doesn't work for git-svn).
==Build Version==
@ -125,9 +138,7 @@ configuration to the build. These are:
subdir=<path> - Specifies to build from a subdirectory of the checked out
source code. Normally this directory is changed to before
building, but there is a special case for SVN repositories
where the URL is specified with a * at the end. See the
documentation for the Repo field for more information.
building.
bindir=<path> - Normally the build output (apk) is expected to be in the
bin subdirectory below the ant build files. If the project
is configured to put it elsewhere, that can be specified

279
build.py
View File

@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
#
# build.py - part of the FDroid server tools
# Copyright (C) 2010-11, Ciaran Gultnieks, ciaran@ciarang.com
# Copyright (C) 2010-12, Ciaran Gultnieks, ciaran@ciarang.com
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@ -36,13 +36,14 @@ from common import VCSException
#Read configuration...
execfile('config.py')
# Parse command line...
parser = OptionParser()
parser.add_option("-v", "--verbose", action="store_true", default=False,
help="Spew out even more information than normal")
parser.add_option("-p", "--package", default=None,
help="Build only the specified package")
parser.add_option("-s", "--stop", action="store_true", default=False,
help="Make the build stop on exceptions")
(options, args) = parser.parse_args()
# Get all apps...
@ -51,6 +52,11 @@ apps = common.read_metadata(options.verbose)
failed_apps = {}
build_succeeded = []
log_dir = 'logs'
if not os.path.isdir(log_dir):
print "Creating log directory"
os.makedirs(log_dir)
output_dir = 'repo'
if not os.path.isdir(output_dir):
print "Creating output directory"
@ -68,13 +74,13 @@ if not os.path.isdir(build_dir):
for app in apps:
if app['disabled']:
if app['Disabled']:
print "Skipping %s: disabled" % app['id']
elif not app['builds']:
print "Skipping %s: no builds specified" % app['id']
if (app['disabled'] is None and app['repo'] != ''
and app['repotype'] != '' and (options.package is None or
if (app['Disabled'] is None and app['Repo'] != ''
and app['Repo Type'] != '' and (options.package is None or
options.package == app['id']) and len(app['builds']) > 0):
print "Processing " + app['id']
@ -82,7 +88,7 @@ for app in apps:
build_dir = 'build/' + app['id']
# Set up vcs interface and make sure we have the latest code...
vcs = common.getvcs(app['repotype'], app['repo'], build_dir)
vcs = common.getvcs(app['Repo Type'], app['Repo'], build_dir)
refreshed_source = False
@ -102,233 +108,21 @@ for app in apps:
else:
print "..building version " + thisbuild['version']
if not refreshed_source:
vcs.refreshlocal()
refreshed_source = True
# Optionally, the actual app source can be in a subdirectory...
if thisbuild.has_key('subdir'):
root_dir = os.path.join(build_dir, thisbuild['subdir'])
else:
root_dir = build_dir
# Get a working copy of the right revision...
if options.verbose:
print "Resetting repository to " + thisbuild['commit']
vcs.reset(thisbuild['commit'])
# Initialise submodules if requred...
if thisbuild.get('submodules', 'no') == 'yes':
vcs.initsubmodules()
# Generate (or update) the ant build file, build.xml...
if (thisbuild.get('update', 'yes') == 'yes' and
not thisbuild.has_key('maven')):
parms = [os.path.join(sdk_path, 'tools', 'android'),
'update', 'project', '-p', '.']
parms.append('--subprojects')
if thisbuild.has_key('target'):
parms.append('-t')
parms.append(thisbuild['target'])
if subprocess.call(parms, cwd=root_dir) != 0:
raise BuildException("Failed to update project")
# If the app has ant set up to sign the release, we need to switch
# that off, because we want the unsigned apk...
for propfile in ('build.properties', 'default.properties'):
if os.path.exists(os.path.join(root_dir, propfile)):
if subprocess.call(['sed','-i','s/^key.store/#/',
propfile], cwd=root_dir) !=0:
raise BuildException("Failed to amend %s" % propfile)
# Update the local.properties file...
locprops = os.path.join(root_dir, 'local.properties')
if os.path.exists(locprops):
f = open(locprops, 'r')
props = f.read()
f.close()
# Fix old-fashioned 'sdk-location' by copying
# from sdk.dir, if necessary...
if thisbuild.get('oldsdkloc', 'no') == "yes":
sdkloc = re.match(r".*^sdk.dir=(\S+)$.*", props,
re.S|re.M).group(1)
props += "\nsdk-location=" + sdkloc + "\n"
# Add ndk location...
props+= "\nndk.dir=" + ndk_path + "\n"
# Add java.encoding if necessary...
if thisbuild.has_key('encoding'):
props += "\njava.encoding=" + thisbuild['encoding'] + "\n"
f = open(locprops, 'w')
f.write(props)
f.close()
# Insert version code and number into the manifest if necessary...
if thisbuild.has_key('insertversion'):
if subprocess.call(['sed','-i','s/' + thisbuild['insertversion'] +
'/' + thisbuild['version'] +'/g',
'AndroidManifest.xml'], cwd=root_dir) !=0:
raise BuildException("Failed to amend manifest")
if thisbuild.has_key('insertvercode'):
if subprocess.call(['sed','-i','s/' + thisbuild['insertvercode'] +
'/' + thisbuild['vercode'] +'/g',
'AndroidManifest.xml'], cwd=root_dir) !=0:
raise BuildException("Failed to amend manifest")
# Delete unwanted file...
if thisbuild.has_key('rm'):
os.remove(os.path.join(build_dir, thisbuild['rm']))
# Fix apostrophes translation files if necessary...
if thisbuild.get('fixapos', 'no') == 'yes':
for root, dirs, files in os.walk(os.path.join(root_dir,'res')):
for filename in files:
if filename.endswith('.xml'):
if subprocess.call(['sed','-i','s@' +
r"\([^\\]\)'@\1\\'" +
'@g',
os.path.join(root, filename)]) != 0:
raise BuildException("Failed to amend " + filename)
# Fix translation files if necessary...
if thisbuild.get('fixtrans', 'no') == 'yes':
for root, dirs, files in os.walk(os.path.join(root_dir,'res')):
for filename in files:
if filename.endswith('.xml'):
f = open(os.path.join(root, filename))
changed = False
outlines = []
for line in f:
num = 1
index = 0
oldline = line
while True:
index = line.find("%", index)
if index == -1:
break
next = line[index+1:index+2]
if next == "s" or next == "d":
line = (line[:index+1] +
str(num) + "$" +
line[index+1:])
num += 1
index += 3
else:
index += 1
# We only want to insert the positional arguments
# when there is more than one argument...
if oldline != line:
if num > 2:
changed = True
else:
line = oldline
outlines.append(line)
f.close()
if changed:
f = open(os.path.join(root, filename), 'w')
f.writelines(outlines)
f.close()
# Run a pre-build command if one is required...
if thisbuild.has_key('prebuild'):
if subprocess.call(thisbuild['prebuild'],
cwd=root_dir, shell=True) != 0:
raise BuildException("Error running pre-build command")
# Apply patches if any
if 'patch' in thisbuild:
for patch in thisbuild['patch'].split(';'):
print "Applying " + patch
patch_path = os.path.join('metadata', app['id'], patch)
if subprocess.call(['patch', '-p1',
'-i', os.path.abspath(patch_path)], cwd=build_dir) != 0:
raise BuildException("Failed to apply patch %s" % patch_path)
# Special case init functions for funambol...
if thisbuild.get('initfun', 'no') == "yes":
if subprocess.call(['sed','-i','s@' +
'<taskdef resource="net/sf/antcontrib/antcontrib.properties" />' +
'@' +
'<taskdef resource="net/sf/antcontrib/antcontrib.properties">' +
'<classpath>' +
'<pathelement location="/usr/share/java/ant-contrib.jar"/>' +
'</classpath>' +
'</taskdef>' +
'@g',
'build.xml'], cwd=root_dir) !=0:
raise BuildException("Failed to amend build.xml")
if subprocess.call(['sed','-i','s@' +
'\${user.home}/funambol/build/android/build.properties' +
'@' +
'build.properties' +
'@g',
'build.xml'], cwd=root_dir) !=0:
raise BuildException("Failed to amend build.xml")
buildxml = os.path.join(root_dir, 'build.xml')
f = open(buildxml, 'r')
xml = f.read()
f.close()
xmlout = ""
mode = 0
for line in xml.splitlines():
if mode == 0:
if line.find("jarsigner") != -1:
mode = 1
else:
xmlout += line + "\n"
else:
if line.find("/exec") != -1:
mode += 1
if mode == 3:
mode =0
f = open(buildxml, 'w')
f.write(xmlout)
f.close()
if subprocess.call(['sed','-i','s@' +
'platforms/android-2.0' +
'@' +
'platforms/android-8' +
'@g',
'build.xml'], cwd=root_dir) !=0:
raise BuildException("Failed to amend build.xml")
shutil.copyfile(
os.path.join(root_dir, "build.properties.example"),
os.path.join(root_dir, "build.properties"))
if subprocess.call(['sed','-i','s@' +
'javacchome=.*'+
'@' +
'javacchome=' + javacc_path +
'@g',
'build.properties'], cwd=root_dir) !=0:
raise BuildException("Failed to amend build.properties")
if subprocess.call(['sed','-i','s@' +
'sdk-folder=.*'+
'@' +
'sdk-folder=' + sdk_path +
'@g',
'build.properties'], cwd=root_dir) !=0:
raise BuildException("Failed to amend build.properties")
if subprocess.call(['sed','-i','s@' +
'android.sdk.version.*'+
'@' +
'android.sdk.version=2.0' +
'@g',
'build.properties'], cwd=root_dir) !=0:
raise BuildException("Failed to amend build.properties")
# Prepare the source code...
root_dir = common.prepare_source(vcs, app, thisbuild,
build_dir, sdk_path, ndk_path, javacc_path,
not refreshed_source)
refreshed_source = True
# Build the source tarball right before we build the release...
tarname = app['id'] + '_' + thisbuild['vercode'] + '_src'
tarball = tarfile.open(os.path.join(output_dir,
tarname + '.tar.gz'), "w:gz")
tarball.add(build_dir, tarname)
def tarexc(f):
if f in ['.svn', '.git', '.hg', '.bzr']:
return True
return False
tarball.add(build_dir, tarname, exclude=tarexc)
tarball.close()
# Build native stuff if required...
@ -347,18 +141,17 @@ for app in apps:
if thisbuild.has_key('maven'):
p = subprocess.Popen(['mvn', 'clean', 'install',
'-Dandroid.sdk.path=' + sdk_path],
cwd=root_dir, stdout=subprocess.PIPE)
cwd=root_dir, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
else:
if thisbuild.has_key('antcommand'):
antcommand = thisbuild['antcommand']
else:
antcommand = 'release'
p = subprocess.Popen(['ant', antcommand], cwd=root_dir,
stdout=subprocess.PIPE)
output = p.communicate()[0]
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = p.communicate()
if p.returncode != 0:
print output
raise BuildException("Build failed for %s:%s" % (app['id'], thisbuild['version']))
raise BuildException("Build failed for %s:%s" % (app['id'], thisbuild['version']), output.strip(), error.strip())
elif options.verbose:
print output
print "Build successful"
@ -419,7 +212,8 @@ for app in apps:
raise BuildException(("Unexpected version/version code in output"
"APK: %s / %s"
"Expected: %s / %s")
) % (version, str(vercode), thisbuild['version'], str(thisbuild['vercode']))
% (version, str(vercode), thisbuild['version'], str(thisbuild['vercode']))
)
# Copy the unsigned apk to our temp directory for further
# processing...
@ -477,24 +271,35 @@ for app in apps:
if p.returncode != 0:
raise BuildException("Failed to align application")
os.remove(dest_unsigned)
build_succeeded.append(app)
except BuildException as be:
if options.stop:
raise
print "Could not build app %s due to BuildException: %s" % (app['id'], be)
logfile = open(os.path.join(log_dir, app['id'] + '.log'), 'a+')
logfile.write(str(be))
logfile.close
failed_apps[app['id']] = be
except VCSException as vcse:
if options.stop:
raise
print "VCS error while building app %s: %s" % (app['id'], vcse)
failed_apps[app['id']] = vcse
except Exception as e:
if options.stop:
raise
print "Could not build app %s due to unknown error: %s" % (app['id'], e)
failed_apps[app['id']] = e
build_succeeded.append(app)
for app in build_succeeded:
print "success: %s" % (app['id'])
for fa in failed_apps:
print "Build for app %s failed: %s" % (fa, failed_apps[fa])
print "Build for app %s failed:\n%s" % (fa, failed_apps[fa])
print "Finished."
if len(build_succeeded) > 0:
print str(len(build_succeeded)) + ' builds succeeded'
if len(failed_apps) > 0:
print str(len(failed_apps)) + 'builds failed'
print str(len(failed_apps)) + ' builds failed'

View File

@ -31,20 +31,11 @@ import common
execfile('config.py')
# Parse command line...
parser = OptionParser()
parser.add_option("-v", "--verbose", action="store_true", default=False,
help="Spew out even more information than normal")
(options, args) = parser.parse_args()
# Get all apps...
apps = common.read_metadata(options.verbose)
html_parser = HTMLParser.HTMLParser()
for app in apps:
print "Processing " + app['id']
# Check for a new version by looking at the Google market.
# Returns (None, "a message") if this didn't work, or (version, vercode) for
# the details of the current version.
def check_market(app):
time.sleep(5)
url = 'http://market.android.com/details?id=' + app['id']
page = urllib.urlopen(url).read()
@ -60,29 +51,49 @@ for app in apps:
vercode = m.group(1)
if not vercode:
print "...couldn't find version code"
elif not version:
print "...couldn't find version"
elif vercode == app['marketvercode'] and version == app['marketversion']:
return (None, "Couldn't find version code")
if not version:
return (None, "Couldn't find version")
return (version, vercode)
# Parse command line...
parser = OptionParser()
parser.add_option("-v", "--verbose", action="store_true", default=False,
help="Spew out even more information than normal")
(options, args) = parser.parse_args()
# Get all apps...
apps = common.read_metadata(options.verbose)
html_parser = HTMLParser.HTMLParser()
for app in apps:
print "Processing " + app['id'] + '...'
mode = app['Update Check Mode']
if mode == 'Market':
(version, vercode) = check_market(app)
elif mode == 'None':
version = None
vercode = 'Checking disabled'
else:
version = None
vercode = 'Invalid update check method'
if not version:
print "..." + vercode
elif vercode == app['Market Version Code'] and version == app['Market Version']:
print "...up to date"
else:
print '...updating to version:' + version + ' vercode:' + vercode
newdata = ''
app['Market Version'] = version
app['Market Version Code'] = vercode
metafile = os.path.join('metadata', app['id'] + '.txt')
mf = open(metafile, 'r')
for line in mf:
if line.startswith('Market Version:'):
newdata += 'Market Version:' + version + '\n'
elif line.startswith('Market Version Code:'):
newdata += 'Market Version Code:' + vercode + '\n'
else:
newdata += line
mf.close()
mf = open(metafile, 'w')
mf.write(newdata)
mf.close()
time.sleep(5)
common.write_metadata(metafile, app)
print "Finished."

597
common.py
View File

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
#
# common.py - part of the FDroid server tools
# Copyright (C) 2010-11, Ciaran Gultnieks, ciaran@ciarang.com
# Copyright (C) 2010-12, Ciaran Gultnieks, ciaran@ciarang.com
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@ -17,6 +17,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import glob, os, sys, re
import shutil
import subprocess
@ -25,6 +26,8 @@ def getvcs(vcstype, remote, local):
return vcs_git(remote, local)
elif vcstype == 'svn':
return vcs_svn(remote, local)
elif vcstype == 'git-svn':
return vcs_gitsvn(remote, local)
elif vcstype == 'hg':
return vcs_hg(remote,local)
elif vcstype == 'bzr':
@ -51,7 +54,7 @@ class vcs:
self.remote = remote
self.local = local
# Refresh the local repository - i.e. get the latest code. This
# works either by updating if a local copy already exists, or by
# cloning from scratch if it doesn't.
@ -82,11 +85,19 @@ class vcs:
class vcs_git(vcs):
def checkrepo(self):
p = subprocess.Popen(['git', 'rev-parse', '--show-toplevel'],
stdout=subprocess.PIPE, cwd=self.local)
result = p.communicate()[0].rstrip()
if not result.endswith(self.local):
raise VCSException('Repository mismatch')
def clone(self):
if subprocess.call(['git', 'clone', self.remote, self.local]) != 0:
raise VCSException("Git clone failed")
def reset(self, rev=None):
self.checkrepo()
if rev is None:
rev = 'origin'
if subprocess.call(['git', 'reset', '--hard', rev],
@ -97,6 +108,7 @@ class vcs_git(vcs):
raise VCSException("Git clean failed")
def pull(self):
self.checkrepo()
if subprocess.call(['git', 'pull', 'origin'],
cwd=self.local) != 0:
raise VCSException("Git pull failed")
@ -106,6 +118,7 @@ class vcs_git(vcs):
raise VCSException("Git fetch failed")
def initsubmodules(self):
self.checkrepo()
if subprocess.call(['git', 'submodule', 'init'],
cwd=self.local) != 0:
raise VCSException("Git submodule init failed")
@ -114,6 +127,42 @@ class vcs_git(vcs):
raise VCSException("Git submodule update failed")
class vcs_gitsvn(vcs):
def checkrepo(self):
p = subprocess.Popen(['git', 'rev-parse', '--show-toplevel'],
stdout=subprocess.PIPE, cwd=self.local)
result = p.communicate()[0].rstrip()
if not result.endswith(self.local):
raise VCSException('Repository mismatch')
def clone(self):
if subprocess.call(['git', 'svn', 'clone', self.remote, self.local]) != 0:
raise VCSException("Git clone failed")
def reset(self, rev=None):
self.checkrepo()
if rev is None:
rev = 'HEAD'
else:
p = subprocess.Popen(['git', 'svn', 'find-rev', 'r' + rev],
cwd=self.local, stdout=subprocess.PIPE)
rev = p.communicate()[0].rstrip()
if p.returncode != 0:
raise VCSException("Failed to get git treeish from svn rev")
if subprocess.call(['git', 'reset', '--hard', rev],
cwd=self.local) != 0:
raise VCSException("Git reset failed")
if subprocess.call(['git', 'clean', '-dfx'],
cwd=self.local) != 0:
raise VCSException("Git clean failed")
def pull(self):
self.checkrepo()
if subprocess.call(['git', 'svn', 'rebase'],
cwd=self.local) != 0:
raise VCSException("Git svn rebase failed")
class vcs_svn(vcs):
@ -196,15 +245,54 @@ class vcs_bzr(vcs):
raise VCSException("Bzr update failed")
# Get the type expected for a given metadata field.
def metafieldtype(name):
if name == 'Description':
return 'multiline'
if name == 'Requires Root':
return 'flag'
if name == 'Build Version':
return 'build'
if name == 'Use Built':
return 'obsolete'
return 'string'
# Parse metadata for a single application.
#
# 'metafile' - the filename to read. The package id for the application comes
# from this filename.
#
# Returns a dictionary containing all the details of the application. There are
# two major kinds of information in the dictionary. Keys beginning with capital
# letters correspond directory to identically named keys in the metadata file.
# Keys beginning with lower case letters are generated in one way or another,
# and are not found verbatim in the metadata.
#
# Known keys not originating from the metadata are:
#
# 'id' - the application's package ID
# 'builds' - a list of dictionaries containing build information
# for each defined build
# 'comments' - a list of comments from the metadata file. Each is
# a tuple of the form (field, comment) where field is
# the name of the field it preceded in the metadata
# file. Where field is None, the comment goes at the
# end of the file. Alternatively, 'build:version' is
# for a comment before a particular build version.
# 'descriptionlines' - original lines of description as formatted in the
# metadata file.
#
def parse_metadata(metafile, **kw):
def parse_buildline(value):
def parse_buildline(lines):
value = "".join(lines)
parts = [p.replace("\\,", ",")
for p in re.split(r"(?<!\\),", value)]
if len(parts) < 3:
raise MetaDataException("Invalid build format: " + value + " in " + metafile.name)
thisbuild = {}
thisbuild['origlines'] = lines
thisbuild['version'] = parts[0]
thisbuild['vercode'] = parts[1]
thisbuild['commit'] = parts[2]
@ -213,119 +301,189 @@ def parse_metadata(metafile, **kw):
thisbuild[pk] = pv
return thisbuild
def add_comments(key):
for comment in curcomments:
thisinfo['comments'].append((key, comment))
del curcomments[:]
if not isinstance(metafile, file):
metafile = open(metafile, "r")
thisinfo = {}
thisinfo['id'] = metafile.name[9:-4]
if kw.get("verbose", False):
print "Reading metadata for " + thisinfo['id']
thisinfo['description'] = ''
thisinfo['name'] = None
thisinfo['summary'] = ''
thisinfo['license'] = 'Unknown'
thisinfo['web'] = ''
thisinfo['source'] = ''
thisinfo['tracker'] = ''
thisinfo['donate'] = None
thisinfo['disabled'] = None
thisinfo['antifeatures'] = None
thisinfo['marketversion'] = ''
thisinfo['marketvercode'] = '0'
thisinfo['repotype'] = ''
thisinfo['repo'] = ''
# Defaults for fields that come from metadata...
thisinfo['Name'] = None
thisinfo['Category'] = 'None'
thisinfo['Description'] = []
thisinfo['Summary'] = ''
thisinfo['License'] = 'Unknown'
thisinfo['Web Site'] = ''
thisinfo['Source Code'] = ''
thisinfo['Issue Tracker'] = ''
thisinfo['Donate'] = None
thisinfo['Disabled'] = None
thisinfo['AntiFeatures'] = None
thisinfo['Update Check Mode'] = 'Market'
thisinfo['Market Version'] = ''
thisinfo['Market Version Code'] = '0'
thisinfo['Repo Type'] = ''
thisinfo['Repo'] = ''
thisinfo['Requires Root'] = False
# General defaults...
thisinfo['builds'] = []
thisinfo['requiresroot'] = False
thisinfo['comments'] = []
mode = 0
buildline = []
buildlines = []
curcomments = []
for line in metafile:
line = line.rstrip('\r\n')
if line.startswith("#"):
continue
if mode == 0:
if len(line) == 0:
continue
if line.startswith("#"):
curcomments.append(line)
continue
index = line.find(':')
if index == -1:
raise MetaDataException("Invalid metadata in " + metafile.name + " at: " + line)
field = line[:index]
value = line[index+1:]
if field == 'Description':
fieldtype = metafieldtype(field)
if fieldtype != 'build':
add_comments(field)
if fieldtype == 'multiline':
mode = 1
elif field == 'Name':
thisinfo['name'] = value
elif field == 'Summary':
thisinfo['summary'] = value
elif field == 'Source Code':
thisinfo['source'] = value
elif field == 'License':
thisinfo['license'] = value
elif field == 'Category':
thisinfo['category'] = value
elif field == 'Web Site':
thisinfo['web'] = value
elif field == 'Issue Tracker':
thisinfo['tracker'] = value
elif field == 'Donate':
thisinfo['donate'] = value
elif field == 'Disabled':
thisinfo['disabled'] = value
elif field == 'Use Built':
pass #Ignoring this - will be removed
elif field == 'AntiFeatures':
parts = value.split(",")
for part in parts:
if (part != "Ads" and
part != "Tracking" and
part != "NonFreeNet" and
part != "NonFreeDep" and
part != "NonFreeAdd"):
raise MetaDataException("Unrecognised antifeature '" + part + "' in " \
+ metafile.name)
thisinfo['antifeatures'] = value
elif field == 'Market Version':
thisinfo['marketversion'] = value
elif field == 'Market Version Code':
thisinfo['marketvercode'] = value
elif field == 'Repo Type':
thisinfo['repotype'] = value
elif field == 'Repo':
thisinfo['repo'] = value
elif field == 'Build Version':
thisinfo[field] = []
if len(value) > 0:
raise MetaDataException("Unexpected text on same line as " + field + " in " + metafile.name)
elif fieldtype == 'string':
thisinfo[field] = value
elif fieldtype == 'flag':
if value == 'Yes':
thisinfo[field] = True
elif value == 'No':
thisinfo[field] = False
else:
raise MetaDataException("Expected Yes or No for " + field + " in " + metafile.name)
elif fieldtype == 'build':
if value.endswith("\\"):
mode = 2
buildline = [value[:-1]]
buildlines = [value[:-1]]
else:
thisinfo['builds'].append(parse_buildline(value))
elif field == "Requires Root":
if value == "Yes":
thisinfo['requiresroot'] = True
thisinfo['builds'].append(parse_buildline([value]))
add_comments('build:' + thisinfo['builds'][-1]['version'])
elif fieldtype == 'obsolete':
pass # Just throw it away!
else:
raise MetaDataException("Unrecognised field " + field + " in " + metafile.name)
elif mode == 1: # multi-line description
raise MetaDataException("Unrecognised field type for " + field + " in " + metafile.name)
elif mode == 1: # Multiline field
if line == '.':
mode = 0
else:
if len(line) == 0:
thisinfo['description'] += '\n\n'
else:
if (not thisinfo['description'].endswith('\n') and
len(thisinfo['description']) > 0):
thisinfo['description'] += ' '
thisinfo['description'] += line
elif mode == 2: # line continuation
thisinfo[field].append(line)
elif mode == 2: # Line continuation mode in Build Version
if line.endswith("\\"):
buildline.append(line[:-1])
buildlines.append(line[:-1])
else:
buildline.append(line)
buildlines.append(line)
thisinfo['builds'].append(
parse_buildline("".join(buildline)))
parse_buildline(buildlines))
add_comments('build:' + thisinfo['builds'][-1]['version'])
mode = 0
add_comments(None)
# Mode at end of file should always be 0...
if mode == 1:
raise MetaDataException("Description not terminated in " + metafile.name)
if len(thisinfo['description']) == 0:
thisinfo['description'] = 'No description available'
raise MetaDataException(field + " not terminated in " + metafile.name)
elif mode == 2:
raise MetaDataException("Unterminated continuation in " + metafile.name)
if len(thisinfo['Description']) == 0:
thisinfo['Description'].append('No description available')
# Ensure all AntiFeatures are recognised...
if thisinfo['AntiFeatures']:
parts = thisinfo['AntiFeatures'].split(",")
for part in parts:
if (part != "Ads" and
part != "Tracking" and
part != "NonFreeNet" and
part != "NonFreeDep" and
part != "NonFreeAdd"):
raise MetaDataException("Unrecognised antifeature '" + part + "' in " \
+ metafile.name)
return thisinfo
# Write a metadata file.
#
# 'dest' - The path to the output file
# 'app' - The app data
def write_metadata(dest, app):
def writecomments(key):
for pf, comment in app['comments']:
if pf == key:
mf.write(comment + '\n')
def writefield(field, value=None):
writecomments(field)
if value is None:
value = app[field]
mf.write(field + ':' + value + '\n')
mf = open(dest, 'w')
if app['Disabled']:
writefield('Disabled')
if app['AntiFeatures']:
writefield('AntiFeatures')
writefield('Category')
writefield('License')
writefield('Web Site')
writefield('Source Code')
writefield('Issue Tracker')
if app['Donate']:
writefield('Donate')
mf.write('\n')
if app['Name']:
writefield('Name')
writefield('Summary')
writefield('Description', '')
for line in app['Description']:
mf.write(line + '\n')
mf.write('.\n')
mf.write('\n')
if app['Requires Root']:
writefield('Requires Root', 'Yes')
mf.write('\n')
if len(app['Repo Type']) > 0:
writefield('Repo Type')
writefield('Repo')
mf.write('\n')
for build in app['builds']:
writecomments('build:' + build['version'])
mf.write('Build Version:')
mf.write('\\\n'.join(build['origlines']) + '\n')
if len(app['builds']) > 0:
mf.write('\n')
writefield('Update Check Mode')
if len(app['Market Version']) > 0:
writefield('Market Version')
writefield('Market Version Code')
mf.write('\n')
writecomments(None)
mf.close()
# Read all metadata. Returns a list of 'app' objects (which are dictionaries as
# returned by the parse_metadata function.
def read_metadata(verbose=False):
apps = []
for metafile in sorted(glob.glob(os.path.join('metadata', '*.txt'))):
@ -334,12 +492,34 @@ def read_metadata(verbose=False):
apps.append(parse_metadata(metafile, verbose=verbose))
return apps
# Parse multiple lines of description as written in a metadata file, returning
# a single string.
def parse_description(lines):
text = ''
for line in lines:
if len(line) == 0:
text += '\n\n'
else:
if not text.endswith('\n') and len(text) > 0:
text += ' '
text += line
return text
class BuildException(Exception):
def __init__(self, value):
def __init__(self, value, stdout = None, stderr = None):
self.value = value
self.stdout = stdout
self.stderr = stderr
def __str__(self):
return repr(self.value)
ret = repr(self.value)
if self.stdout:
ret = ret + "\n==== stdout begin ====\n" + str(self.stdout) + "\n==== stdout end ===="
if self.stderr:
ret = ret + "\n==== stderr begin ====\n" + str(self.stderr) + "\n==== stderr end ===="
return ret
class VCSException(Exception):
def __init__(self, value):
@ -355,3 +535,250 @@ class MetaDataException(Exception):
def __str__(self):
return repr(self.value)
# Prepare the source code for a particular build
# 'vcs' - the appropriate vcs object for the application
# 'app' - the application details from the metadata
# 'build' - the build details from the metadata
# 'build_dir' - the path to the build directory
# 'sdk_path' - the path to the Android SDK
# 'ndk_path' - the path to the Android NDK
# 'javacc_path' - the path to javacc
# 'refresh' - True to refresh from the remote repo
# Returns the root directory, which may be the same as 'build_dir' or may
# be a subdirectory of it.
def prepare_source(vcs, app, build, build_dir, sdk_path, ndk_path, javacc_path, refresh):
if refresh:
vcs.refreshlocal()
# Optionally, the actual app source can be in a subdirectory...
if build.has_key('subdir'):
root_dir = os.path.join(build_dir, build['subdir'])
else:
root_dir = build_dir
# Get a working copy of the right revision...
print "Resetting repository to " + build['commit']
vcs.reset(build['commit'])
# Check that a subdir (if we're using one) exists. This has to happen
# after the checkout, since it might not exist elsewhere...
if not os.path.exists(root_dir):
raise BuildException('Missing subdir ' + root_dir)
# Initialise submodules if requred...
if build.get('submodules', 'no') == 'yes':
vcs.initsubmodules()
# Generate (or update) the ant build file, build.xml...
if (build.get('update', 'yes') == 'yes' and
not build.has_key('maven')):
parms = [os.path.join(sdk_path, 'tools', 'android'),
'update', 'project', '-p', '.']
parms.append('--subprojects')
if build.has_key('target'):
parms.append('-t')
parms.append(build['target'])
# Newer versions of the platform tools don't replace the build.xml
# file as they always did previously, they spew out a nanny-like
# warning and tell you to do it manually. The following emulates
# the original behaviour...
buildxml = os.path.join(root_dir, 'build.xml')
if os.path.exists(buildxml):
os.remove(buildxml)
if subprocess.call(parms, cwd=root_dir) != 0:
raise BuildException("Failed to update project")
# If the app has ant set up to sign the release, we need to switch
# that off, because we want the unsigned apk...
for propfile in ('build.properties', 'default.properties'):
if os.path.exists(os.path.join(root_dir, propfile)):
if subprocess.call(['sed','-i','s/^key.store/#/',
propfile], cwd=root_dir) !=0:
raise BuildException("Failed to amend %s" % propfile)
# Update the local.properties file...
locprops = os.path.join(root_dir, 'local.properties')
if os.path.exists(locprops):
f = open(locprops, 'r')
props = f.read()
f.close()
# Fix old-fashioned 'sdk-location' by copying
# from sdk.dir, if necessary...
if build.get('oldsdkloc', 'no') == "yes":
sdkloc = re.match(r".*^sdk.dir=(\S+)$.*", props,
re.S|re.M).group(1)
props += "\nsdk-location=" + sdkloc + "\n"
# Add ndk location...
props+= "\nndk.dir=" + ndk_path + "\n"
# Add java.encoding if necessary...
if build.has_key('encoding'):
props += "\njava.encoding=" + build['encoding'] + "\n"
f = open(locprops, 'w')
f.write(props)
f.close()
# Insert version code and number into the manifest if necessary...
if build.has_key('insertversion'):
if subprocess.call(['sed','-i','s/' + build['insertversion'] +
'/' + build['version'] +'/g',
'AndroidManifest.xml'], cwd=root_dir) !=0:
raise BuildException("Failed to amend manifest")
if build.has_key('insertvercode'):
if subprocess.call(['sed','-i','s/' + build['insertvercode'] +
'/' + build['vercode'] +'/g',
'AndroidManifest.xml'], cwd=root_dir) !=0:
raise BuildException("Failed to amend manifest")
# Delete unwanted file...
if build.has_key('rm'):
os.remove(os.path.join(build_dir, build['rm']))
# Fix apostrophes translation files if necessary...
if build.get('fixapos', 'no') == 'yes':
for root, dirs, files in os.walk(os.path.join(root_dir, 'res')):
for filename in files:
if filename.endswith('.xml'):
if subprocess.call(['sed','-i','s@' +
r"\([^\\]\)'@\1\\'" +
'@g',
os.path.join(root, filename)]) != 0:
raise BuildException("Failed to amend " + filename)
# Fix translation files if necessary...
if build.get('fixtrans', 'no') == 'yes':
for root, dirs, files in os.walk(os.path.join(root_dir, 'res')):
for filename in files:
if filename.endswith('.xml'):
f = open(os.path.join(root, filename))
changed = False
outlines = []
for line in f:
num = 1
index = 0
oldline = line
while True:
index = line.find("%", index)
if index == -1:
break
next = line[index+1:index+2]
if next == "s" or next == "d":
line = (line[:index+1] +
str(num) + "$" +
line[index+1:])
num += 1
index += 3
else:
index += 1
# We only want to insert the positional arguments
# when there is more than one argument...
if oldline != line:
if num > 2:
changed = True
else:
line = oldline
outlines.append(line)
f.close()
if changed:
f = open(os.path.join(root, filename), 'w')
f.writelines(outlines)
f.close()
# Run a pre-build command if one is required...
if build.has_key('prebuild'):
if subprocess.call(build['prebuild'],
cwd=root_dir, shell=True) != 0:
raise BuildException("Error running pre-build command")
# Apply patches if any
if 'patch' in build:
for patch in build['patch'].split(';'):
print "Applying " + patch
patch_path = os.path.join('metadata', app['id'], patch)
if subprocess.call(['patch', '-p1',
'-i', os.path.abspath(patch_path)], cwd=build_dir) != 0:
raise BuildException("Failed to apply patch %s" % patch_path)
# Special case init functions for funambol...
if build.get('initfun', 'no') == "yes":
if subprocess.call(['sed','-i','s@' +
'<taskdef resource="net/sf/antcontrib/antcontrib.properties" />' +
'@' +
'<taskdef resource="net/sf/antcontrib/antcontrib.properties">' +
'<classpath>' +
'<pathelement location="/usr/share/java/ant-contrib.jar"/>' +
'</classpath>' +
'</taskdef>' +
'@g',
'build.xml'], cwd=root_dir) !=0:
raise BuildException("Failed to amend build.xml")
if subprocess.call(['sed','-i','s@' +
'\${user.home}/funambol/build/android/build.properties' +
'@' +
'build.properties' +
'@g',
'build.xml'], cwd=root_dir) !=0:
raise BuildException("Failed to amend build.xml")
buildxml = os.path.join(root_dir, 'build.xml')
f = open(buildxml, 'r')
xml = f.read()
f.close()
xmlout = ""
mode = 0
for line in xml.splitlines():
if mode == 0:
if line.find("jarsigner") != -1:
mode = 1
else:
xmlout += line + "\n"
else:
if line.find("/exec") != -1:
mode += 1
if mode == 3:
mode =0
f = open(buildxml, 'w')
f.write(xmlout)
f.close()
if subprocess.call(['sed','-i','s@' +
'platforms/android-2.0' +
'@' +
'platforms/android-8' +
'@g',
'build.xml'], cwd=root_dir) !=0:
raise BuildException("Failed to amend build.xml")
shutil.copyfile(
os.path.join(root_dir, "build.properties.example"),
os.path.join(root_dir, "build.properties"))
if subprocess.call(['sed','-i','s@' +
'javacchome=.*'+
'@' +
'javacchome=' + javacc_path +
'@g',
'build.properties'], cwd=root_dir) !=0:
raise BuildException("Failed to amend build.properties")
if subprocess.call(['sed','-i','s@' +
'sdk-folder=.*'+
'@' +
'sdk-folder=' + sdk_path +
'@g',
'build.properties'], cwd=root_dir) !=0:
raise BuildException("Failed to amend build.properties")
if subprocess.call(['sed','-i','s@' +
'android.sdk.version.*'+
'@' +
'android.sdk.version=2.0' +
'@g',
'build.properties'], cwd=root_dir) !=0:
raise BuildException("Failed to amend build.properties")
return root_dir

View File

@ -1 +0,0 @@
*.class

View File

@ -1,11 +0,0 @@
=Libraries=
androidmarketapi-x.x.jar is Apache 2.0 licensed - source from:
http://code.google.com/p/android-market-api/
https://code.google.com/p/protobuf/ is New BSD licensed - source from:
https://code.google.com/p/protobuf/

Binary file not shown.

View File

@ -1,2 +0,0 @@
#!/bin/sh
javac -classpath androidmarketapi-0.6.jar test.java

Binary file not shown.

View File

@ -1,2 +0,0 @@
#!/bin/sh
java -classpath ".:androidmarketapi-0.6.jar" test $1 $2 $3

View File

@ -1,147 +0,0 @@
import java.io.*;
import java.util.*;
import com.gc.android.market.api.MarketSession.Callback;
import com.gc.android.market.api.MarketSession;
import com.gc.android.market.api.model.Market.App;
import com.gc.android.market.api.model.Market.AppsResponse;
import com.gc.android.market.api.model.Market.AppsRequest;
import com.gc.android.market.api.model.Market.CommentsRequest;
import com.gc.android.market.api.model.Market.GetImageRequest;
import com.gc.android.market.api.model.Market.GetImageResponse;
import com.gc.android.market.api.model.Market.ResponseContext;
import com.gc.android.market.api.model.Market.GetImageRequest.AppImageUsage;
class test {
/**
* @param args
*/
public static void main(String[] args) {
try {
if(args.length < 3) {
System.out.println("Parameters :\n" +
"email password deviceid");
return;
}
String login = args[0];
String password = args[1];
String deviceid = args[2];
// Get a list of apps we want to check - i.e. those that
// we have metadata files for...
File dir = new File("../metadata");
List<String> apps = new ArrayList<String>();
String[] metafiles = dir.list();
for (int i=0; i<metafiles.length; i++) {
String metafile = metafiles[i];
if(metafile.endsWith(".txt")) {
String pkg = metafile.substring(0,
metafile.length() - 4);
apps.add(pkg);
}
}
System.out.println("Apps to check: " + apps.size());
MarketSession session = new MarketSession();
session.getContext().setAndroidId(deviceid);
session.getContext().setDeviceAndSdkVersion("sapphire:7");
System.out.println("Login...");
session.login(login,password);
System.out.println("Login done");
MarketSession.Callback callback = new MarketSession.Callback() {
@Override
public void onResult(ResponseContext context, Object oresp) {
try {
AppsResponse response = (AppsResponse)oresp;
if(response == null) {
System.out.println("No response");
}
if(response.getAppCount() != 1) {
System.out.println("Not in market, or multiple results");
} else {
App app = response.getAppList().get(0);
String filespec = "../metadata/" + app.getPackageName() + ".txt";
FileInputStream fi = new FileInputStream(filespec);
InputStreamReader isr = new InputStreamReader(fi, "UTF-8");
BufferedReader br = new BufferedReader(isr);
StringBuilder output = new StringBuilder();
boolean changed = false;
boolean vercodefound = false;
boolean versionfound = false;
String line, newline;
while (br.ready()) {
line = br.readLine();
if (line.startsWith("Market Version:")) {
versionfound = true;
newline="Market Version:" + app.getVersion();
if (!newline.equals(line)) {
changed = true;
line = newline;
}
} else if (line.startsWith("Market Version Code:")) {
vercodefound = true;
newline="Market Version Code:" + app.getVersionCode();
if (!newline.equals(line)) {
changed = true;
line = newline;
}
}
output.append(line + "\n");
}
br.close();
isr.close();
fi.close();
if(!versionfound) {
changed = true;
output.append("Market Version:" + app.getVersion() + "\n");
}
if(!vercodefound) {
changed = true;
output.append("Market Version Code:" + app.getVersionCode() + "\n");
}
if (changed) {
System.out.println("..updating");
FileOutputStream fo = new FileOutputStream(filespec);
OutputStreamWriter osr = new OutputStreamWriter(fo, "UTF-8");
BufferedWriter wi = new BufferedWriter(osr);
wi.write(output.toString());
wi.close();
osr.close();
fo.close();
}
}
} catch (Exception ex) {
System.out.println("...Exception");
ex.printStackTrace();
}
}
};
for(String pkg : apps) {
System.out.println("Checking: " + pkg);
AppsRequest appsRequest = AppsRequest.newBuilder()
.setQuery("pname:" + pkg)
.setStartIndex(0).setEntriesCount(10)
.setWithExtendedInfo(true)
.build();
session.append(appsRequest, callback);
session.flush();
// Pause to avoid rate limit...
Thread.sleep(5000);
}
} catch(Exception ex) {
ex.printStackTrace();
}
}
}

View File

@ -1,15 +1,17 @@
Use Built:Yes
License:GPLv2
Category:Office
License:GPLv2
Web Site:http://code.google.com/p/anstop/
Source Code:http://code.google.com/p/anstop/source/checkout
Issue Tracker:http://code.google.com/p/anstop/issues/list
Summary:A simple stopwatch
Description:A simple stopwatch, that also supports lap timing and a countdown
Description:
A simple stopwatch, that also supports lap timing and a countdown
timer.
.
Repo Type:svn
Repo Type:git-svn
Repo:http://anstop.googlecode.com/svn/trunk
Build Version:1.4,9,34

View File

@ -0,0 +1,17 @@
Category:Office
License:GPLv3
Web Site:http://aarddict.org/android/
Source Code:https://github.com/aarddict/android
Issue Tracker:https://github.com/aarddict/android/issues
Donate:http://aarddict.org/android/
Summary:Offline dictionary
Description:
An offline dictionary and wikipedia reader.
.
Repo Type:git
Repo:git://github.com/aarddict/android.git
Build Version:1.3.1,10,1.3.1,prebuild=mv lib libs

View File

@ -1,17 +1,19 @@
Use Built:Yes
License:GPLv2+
Category:System
License:GPLv2+
Web Site:http://code.google.com/p/android-vnc-viewer/
Source Code:http://code.google.com/p/android-vnc-viewer/source/checkout
Issue Tracker:http://code.google.com/p/android-vnc-viewer/issues/list
Summary:VNC viewer
Description:
A VNC ('remote desktop') client.
.
Repo Type:svn
Repo Type:git-svn
Repo:http://android-vnc-viewer.googlecode.com/svn/branches/antlersoft
Build Version:0.5.0,13,197,subdir=androidVNC
Market Version:0.5.0
Market Version Code:13

View File

@ -1,12 +1,15 @@
Disabled:See license
License:Unknown
Category:Games
License:Unknown
Web Site:http://github.com/rndmcnlly/iteration
Source Code:http://github.com/rndmcnlly/iteration
Issue Tracker:
Summary:Generative art
Description:
Generative art (pretty pictures of mathematical origin).
.
Market Version:3.15
Market Version Code:25

View File

@ -1,9 +1,9 @@
Use Built:Yes
License:GPLv3
Category:Office
License:GPLv3
Web Site:https://code.google.com/p/ical-import-export/
Source Code:https://code.google.com/p/ical-import-export/source/checkout
Issue Tracker:https://code.google.com/p/ical-import-export/issues/list
Summary:iCal (.ics) file importer
Description:
Allows you to import iCalendar files to your calendar without using Google
@ -13,7 +13,8 @@ synchronization services.
Repo Type:svn
Repo:http://ical-import-export.googlecode.com/svn/trunk/
Build Version:1.5,51,!11 but needs AndroidTools compiling too,subdir=iCalImportExport,target=android-9
Build Version:1.5,51,!11 but needs AndroidTools compiling too,subdir=iCalImportExport,target=android-10
Market Version:1.5
Market Version Code:51

View File

@ -1,15 +1,18 @@
Disabled:Sends device info and other data to a web server without permission
Use Built:Yes
Category:None
License:GPLv3+
Web Site:http://tomtasche.at/p/OpenOffice%20Document%20Reader
Source Code:https://github.com/TomTasche/OpenOffice-Document-Reader
Issue Tracker:https://github.com/TomTasche/OpenOffice-Document-Reader/issues
Summary:Open Office document reader.
Description:
Open Office document reader.
.
Repo Type:git
Repo:https://github.com/TomTasche/OpenOffice-Document-Reader.git
Build Version:1.1.9,11,243eba4f441b3601de96
Build Version:1.2,12,d174bed05a6026ddb5db
Build Version:1.2.3,15,8fe022fd67e5bb62c6d8

View File

@ -1,20 +1,22 @@
License:GPLv3
Category:Office
License:GPLv3
Web Site:http://sites.google.com/site/caldwellcode/
Source Code:http://code.google.com/p/trolly/source/checkout
Issue Tracker:http://code.google.com/p/trolly/issues/list
Summary:Shopping list application
Description:
Trolly is a shopping list application with the aim of being a very simple
app with no annoying or complicated features. It exposes intent filters to
allow other apps to automatically add items to the shopping list.
.
Repo Type:svn
Repo:http://trolly.googlecode.com/svn/trunk
# It needs a file from OpenIntents, so let's get it from Subversion...
Build Version:1.4,6,40,target=android-4,prebuild=mkdir -p src/org/openintents/intents && svn cat -r 3070 http://openintents.googlecode.com/svn/trunk/shoppinglist/ShoppingList/src/org/openintents/intents/ShoppingListIntents.java >src/org/openintents/intents/ShoppingListIntents.java
Use Built:Yes
Market Version:1.4
Market Version Code:6

View File

@ -1,18 +1,20 @@
Disabled:Source incomplete
Category:None
License:GPLv2+
Web Site:http://www.aptoide.com/
Source Code:http://aptoide.org/trac
Issue Tracker:http://aptoide.org/trac
Summary:A package installer.
Description:
Aptoide is a simple repository and package installer. F-Droid was originally
based on Aptoide!
.
Market Version:2.0.1
Market Version Code:145
Repo Type:svn
Repo:http://aptoide.org/repo
#Build Version:2.0,126,45,subdir=aptoide-client/v2.0
Market Version:2.0.1
Market Version Code:145
#Build Version:2.0,126,45,subdir=aptoide-client/v2.0

View File

@ -1,9 +1,9 @@
Use Built:Yes
License:GPLv2
Category:System
License:GPLv2
Web Site:http://code.google.com/p/cyanogen-updater/
Source Code:http://code.google.com/p/cyanogen-updater/source/checkout
Issue Tracker:http://code.google.com/p/cyanogen-updater/issues/list
Summary:Updater for CyanogenMod
Description:
An over-the-air updater for the CyanogenMod series of custom ROMs. Root
@ -14,7 +14,9 @@ Requires Root:Yes
Repo Type:svn
Repo:http://cyanogen-updater.googlecode.com/svn/trunk/
Build Version:5.0.1,501,626
Market Version:5.0.1
Market Version Code:501

View File

@ -1,8 +1,9 @@
License:Apache2
Category:System
License:Apache2
Web Site:http://code.google.com/p/androidpermissions/
Source Code:http://code.google.com/p/androidpermissions/source/checkout
Issue Tracker:http://code.google.com/p/androidpermissions/issues/list
Summary:Lists application permissions
Description:
This application shows all the available permissions on your phone in a big
@ -10,9 +11,12 @@ list, highlighting those it considers dangerous. You can expand any of the
entries in the list to see what applications are using that particular
permission.
.
Repo Type:svn
Repo:http://androidpermissions.googlecode.com/svn/trunk
Build Version:1.1,2,16
Use Built:Yes
Market Version:1.1
Market Version Code:2

View File

@ -1,6 +1,9 @@
License:Apache2
Category:Office
License:Apache2
Web Site:
Source Code:https://github.com/pakerfeldt/aGiro
Issue Tracker:
Summary:OCR scanner for Swedish bills
Description:
Scans bills sent through Bankgiro or Plusgiro and send the result to a
@ -8,12 +11,12 @@ server. The server component is available separately:
https://github.com/johannilsson/agiro-server
.
Repo Type:
Repo Type:git
Repo:https://github.com/pakerfeldt/aGiro.git
Build Version:alpha 2,2,!repo moved and renamed 20bd0f021dd852afcc9aa9008ee713419ae8e05c
#Use Built:Yes
#Use Built:Yes
# The closest thing to a web site or issue tracker is this thread:
# http://www.swedroid.se/forum/showthread.php?t=16305
#Web Site:

View File

@ -1,12 +1,15 @@
License:GPLv3
Category:Games
License:GPLv3
Web Site:http://code.google.com/p/mandelbrot/
Source Code:http://code.google.com/p/mandelbrot/source/checkout
Issue Tracker:
Summary:Mandelbrot set viewer
Description:
Mandelbrot set viewer that works in the style of a map viewer - i.e. scroll around
and zoom in/out.
.
Market Version:0.13
Market Version Code:13

View File

@ -1,8 +1,9 @@
Use Built:Yes
Category:Office
License:GPLv3
Web Site:http://code.google.com/p/timeriffic/
Source Code:http://code.google.com/p/timeriffic/source/checkout
Issue Tracker:
Summary:Auto-control settings on a schedule
Description:
Allows you to set multiple schedules to control mute, vibrate, brightness,
@ -14,15 +15,13 @@ Repo:https://timeriffic.googlecode.com/hg/
#This previous version was svn from http://timeriffic.googlecode.com/svn/trunk/
#Build Version:1.09.03,10903,45,subdir=Timeriffic,oldsdkloc=yes
Build Version:1.09.05,10905,fc40dccbb9,subdir=Timeriffic,oldsdkloc=yes,novcheck=yes,bindir=Timeriffic/bin2
#NOTE: Far from obvious which commit corresponds to version 1.09.09. Also
#note the source tree re-org, which means some of the settings above need
#to change, and also the switch to android-11 as a target.
Build Version:1.09.11,10911,!Can't find correct commit. See metadata notes too.
Build Version:1.09.12,10912,!No source for this in the repo
Market Version:1.09.12
Market Version Code:10912

View File

@ -1,15 +1,14 @@
Use Built:Yes
Category:Internet
License:GPLv3+
Web Site:https://github.com/talklittle/reddit-is-fun
Source Code:https://github.com/talklittle/reddit-is-fun
Issue Tracker:https://github.com/talklittle/reddit-is-fun/issues
Summary:Reddit app
Description:
An app for the social news website Reddit.
.
Repo Type:git
Repo:https://github.com/talklittle/reddit-is-fun.git
@ -19,9 +18,10 @@ Build Version:1.1.4,69,9372d0ab3a16125e9045,prebuild=rsync -r lib/ libs
Build Version:1.2.0,70,442e604760506e25e6c9,prebuild=rsync -r lib/ libs
Build Version:1.2.0a,71,e37439e12d11ff17a841,prebuild=rsync -r lib/ libs
Build Version:1.2.1,73,e35fd128c954d41e24abf91b71f301740f6ca483,prebuild=rsync -r lib/ libs
Build Version:1.2.1.2,75,28c98a7,prebuild=rsync -r lib/ libs,target=android-9
Build Version:1.2.1.3,76,143892b558,prebuild=rsync -r lib/ libs,target=android-9
Build Version:1.2.1.2,75,28c98a7,prebuild=rsync -r lib/ libs,target=android-10
Build Version:1.2.1.3,76,143892b558,prebuild=rsync -r lib/ libs,target=android-10
Build Version:1.2.1.5,78,!more dependency shuffling required and watch out for the proguard config
Market Version:1.2.1.5
Market Version Code:78
Market Version:1.2.2b
Market Version Code:82

View File

@ -1,18 +1,22 @@
License:Apache2
Category:System
License:Apache2
Web Site:http://code.google.com/p/scandinavian-keyboard/
Source Code:http://code.google.com/p/scandinavian-keyboard/source/checkout
Issue Tracker:http://code.google.com/p/scandinavian-keyboard/issues/list
Summary:Keyboard for Scandinavian languages
Description:
A modified version of the standard onscreen keyboard in Android
with support for Norwegian, Swedish, Danish, Faroese, German,
Icelandic and Northern Sámi keyboard layouts.
.
Repo Type:svn
Repo Type:git-svn
Repo:http://scandinavian-keyboard.googlecode.com/svn/trunk
Build Version:1.4.4,13,15,target=android-4
Build Version:1.4.6,15,17,target=android-4
Use Built:Yes
Market Version:1.4.6
Market Version Code:15

View File

@ -1,9 +1,9 @@
Use Built:Yes
License:GPLv2
Category:Office
License:GPLv2
Web Site:http://www.keepassdroid.com/
Source Code:http://github.com/bpellin/keepassdroid
Issue Tracker:http://code.google.com/p/keepassdroid/issues/list
Summary:KeePass-compatible password safe
Description:
A password safe, compatible with KeePass.

View File

@ -1,9 +1,9 @@
Use Built:Yes
License:Apache2
Category:Office
License:Apache2
Web Site:https://code.google.com/p/kraigsandroid/
Source Code:https://code.google.com/p/kraigsandroid/source/checkout
Issue Tracker:https://code.google.com/p/kraigsandroid/issues/list
Summary:An alarm clock
Description:
An alarm clock.
@ -16,3 +16,4 @@ Build Version:1.7,8,378
Market Version:1.7
Market Version Code:8

View File

@ -0,0 +1,25 @@
Category:System
License:LGPL
Web Site:https://sites.google.com/site/paranoidandroidproject/ContactOwner
Source Code:https://code.google.com/p/contactowner/source/browse/
Issue Tracker:https://code.google.com/p/contactowner/issues/list
Summary:Contact info on lock screen
Description:
Contact Owner is displays your (or a friend's) contact information on the "lock
screen" of your device, so that if you happen to lose it the finder will know
how to contact you. Select yourself (or your friend) from your list of contacts,
then select which information you want shown and (optionally) customize your
message. Contact Owner is a "fire and forget" tool: once you set it up, your
contact information will keep being displayed even after restarting your
device, as long as the application is installed.
.
Repo Type:git-svn
Repo:http://contactowner.googlecode.com/svn/branches/v2next/
Build Version:2.2,12,44,target=android-4
Market Version:2.2
Market Version Code:22

View File

@ -1,9 +1,9 @@
Use Built:Yes
License:GPLv3+
Category:Internet
License:GPLv3+
Web Site:http://www.beem-project.com/
Source Code:http://www.beem-project.com/projects/beem/repository
Issue Tracker:http://www.beem-project.com/projects/beem/issues
Summary:XMPP client
Description:
Beem is an XMPP (Jabber) client.
@ -17,3 +17,4 @@ Build Version:0.1.6,9,0.1.6
Market Version:0.1.6
Market Version Code:9

View File

@ -1,9 +1,9 @@
License:GPLv3
Category:Games
License:GPLv3
Web Site:https://code.google.com/p/boardgamegeek/
Source Code:https://code.google.com/p/boardgamegeek/source/checkout
Issue Tracker:https://code.google.com/p/boardgamegeek/issues/list
Donate:
Summary:BoardGameGeek application
Description:
This app searches the board game data from boardgamegeek.com. It's not a game
@ -18,3 +18,4 @@ Build Version:3.4,21,r525,subdir=BoardGameGeek,target=android-8
Market Version:3.4
Market Version Code:21

View File

@ -0,0 +1,28 @@
Disabled:Non-free blob
AntiFeatures:Tracking
Category:Office
License:GPLv2
Web Site:https://code.google.com/p/daily-money/
Source Code:https://code.google.com/p/daily-money/source/browse/
Issue Tracker:https://code.google.com/p/daily-money/issues/list
Summary:Simple Finance Manager
Description:
Features:
* Record your daily expense, income, asset and liability
* Show and count the details
* Export/Import to CSV
* Pie and time chart of balance
.
Repo Type:svn
Repo:https://daily-money.googlecode.com/svn/trunk/
Market Version:0.9.7-0702-freshly
Market Version Code:2011070200
# Does not build yet
#Build Version:0.9.7-0702-freshly,2011070200,218,subdir=dailymoney-surface/,target=android-7,prebuild=\
# cp build.xml local.properties ../dailymoney/ && \
# cd ../dailymoney/ && \
# cp default.properties project.properties

View File

@ -1,23 +1,23 @@
Use Built:Yes
License:Apache2
Category:System
License:Apache2
Web Site:http://code.google.com/p/quick-settings/
Source Code:http://code.google.com/p/quick-settings/source/checkout
Issue Tracker:http://code.google.com/p/quick-settings/issues/list
Summary:System settings tool
Description:
Quick Settings provides quick access to various Android system
settings, such as WiFi, GPS, brightness and all the various volume
controls.
.
Repo Type:svn
Repo:http://quick-settings.googlecode.com/svn/trunk/quick-settings/
#Don't know why the market version has a slightly different version code...
Build Version:1.9.8 p2,201012061,!Different market code
Build Version:1.9.8 p2,201012060,184,target=android-8
Build Version:1.9.9.2,201106160,213,target=android-8
Build Version:1.9.9.3,201107260,220,target=android-8
Market Version:1.9.9.5
Market Version Code:201110061

View File

@ -1,13 +1,14 @@
Use Built:Yes
License:Apache2
Category:System
License:Apache2
Web Site:http://code.google.com/p/quick-settings/
Source Code:http://code.google.com/p/quick-settings/source/checkout
Issue Tracker:http://code.google.com/p/quick-settings/issues/list
Summary:Battery widget
Description:
A tiny widget that displays battery level both numerically and graphically.
.
Repo Type:svn
Repo:http://quick-settings.googlecode.com/svn/trunk/quick-battery/
@ -15,3 +16,4 @@ Build Version:0.8.2,201010020,153,target=android-8
Market Version:0.8.2
Market Version Code:201010020

View File

@ -0,0 +1,20 @@
Category:Games
License:GPLv3
Web Site:https://code.google.com/p/simplechessclock/
Source Code:https://code.google.com/p/simplechessclock/source/browse/
Issue Tracker:https://code.google.com/p/simplechessclock/issues/list
Summary:Simple chess clock
Description:
Simple Chess Clock does what it says! It is designed for touchscreen Android
devices, and provides a simple, clear interface and easy interaction.
.
Repo Type:hg
Repo:https://code.google.com/p/simplechessclock/
Build Version:1.2.0,8,379155447bff,subdir=simplechessclock,target=android-8
Market Version:1.2.0
Market Version Code:8

View File

@ -1,9 +1,9 @@
Use Built:Yes
License:GPLv2
Category:Internet
License:GPLv2
Web Site:https://launchpad.net/arxivdroid
Source Code:http://bazaar.launchpad.net/~jdeslip/arxivdroid/trunk/files
Issue Tracker:
Summary:arxiv.org client
Description:
Official arxiv.org client with widget
@ -13,7 +13,7 @@ Repo Type:bzr
Repo:lp:arxivdroid
Build Version:2.0.4,90,!94 but doesn't compile due to apparently missing resource,target=android-11
Build Version:2.0.6,92,95,target=android-11
Build Version:2.0.6,92,95,target=android-11,prebuild=sed -i -e "/key\.alias.*/d" -e "/key\.store.*/d" *.properties
Build Version:2.0.10,96,!No source in repo,target=android-11
Build Version:2.0.14,100,!No source in repo,target=android-11
Build Version:2.0.16,102,!No source in repo,target=android-11
@ -23,3 +23,4 @@ Build Version:2.0.20,106,!No source in repo
Market Version:2.0.20
Market Version Code:106

View File

@ -1,9 +1,10 @@
License:GPLv3
Category:Internet
License:GPLv3
Web Site:http://code.google.com/p/csipsimple/
Source Code:http://code.google.com/p/csipsimple/source/checkout
Issue Tracker:http://code.google.com/p/csipsimple/issues/list
Donate:http://code.google.com/p/csipsimple/wiki/Donate
Summary:SIP (VOIP) client
Description:
A SIP (VOIP) client.
@ -11,6 +12,6 @@ A SIP (VOIP) client.
#Note : build needs a customised ndk, as described at:
# http://code.google.com/p/csipsimple/wiki/HowToBuild
Market Version:0.03-01
Market Version Code:1108

View File

@ -1,16 +1,17 @@
License:Apache2
Category:Multimedia
License:Apache2
Web Site:http://code.google.com/p/android-squeezer/
Source Code:https://github.com/bradfitz/android-squeezer
Issue Tracker:http://code.google.com/p/android-squeezer/issues/list
Summary:Squeezebox remote control app
Description:
Control your SqueezeCenter ("Slimserver") and Squeezebox (or multiple
squeezeboxes) from your Android phone.
.
Repo Type:git
Repo:https://github.com/bradfitz/android-squeezer.git
Use Built:Yes
Build Version:0.5,5,df0ffda7ae6370f22847ea9e764d81802eeaf545,\
prebuild=sed -r -i \
@ -20,3 +21,4 @@ oldsdkloc=yes,target=android-4
Market Version:0.5
Market Version Code:5

View File

@ -1,19 +1,19 @@
Disabled: Need to deal with possible trademark issues due us forking the project.
License:GPLv3
Category:Internet
License:GPLv3
Web Site:http://code.google.com/p/feeddroid/
Source Code:http://gitorious.org/feeddroid/feeddroid
Issue Tracker:
Summary:RSS feed reader/podcatcher
Description:
An RSS feed reader and podcatcher with audio and video support.
.
Repo Type:git
Repo:http://git.gitorious.org/feeddroid/feeddroid.git
#Build Version:1.1.1,37,db5077bf1ef792d8d5f6154198b7200a50d963df,subdir=FeedDroid
Market Version:1.1.1
Market Version Code:37

View File

@ -1,18 +1,20 @@
Use Built:Yes
License:GPLv3
Category:Games
License:GPLv3
Web Site:https://github.com/dozingcat/Vector-Pinball
Source Code:https://github.com/dozingcat/Vector-Pinball
Issue Tracker:https://github.com/dozingcat/Vector-Pinball/issues
Donate:
Summary:Pinball game
Description:
Vector Pinball is a pinball game.
.
Repo Type:git
Repo:https://github.com/dozingcat/Vector-Pinball.git
Build Version:1.1,4,45b5218594320ffb4b37
Build Version:1.3,10,1210949b1e373916d096
Market Version:1.3.1
Market Version Code:11

View File

@ -1,19 +1,20 @@
Disabled:Ads
AntiFeatures:Ads
License:GPLv2+
Category:Games
License:GPLv2+
Web Site:http://tuxrider.drodin.com/
Source Code:https://github.com/drodin/TuxRider
Issue Tracker:https://github.com/drodin/TuxRider/issues
Summary:Racing Game
Description:
A Tux Racer clone.
.
Repo Type:git
Repo:git://github.com/drodin/TuxRider.git
#Build Version:1.0.4 beta,6,67bce39cda321c225bc5
Market Version:1.0.9
Market Version Code:11

View File

@ -1,18 +1,20 @@
Disabled:No release available
Use Built:Yes
Category:None
License:MIT
Web Site:https://bitbucket.org/giszmo/offline-calendar/overview
Source Code:https://bitbucket.org/giszmo/offline-calendar/src
Issue Tracker:https://bitbucket.org/giszmo/offline-calendar/issues?status=new&status=open
Summary:Calendar
Description:
A calendar application.
.
Repo Type:hg
Repo:https://bitbucket.org/giszmo/offline-calendar
#There don't seem to be any developer releases yet
#There is now a 1.1 in the android market, but no source for it in the repository
Market Version:1.1
Market Version Code:2

View File

@ -1,14 +1,15 @@
Use Built:Yes
License:GPLv3+
Category:System
License:GPLv3+
Web Site:http://anetmon.sourceforge.net/
Source Code:http://sourceforge.net/projects/anetmon/develop
Issue Tracker:http://sourceforge.net/tracker/?group_id=288036
Summary:Network event logger
Description:
Shows various network status information and optionally logs it to a
CSV file to assist in troubleshooting.
.
Repo Type:svn
Repo:https://anetmon.svn.sourceforge.net/svnroot/anetmon/

View File

@ -1,9 +1,9 @@
Use Built:Yes
License:GPLv3+
Category:Office
License:GPLv3+
Web Site:http://github.com/eleybourn/Book-Catalogue/wiki
Source Code:http://github.com/eleybourn/Book-Catalogue
Issue Tracker:http://github.com/eleybourn/Book-Catalogue/issues
Summary:Book cataloguing application
Description:
This is a simple book catalogue application, to store a list of your books. Books can be added either manually, by ISBN, or by barcode.
@ -11,21 +11,21 @@ This is a simple book catalogue application, to store a list of your books. Book
Repo Type:git
Repo:git://github.com/eleybourn/Book-Catalogue.git
Build Version:3.0.1,36,b876c6df82c7e195ec5d,patch=percent-in-strings.patch
Build Version:3.0,35,448858bad8b397974db7,patch=percent-in-strings.patch
Build Version:3.3,47,50379da3ee1f7e95679a
Build Version:3.3.1,48,!No source - see https://github.com/eleybourn/Book-Catalogue/issues/162/#issue/162/comment/821843
Build Version:3.4,49,ef03c165bdc34e6be1f6
Build Version:3.4.2,51,f802cfb067684b78f195
Build Version:3.5.1,53,52ba5015693ae0b2696e
Build Version:3.5.6,57,!version code incorrect in source repo - 57 does not exist
Build Version:3.6,59,0f22f87a308190d74fab,target=android-9
Build Version:3.6.1,61,75e2f8328ff9a2602fe1,target=android-9
Build Version:3.6.2,62,da37baecb2c90aa2b306,target=android-9
Build Version:3.7,68,514799b45d18cf6dbc42065adf08abbdc9e2f16f,target=android-9
Build Version:3.8,69,bb85065cb6045df773cd681ac8bad55a6818d48a,target=android-9
Build Version:3.8.1,70,890b6affe8a64,target=android-9
Build Version:3.6,59,0f22f87a308190d74fab,target=android-10
Build Version:3.6.1,61,75e2f8328ff9a2602fe1,target=android-10
Build Version:3.6.2,62,da37baecb2c90aa2b306,target=android-10
Build Version:3.7,68,514799b45d18cf6dbc42065adf08abbdc9e2f16f,target=android-10
Build Version:3.8,69,bb85065cb6045df773cd681ac8bad55a6818d48a,target=android-10
Build Version:3.8.1,70,890b6affe8a64,target=android-10
Market Version:3.8.1
Market Version Code:70

View File

@ -0,0 +1,20 @@
Category:System
License:GPLv2
Web Site:http://episode6.wordpress.com/2010/03/27/appalarm/
Source Code:https://github.com/ghackett/AppAlarm
Issue Tracker:https://github.com/ghackett/AppAlarm/issues
Summary:App Alarm
Description:
Turn any app into an Alarm Clock.
Schedule any app for anytime.
.
Repo Type:git
Repo:https://github.com/ghackett/AppAlarm
Build Version:1.2.6,30,af9d89993212c67bfc510ed082381afc7abcd95a
Market Version:1.2.6
Market Version Code:30

View File

@ -1,9 +1,10 @@
Use Built:Yes
License:Apache2
Category:Office
License:Apache2
Web Site:http://evancharlton.com/projects/mileage/
Source Code:http://evancharlton.com/projects/mileage/source/
Issue Tracker:
Donate:http://evancharlton.com/donate/
Summary:A Mileage tracker
Description:
A Mileage tracker for an Android-based phone. Allows importing and
@ -17,6 +18,6 @@ Repo:http://hg.evancharlton.com/mileage
Build Version:3.0.0,3000,0766c4f352a5,subdir=trunk,oldsdkloc=yes
Build Version:3.0.8,3080,!No source in repo
Market Version:3.0.8
Market Version Code:3080

View File

@ -1,18 +1,20 @@
License:EPL
Category:System
License:EPL
Web Site:http://code.google.com/p/lcarswallpaper/
Source Code:http://code.google.com/p/lcarswallpaper/source/checkout
Issue Tracker:http://code.google.com/p/lcarswallpaper/issues/list
Summary:LCARS live wallpaper
Description:
Star Trek LCARS themed live wallpaper for Android 2.1+ devices that shows
various system information.
.
Repo Type:svn
Repo:http://lcarswallpaper.googlecode.com/svn/trunk/lcarswallpaper
Use Built:Yes
# The manifest has no version code, so let's use the SVN revision number.
Build Version:1.0.2,35,35,\
prebuild=sed -i -r 's/(android:versionName)/android:versionCode="35" \1/' \
AndroidManifest.xml

View File

@ -1,17 +1,18 @@
Use Built:Yes
License:GPLv3
Disabled: Doesn't built at the moment.
Category:Office
License:GPLv3
Web Site:https://launchpad.net/weightchart
Source Code:https://code.launchpad.net/~rheo/weightchart/trunk
Issue Tracker:https://bugs.launchpad.net/weightchart
Summary:Logs your body weight
Disabled: Doesn't built at the moment.
Description:
Keep a personal log of body weight and display as a chart.
.
Repo Type:bzr
Repo:lp:weightchart
Build Version:1,1,1,target=8

View File

@ -1,8 +1,9 @@
License:Apache2
Category:Internet
License:Apache2
Web Site:http://code.google.com/p/k9mail/
Source Code:https://github.com/k9mail/k-9
Issue Tracker:http://code.google.com/p/k9mail/issues/list
Summary:Full-featured email client
Description:
Email client supporting multiple accounts, POP3, IMAP, Push IMAP. Packed with
@ -14,6 +15,7 @@ Repo:https://github.com/k9mail/k-9.git
#Note - k9 is currently developer's binary only
#Build Version:3.906,14006,3.906,oldsdkloc=yes,patch=target9to10.patch,target=android-10
Update Check Mode:Market
Market Version:4.003
Market Version Code:14021
Market Version:4.002
Market Version Code:14020

View File

@ -1,19 +1,20 @@
Use Built:Yes
License:AGPLv3
Category:Office
License:AGPLv3
Web Site:http://www.funambol.com
Source Code:https://android-client.forge.funambol.org/source/browse/android-client/
Issue Tracker:
Summary:Funambol sync client
Description:Sync Client
Description:
Funambol sync client.
.
Repo Type:svn
Repo:guest:x@https://android-client.forge.funambol.org/svn/android-client/
Build Version:8.7.3,8,1032,subdir=tags/8.7.3,update=no,initfun=yes
Build Version:9.0.1,9,1437,subdir=tags/9.0.1,update=no,initfun=yes
Build Version:9.0.3,10,1546,subdir=tags/9.0.3,update=no,initfun=yes
Build Version:9.0.3,10,1547,subdir=tags/9.0.3,update=no,initfun=yes
Build Version:10.0.4,14,2162,subdir=tags/10.0.4,update=no,initfun=yes
Build Version:10.0.5,15,2211,subdir=tags/10.0.5,update=no,initfun=yes
Build Version:10.0.6,16,2337,subdir=tags/10.0.6,update=no,initfun=yes
@ -23,7 +24,6 @@ Build Version:10.0.6,16,2337,subdir=tags/10.0.6,update=no,initfun=yes
#Source is now accessible, but the build is failing without an obvious error.
#Need to look at this again.
#Build Version:10.0.7,17,2671,subdir=tags/10.0.7,update=no,initfun=yes
Market Version:10.0.7
Market Version Code:17

View File

@ -1,8 +1,9 @@
License:GPLv3
Category:System
License:GPLv3
Web Site:http://sites.google.com/site/ghostcommander1/
Source Code:http://sourceforge.net/projects/ghostcommander/develop
Issue Tracker:http://sourceforge.net/tracker/?group_id=311417
Summary:Dual-panel file manager
Description:
Dual panel file manager, like Norton Commander, Midnight Commander or
@ -14,18 +15,18 @@ files to/from FTP servers and SMB network shares (with plug-in). It
given root privileges, it offers additional functionality, such as
remounting filesystems.
.
Repo Type:svn
Repo:https://ghostcommander.svn.sourceforge.net/svnroot/ghostcommander
Use Built:Yes
Build Version:1.35.1b5,97,141,\
prebuild=sed -ri 's/(debuggable)="true"/\1="false"/' AndroidManifest.xml
# All commit messages are empty, so I'm just guessing the revision.
Build Version:1.35,94,131,\
prebuild=sed -ri 's/(debuggable)="true"/\1="false"/' AndroidManifest.xml
Build Version:1.36.4,110,161,\
prebuild=sed -ri 's/(debuggable)="true"/\1="false"/' AndroidManifest.xml
Market Version:1.39.2
Market Version Code:152
Market Version:1.39.3
Market Version Code:154

View File

@ -1,7 +1,15 @@
Disabled:No license - it's "Open Source" whatever that means
Category:Internet
License:Unknown
Web Site:http://gluegadget.com/hndroid/
Source Code:https://github.com/amir/HNdroid
Category:Internet
Issue Tracker:
Summary:
Description:
No description available
.
Market Version:0.4
Market Version Code:5

View File

@ -1,13 +1,14 @@
Use Built:Yes
License:GPLv2
Category:System
License:GPLv2
Web Site:http://diskusage.googlecode.com/
Source Code:http://code.google.com/p/diskusage/source/checkout
Issue Tracker:http://code.google.com/p/diskusage/issues/list
Summary:Visual disk usage explorer
Description:
Visually explore used and free space on internal and external storage.
.
Repo Type:svn
Repo:http://diskusage.googlecode.com/svn/trunk/
@ -22,3 +23,4 @@ Build Version:3.2,3020,69,prebuild=mkdir libs && cp extra/system.jar libs/
Market Version:3.2
Market Version Code:3020

View File

@ -1,11 +1,11 @@
Disabled:Needs google maps API key, and some build problems resolving
Use Built:Yes
License:Apache2
AntiFeatures:NonFreeDep
Category:Navigation
License:Apache2
Web Site:http://code.google.com/p/mytracks/
Source Code:http://code.google.com/p/mytracks/source/checkout
Issue Tracker:http://code.google.com/p/mytracks/issues/list
Summary:A GPS logger.
Description:
MyTracks is a GPS logger.
@ -15,12 +15,11 @@ Repo Type:hg
Repo:https://mytracks.googlecode.com/hg/
Build Version:1.1.0,23,a86a640f2d,subdir=MyTracks
Build Version:1.1.3,26,!Doesn't build - needs dependencies building now I think
#Build Version:1.1.3,26,62821d45032d,subdir=MyTracks,target=android-9,encoding=utf-8
#Build Version:1.1.3,26,62821d45032d,subdir=MyTracks,target=android-10,encoding=utf-8
#Still doesn't build...
#Build Version:1.1.9,22,v1.1.9,subdir=MyTracks,encoding=utf-8,target=android-13
Market Version:1.1.13
Market Version Code:36

View File

@ -1,9 +1,10 @@
License:GPLv3+
Category:System
License:GPLv3+
Web Site:http://sites.google.com/site/appsorganizer/
Source Code:http://code.google.com/p/appsorganizer/source/checkout
Issue Tracker:http://code.google.com/p/appsorganizer/issues/list
Donate:http://sites.google.com/site/appsorganizer/donate
Summary:Organize applications using labels
Description:
Apps Organizer allows you to organize installed applications using
@ -18,7 +19,8 @@ Build Version:1.5.14,162,184,subdir=AppsOrganizer
Build Version:1.5.15,163,185,subdir=AppsOrganizer
Build Version:1.5.16,164,187,subdir=AppsOrganizer
Build Version:1.5.18,166,190,subdir=AppsOrganizer
Build Version:1.5.19,167,191,subdir=AppsOrganizer,target=android-9
Build Version:1.5.19,167,191,subdir=AppsOrganizer,target=android-10
Market Version:1.5.19
Market Version Code:167

View File

@ -1,8 +1,9 @@
License:Apache2
Category:Multimedia
License:Apache2
Web Site:http://code.google.com/p/zxing/
Source Code:http://code.google.com/p/zxing/source/checkout
Issue Tracker:http://code.google.com/p/zxing/issues/list
Summary:Barcode scanner
Description:
Barcode scanner from ZXing.
@ -10,3 +11,4 @@ Barcode scanner from ZXing.
Market Version:3.72
Market Version Code:76

View File

@ -1,11 +1,9 @@
Use Built:Yes
License:GPLv3
Category:Internet
License:GPLv3
Web Site:http://openbmap.org
Source Code:http://sourceforge.net/scm/?type=git&group_id=218065
Issue Tracker:http://sourceforge.net/tracker/?group_id=218065
Donate:
Summary:OpenBMap Data Contribution
Description:
Provides the ability to record cellular and WiFi locations and upload them
@ -15,8 +13,9 @@ to the OpenBMap database. See http://openbmap.org.
Repo Type:git
Repo:git://myposition.git.sourceforge.net/gitroot/myposition/AndroidClient
Build Version:0.4.96,9,bc15ce80024d7f53897fd10e6ea0cc914d0ba226,prebuild=mv lib libs,target=android-9
Build Version:0.4.96,9,bc15ce80024d7f53897fd10e6ea0cc914d0ba226,prebuild=mv lib libs,target=android-10
Build Version:0.4.991,13,!Source is not there - see https://sourceforge.net/tracker/?func=detail&aid=3374951&group_id=218065&atid=1043257
Market Version:0.4.991
Market Version Code:13

View File

@ -1,8 +1,9 @@
License:Apache2
Category:Multimedia
License:Apache2
Web Site:http://code.google.com/p/chartdroid/
Source Code:http://code.google.com/p/chartdroid/source/checkout
Issue Tracker:http://code.google.com/p/chartdroid/issues/list
Summary:Chart engine
Description:
ChartDroid is an Intent-based "library application" for static chart and
@ -10,9 +11,12 @@ graph generation on Android. Other applications can use it to
graph/plot/display numerical data in many representations by implementing a
ContentProvider.
.
Repo Type:svn
Repo:http://chartdroid.googlecode.com/svn/trunk/core
Build Version:2.0.0,18,294
Use Built:Yes
Market Version:2.0.0
Market Version Code:18

View File

@ -1,9 +1,9 @@
Use Built:Yes
Category:System
License:GPLv3
Web Site:http://code.google.com/p/droidwall/
Source Code:http://code.google.com/p/droidwall/source/checkout
Issue Tracker:http://code.google.com/p/droidwall/issues/list
Summary:Firewall
Description:
A Firewall frontend based on iptables
@ -11,7 +11,6 @@ A Firewall frontend based on iptables
NOTE: Root access is required to use this application.
.
Requires Root:Yes
Repo Type:svn
@ -23,6 +22,6 @@ Build Version:1.4.8,148,156
Build Version:1.5.3,153,219
Build Version:1.5.6,156,245,target=android-8
Market Version:1.5.6
Market Version Code:156

View File

@ -1,13 +1,16 @@
License:LGPL
Category:System
License:LGPL
Web Site:http://code.google.com/p/talkmyphone/
Source Code:http://code.google.com/p/talkmyphone/source/checkout
Issue Tracker:http://code.google.com/p/talkmyphone/issues/list
Summary:Remote control of phone by XMPP
Description:
Allows you to send commands to your device remotely, via the XMPP protocol.
You can also receive information, such as incoming calls and SMS, and
battery state.
.
Market Version:2.06-beta
Market Version Code:17

View File

@ -1,9 +1,10 @@
Name:Andor's Trail
Category:Games
License:GPLv2
Web Site:http://andors.techby2guys.com/
Source Code:http://code.google.com/p/andors-trail/
Issue Tracker:http://code.google.com/p/andors-trail/issues/list
Category:Games
Name:Andor's Trail
Summary:Quest-driven Roguelike fantasy dungeon crawler RPG.
Description:
Quest-driven Roguelike fantasy dungeon crawler RPG with a powerful story.
@ -26,3 +27,4 @@ Build Version:0.6.10,25,192,subdir=AndorsTrail
Market Version:0.6.10
Market Version Code:25

View File

@ -3,6 +3,7 @@ License:GPLv3
Web Site:https://code.google.com/p/ankidroid/wiki/Index
Source Code:http://github.com/nicolas-raoul/Anki-Android/
Issue Tracker:http://code.google.com/p/ankidroid/issues
Summary:A flashcard-based study aid
Description:
Anki is a program which makes remembering things easy. Because it is a lot more
@ -19,7 +20,7 @@ Repo:git://github.com/nicolas-raoul/Anki-Android.git
#Build Version:0.5.1,19,!There is a v0.5.1 tag but the version code is not right
Build Version:0.6,20,f26b7662ae9db9a92d21
Build Version:0.7,21,v0.7
Build Version:1.0,22,v1.0
Build Version:1.0,22,v1.0,prebuild=sed -i -e "/key\.alias.*/d" -e "/key\.store.*/d" *.properties
Market Version:1.0
Market Version Code:23

View File

@ -1,10 +1,9 @@
Use Built:Yes
Category:System
License:GPLv3
Web Site:http://candrews.integralblue.com/2011/04/my-first-android-app-callerid/
Source Code:https://gitorious.org/callerid-for-android
Issue Tracker:
Donate:
Summary:Provides caller ID
Description:
Uses a web service to provide information about an incoming caller based on
@ -16,6 +15,6 @@ Repo:git://gitorious.org/callerid-for-android/mainline.git
#Disabled pending figuring out how to stop it zipaligning....
#Build Version:1.0,1,e6d5a9ac4bb24ae3866a0782f2b23d1f18eb2266,subdir=application,maven=yes,bindir=application/target,prebuild=wget http://osmdroid.googlecode.com/files/osmdroid-android-3.0.3.jar && mvn install:install-file -DgroupId=org.osmdroid -DartifactId=osmdroid -Dversion=3.0.3 -Dpackaging=jar -Dfile=osmdroid-android-3.0.3.jar
Market Version:1.3
Market Version Code:4

25
metadata/com.jadn.cc.txt Normal file
View File

@ -0,0 +1,25 @@
Category:Multimedia
License:MIT
Web Site:http://jadn.com/carcast/
Source Code:http://github.com/bherrmann7/Car-Cast/
Issue Tracker:https://github.com/bherrmann7/Car-Cast/issues
Donate:https://market.android.com/details?id=com.jadn.ccpro
Summary:A podcast downloader and player.
Description:
Car Cast is a simple audio podcast downloader and player.
Optimized for use in a daily commute, it features big buttons, large text, remembers last played location.
1. Subscribe to podcasts
2. Download podcasts (stored on flash card)
3. Playback in car/gym (no network needed)
.
Repo Type:git
Repo:git://github.com/bherrmann7/Car-Cast.git
Build Version:1.0.129,129,7a879c6bfa51b5d80401b84e031bf4ff2981bb8c,subdir=cc,target=android-8,rm=cc/libs/admob-sdk-android.jar,patch=admob.patch
Market Version:1.0.129
Market Version Code:129

View File

@ -0,0 +1,105 @@
diff --git a/cc/AndroidManifest.xml b/cc/AndroidManifest.xml
index d2a8dc2..a81106b 100644
--- a/cc/AndroidManifest.xml
+++ b/cc/AndroidManifest.xml
@@ -10,16 +10,6 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- <activity android:name="com.admob.android.ads.AdMobActivity"
- android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
- android:configChanges="orientation|keyboard|keyboardHidden" />
-
- <receiver android:name="com.admob.android.ads.analytics.InstallReceiver"
- android:exported="true">
- <intent-filter>
- <action android:name="com.android.vending.INSTALL_REFERRER" />
- </intent-filter>
- </receiver>
<activity android:name=".ui.AudioRecorder"></activity>
<activity android:name=".ui.Downloader"
diff --git a/cc/res/layout-land/player.xml b/cc/res/layout-land/player.xml
index 0c2e9ed..f9ef3a3 100644
--- a/cc/res/layout-land/player.xml
+++ b/cc/res/layout-land/player.xml
@@ -4,11 +4,6 @@
android:layout_width="fill_parent" android:background="#000"
android:layout_height="fill_parent" android:padding="0dip">
- <com.admob.android.ads.AdView android:id="@+id/ad"
- android:layout_width="fill_parent" android:layout_height="48dip"
- myapp:backgroundColor="#FF0000" myapp:primaryTextColor="#FFFFFF"
- myapp:secondaryTextColor="#CCCCCC" android:layout_alignParentTop="true"/>
-
<ImageButton android:id="@+id/previous"
android:layout_height="43dip" android:layout_width="65dip"
android:src="@drawable/player_65_previous" android:layout_alignParentLeft="true"
@@ -59,7 +54,7 @@
android:layout_width="fill_parent" android:singleLine="true"
android:ellipsize="none" android:textColor="#000" android:layout_x="0dip"
android:text="" android:background="#c7cbd7"
- android:layout_below="@id/ad" android:layout_height="35dip" />
+ android:layout_alignParentTop="true" android:layout_height="35dip" />
<TextView android:textSize="20dp" android:id="@+id/title"
android:layout_width="fill_parent" android:layout_height="110dip"
diff --git a/cc/res/layout/player.xml b/cc/res/layout/player.xml
index 0cbcda3..ff7ecc9 100644
--- a/cc/res/layout/player.xml
+++ b/cc/res/layout/player.xml
@@ -4,11 +4,6 @@
android:layout_width="fill_parent" android:background="#000"
android:layout_height="fill_parent" android:padding="0dip">
- <com.admob.android.ads.AdView android:id="@+id/ad"
- android:layout_width="fill_parent" android:layout_height="48dip"
- myapp:backgroundColor="#FF0000" myapp:primaryTextColor="#FFFFFF"
- myapp:secondaryTextColor="#CCCCCC" android:layout_alignParentTop="true"/>
-
<ImageButton android:id="@+id/previous"
android:layout_height="70dip" android:layout_width="64dip"
android:src="@drawable/player_65_previous" android:layout_alignParentLeft="true"
@@ -62,7 +57,7 @@
android:layout_width="fill_parent" android:singleLine="true"
android:ellipsize="none" android:textColor="#000" android:layout_x="0dip"
android:text="" android:background="#c7cbd7"
- android:layout_below="@id/ad" android:layout_height="35dip" />
+ android:layout_alignParentTop="true" android:layout_height="35dip" />
<TextView android:textSize="20dp" android:id="@+id/title"
android:layout_width="fill_parent" android:layout_height="110dip"
diff --git a/cc/res/values/attrs.xml b/cc/res/values/attrs.xml
index 20298af..045e125 100644
--- a/cc/res/values/attrs.xml
+++ b/cc/res/values/attrs.xml
@@ -1,10 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <declare-styleable name="com.admob.android.ads.AdView">
- <attr name="backgroundColor" format="color" />
- <attr name="primaryTextColor" format="color" />
- <attr name="secondaryTextColor" format="color" />
- <attr name="keywords" format="string" />
- <attr name="refreshInterval" format="integer" />
- </declare-styleable>
</resources>
diff --git a/cc/res/xml/settings.xml b/cc/res/xml/settings.xml
index 11e40e5..38be7a4 100644
--- a/cc/res/xml/settings.xml
+++ b/cc/res/xml/settings.xml
@@ -34,10 +34,10 @@
android:key="canCollectData"
android:title="Allow data collection"
android:summary="Data helps us improve"
- android:defaultValue="true" />
+ android:defaultValue="false" />
<CheckBoxPreference
android:key="emailSecret"
android:title="Keep email address secret"
android:summary="Used for internal tracking only"
- android:defaultValue="false" />
-</PreferenceScreen>
\ No newline at end of file
+ android:defaultValue="true" />
+</PreferenceScreen>

View File

@ -1,12 +1,15 @@
License:GPLv3+
Category:Games
License:GPLv3+
Web Site:http://www.kirit.com/Missile%20intercept
Source Code:http://www.kirit.com/Missile%20intercept
Issue Tracker:http://support.felspar.com/Project:/Missile%20intercept
Summary:Missile Command style game
Description:
A game in the style of the classic Missile Command. Defend your cities from incoming
enemy missiles.
.
Market Version:0.5.1
Market Version Code:6

View File

@ -1,15 +1,16 @@
Use Built:Yes
Category:Games
License:Apache2
Web Site:http://code.google.com/p/solitaire-for-android/
Source Code:http://code.google.com/p/solitaire-for-android/source/checkout
Issue Tracker:http://code.google.com/p/solitaire-for-android/issues/list
Summary:Solitaire collection
Description:
Solitaire Collection of Klondike (Regular solitaire), Spider Solitaire,
and Freecell using the touchscreen interface. Features include multi-level
undo, animated card movement, and statistic/score tracking.
.
Repo Type:svn
Repo:http://solitaire-for-android.googlecode.com/svn/trunk/
@ -17,3 +18,4 @@ Build Version:1.12.2,450,30,target=android-8
Market Version:1.12.2
Market Version Code:450

View File

@ -1,8 +1,9 @@
License:BSD
Category:Games
License:BSD
Web Site:http://code.google.com/p/tiltmazes/
Source Code:http://code.google.com/p/tiltmazes/source/checkout
Issue Tracker:http://code.google.com/p/tiltmazes/issues/list
Summary:Logical puzzle game
Description:
A ball sits in a flat tray containing one or more squares (goals). The challenge is
@ -10,5 +11,7 @@ to guide the ball around the tray and collect all the squares. Tilt the tray to,
literally, start the ball rolling. The ball rolls in a straight line until it hits
a wall, you can then tilt again.
.
Market Version:1.2
Market Version Code:3

View File

@ -1,14 +1,15 @@
Use Built:Yes
Category:Office
License:Apache2
Web Site:http://www.swedroid.se/forum/showthread.php?t=11108
Source Code:https://github.com/liato/android-bankdroid
Issue Tracker:https://github.com/liato/android-bankdroid/issues
Summary:Banking application for Swedish banks
Description:
Checks your account balance at any of the major Swedish banks and can
display notifications on changes. Includes a widget.
.
Repo Type:git
Repo:https://github.com/liato/android-bankdroid.git
@ -20,7 +21,6 @@ Build Version:1.6.3,102,612aae755a82008f44a6,encoding=utf-8,prebuild=mkdir libs
unzip -j guava-r08.zip guava-r08/guava-r08.jar && \
rm *.zip && \
cd ..
Build Version:1.7.2,110,fec08e34a157a3e0b455,encoding=utf-8,prebuild=mkdir libs && \
cd libs && \
wget http://archive.apache.org/dist/commons/io/binaries/commons-io-2.0.1-bin.zip && \
@ -29,9 +29,7 @@ Build Version:1.7.2,110,fec08e34a157a3e0b455,encoding=utf-8,prebuild=mkdir libs
unzip -j guava-r08.zip guava-r08/guava-r08.jar && \
rm *.zip && \
cd ..
Build Version:1.7.3,115,!a08cab7e66c70e7b0f5c but wrong version code in repo
Build Version:1.8.0,120,899e4b957e512bf55254,encoding=utf-8,prebuild=mkdir libs && \
cd libs && \
wget http://archive.apache.org/dist/commons/io/binaries/commons-io-2.0.1-bin.zip && \
@ -51,10 +49,9 @@ Build Version:1.8.0,120,899e4b957e512bf55254,encoding=utf-8,prebuild=mkdir libs
# unzip -j guava-r08.zip guava-r08/guava-r08.jar && \
# rm *.zip && \
# cd ..
#Build fails on this version, same as previous version:
# res/values/styles.xml:62: error: Error retrieving parent for item: No resource found that matches the given name 'android:WindowTitleBackground'
#Build Version:1.8.1,121,9f626b0dedb01cb90a16fb127a041c5f3dd1c579,target=android-9,encoding=utf-8,prebuild=mkdir libs && \
#Build Version:1.8.1,121,9f626b0dedb01cb90a16fb127a041c5f3dd1c579,target=android-10,encoding=utf-8,prebuild=mkdir libs && \
# cd libs && \
# wget http://archive.apache.org/dist/commons/io/binaries/commons-io-2.0.1-bin.zip && \
# unzip -j commons-io-2.0.1-bin.zip commons-io-2.0.1/commons-io-2.0.1.jar && \
@ -62,7 +59,6 @@ Build Version:1.8.0,120,899e4b957e512bf55254,encoding=utf-8,prebuild=mkdir libs
# unzip -j guava-r08.zip guava-r08/guava-r08.jar && \
# rm *.zip && \
# cd ..
Market Version:1.8.4
Market Version Code:125

View File

@ -1,10 +1,9 @@
Use Built:Yes
License:GPLv3
Category:Development
License:GPLv3
Web Site:https://github.com/rtyley/agit
Source Code:https://github.com/rtyley/agit
Issue Tracker:https://github.com/rtyley/agit/issues
Donate:
Summary:A git client
Description:
A git client - currently read-only.
@ -16,3 +15,4 @@ Repo:https://github.com/rtyley/agit.git
#No builds yet - another 'need to figure out how to make maven work' scenario
Market Version:1.25
Market Version Code:110900321

View File

@ -1,12 +1,15 @@
Disabled:See license
License:Unknown
Category:Games
License:Unknown
Web Site:http://github.com/martynhaigh/Tiny-Open-Source-Violin
Source Code:http://github.com/martynhaigh/Tiny-Open-Source-Violin
Issue Tracker:http://github.com/martynhaigh/Tiny-Open-Source-Violin
Summary:A tiny open source violin
Description:
The world's tiniest open source violin.
.
Market Version:1.3
Market Version Code:9

View File

@ -1,8 +1,9 @@
License:GPLv2
Category:Office
License:GPLv2
Web Site:https://github.com/matburt/mobileorg-android/wiki
Issue Tracker:https://github.com/matburt/mobileorg-android/issues
Source Code:https://github.com/matburt/mobileorg-android
Issue Tracker:https://github.com/matburt/mobileorg-android/issues
Summary:TODO/task management application
Description:
TODO/task management based on emacs org-mode files.
@ -13,6 +14,6 @@ Repo:https://github.com/matburt/mobileorg-android.git
#Needs dropbox consumer key
#Build Version:0.5.2,51,38dfe967ee99c71b12b8
Market Version:0.7.1
Market Version Code:71
Market Version:0.6.2
Market Version Code:62

View File

@ -1,16 +1,19 @@
Use Built:Yes
License:GPLv2
Category:Games
License:GPLv2
Web Site:http://mobilepearls.com
Source Code:https://github.com/mobilepearls/com.mobilepearls.sokoban
Issue Tracker:https://github.com/mobilepearls/com.mobilepearls.sokoban/issues
Summary:A Sokoban game for Android
Description:
A puzzle game.
.
Repo Type:git
Repo:https://github.com/mobilepearls/com.mobilepearls.sokoban.git
Build Version:1.11,12,48e1976f9d9881adb70e
Market Version:1.11
Market Version Code:12

View File

@ -1,10 +1,10 @@
Use Built:Yes
License:GPLv3
Category:Office
License:GPLv3
Web Site:http://acal.me
Source Code:http://gitorious.org/acal
Issue Tracker:
Donate:http://acal.me/wiki/Donating
Summary:Calendar - CalDAV client
Description:
A CalDAV client, allowing you to directly access a calendar on a CalDAV
@ -25,6 +25,8 @@ Build Version:1.3),32,r1.3,target=android-8
Build Version:1.31,33,r1.31,target=android-8
Build Version:1.32,34,r1.32,target=android-8
Build Version:1.33,35,r1.33,target=android-8
Build Version:1.34,36,r1.34,target=android-8
Market Version:1.35
Market Version Code:37
Market Version:1.33
Market Version Code:35

View File

@ -1,9 +1,10 @@
Use Built:Yes
License:GPLv3+
AntiFeatures:NonFreeNet
Category:Multimedia
License:GPLv3+
Web Site:http://code.google.com/p/mp3tunes/
Source Code:http://code.google.com/p/mp3tunes/source/browse/
Issue Tracker:http://androidmp3.uservoice.com/
Summary:Client for listening to music stored in an MP3tunes locker
Description:
MP3tunes is a music storage service, where users can upload their music files and stream them from anywhere.
@ -16,7 +17,6 @@ Repo:https://mp3tunes.googlecode.com/hg/
Build Version:3.7,89,ba4550305733,target=android-4,fixapos=yes
Build Version:5.1,92,!No source in repo
AntiFeatures:NonFreeNet
Market Version:5.1
Market Version Code:92

View File

@ -1,17 +1,16 @@
Disabled:Doesn't build for me
#build/com.namelessdev.mpdroid/MPDroid/res/values/styles.xml:18: error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Widget.Holo.ActionBar'.
License:Apache2
Category:Multimedia
#build/com.namelessdev.mpdroid/MPDroid/res/values/styles.xml:18: error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Widget.Holo.ActionBar'.
License:Apache2
Web Site:https://github.com/dreamteam69/dmix
Source Code:https://github.com/dreamteam69/dmix
Issue Tracker:https://github.com/dreamteam69/dmix/issues
Summary:MPD client
Description:
An MPD client which supports streaming. Can fetch cover art from last.fm.
.
Repo Type:git
Repo:https://github.com/dreamteam69/dmix.git
@ -21,3 +20,4 @@ cd ../JMPDComm/ && ant && mkdir ../MPDroid/libs/ && cp ../JMPDComm/JMPDComm.jar
Market Version:0.7
Market Version Code:18

View File

@ -1,11 +1,14 @@
License:Apache2
Category:Internet
License:Apache2
Web Site:http://www.nephoapp.com/
Source Code:https://github.com/nephoapp/anarxiv
Issue Tracker:
Summary:arxiv.org client
Description:
Browse papers released on arxiv.org
.
Market Version:0.3
Market Version Code:3

View File

@ -1,9 +1,9 @@
Use Built:Yes
License:GPLv3+
Category:System
License:GPLv3+
Web Site:http://github.com/nexes/Android-File-Manager
Source Code:http://github.com/nexes/Android-File-Manager
Issue Tracker:http://github.com/nexes/Android-File-Manager/issues
Summary:A simple file browser and manager
Description:
A simple file browser and manager.
@ -18,3 +18,4 @@ Build Version:2.1.8,218,edf793a782861ae31648
Market Version:2.1.8
Market Version Code:218

31
metadata/com.prey.txt Normal file
View File

@ -0,0 +1,31 @@
Disabled:C2DM API key required
#NonFreeDep because it requires the Market app to be installed, for C2DM
AntiFeatures:NonFreeNet,NonFreeDep
Category:System
License:GPLv3
Web Site:http://preyproject.com
Source Code:https://github.com/prey/prey-android-client/
Issue Tracker:https://github.com/prey/prey-android-client/issues
Summary:Anti-theft software
Description:
Track down your lost or stolen phone or tablet.
Prey lets you keep track of all your devices easily on one place. Supports:
- GPS + Wifi geo-location.
- SIM change detection.
- SMS or Push (On Demand) activation (2.2+).
- Lock phone/tablet for privacy (2.2+).
- Uninstall protection (2.2+).
- Loud alarm sound.
- Alert messages to user.
.
Repo Type:git
Repo:https://github.com/prey/prey-android-client
# TODO: c2dm (aka "push API") seems to require an API key from Google, see http://code.google.com/android/c2dm/index.html
Build Version:0.5,34,8934cda82af81580a26cf4de233da15feaab1dfd,prebuild=echo "ask-for-password=true\nprey-minor-version=0\nprey-versionon=0.5\nprey-subdomain=control\nprey-domain=preyproject.com\n#c2dm\nc2dm-mail=\nc2dm-action=\nc2dm-message-sync=" > res/raw/config
Market Version:0.5
Market Version Code:33

View File

@ -1,9 +1,9 @@
License:GPLv3
Category:Multimedia
License:GPLv3
Web Site:http://code.google.com/p/music-practice-tools/
Source Code:http://code.google.com/p/music-practice-tools/source/checkout
Issue Tracker:http://code.google.com/p/music-practice-tools/issues/list
Donate:
Summary:Tools for musicians
Description:
Tools for musicians, including a chromoatic tuner, a metronome, and a pitch
@ -17,3 +17,4 @@ Build Version:1.0,1,109c0bddf346
Market Version:1.0
Market Version Code:1

View File

@ -1,9 +1,9 @@
Use Built:Yes
License:Apache2
Category:Games
License:Apache2
Web Site:http://www.replicaisland.net/
Source Code:http://code.google.com/p/replicaisland/source/checkout
Issue Tracker:http://code.google.com/p/replicaisland/issues/list
Summary:Side-scrolling platform game
Description:
Guide the Android robot through 40 action-packed platforming levels on a quest to
@ -19,3 +19,4 @@ Build Version:1.4,14,7
Market Version:1.4
Market Version Code:14

View File

@ -1,9 +1,9 @@
Use Built:Yes
License:Apache2
Category:Multimedia
License:Apache2
Web Site:http://code.google.com/p/ringdroid/
Source Code:http://code.google.com/p/ringdroid/source/checkout
Issue Tracker:
Summary:Ringtone editor
Description:
An application for editing and creating your own ringtones, alarms, and notification
@ -17,3 +17,4 @@ Build Version:2.5,20500,64,target=android-8
Market Version:2.5
Market Version Code:20500

View File

@ -1,9 +1,9 @@
Use Built:Yes
License:Apache2
Category:Multimedia
License:Apache2
Web Site:http://sites.google.com/site/roozenandroidapps/home/sound-manager
Source Code:http://code.google.com/p/app-soundmanager/source/checkout
Issue Tracker:http://code.google.com/p/app-soundmanager/issues/list
Summary:Volume level scheduler
Description:
Exposes all the audio volume controls, provides quick access to
@ -11,6 +11,7 @@ ringmode and vibration settings, and allows you to set timers to
automatically change volumes at set times on any given day of the
week.
.
Repo Type:svn
Repo:http://app-soundmanager.googlecode.com/svn/tags/

View File

@ -1,10 +1,9 @@
Use Built:Yes
License:New BSD
Category:Games
License:New BSD
Web Site:http://code.google.com/p/minedroid/
Source Code:http://code.google.com/p/minedroid/source/checkout
Issue Tracker:http://code.google.com/p/minedroid/issues/list
Donate:
Summary:Experimental Minecraft Client
Description:
An experimental Minecraft client.
@ -15,4 +14,3 @@ Repo:http://minedroid.googlecode.com/svn/trunk/
#Needs DroidRUGL to build.
#Build Version:Extra lucky bugfix edition,13,47,subdir=MineDroid

View File

@ -1,11 +1,14 @@
License:GPLv3+
Category:Office
License:GPLv3+
Web Site:http://code.google.com/p/desktoplabel/
Source Code:http://code.google.com/p/desktoplabel/source/checkout
Issue Tracker:http://code.google.com/p/desktoplabel/issues/list
Summary:Custom desktop label widgets
Description:
Allows you to add custom widgets to your 'desktop' to label things.
.
Market Version:1.3.0
Market Version Code:6

View File

@ -1,9 +1,9 @@
License:GPLv3
Category:Games
License:GPLv3
Web Site:http://code.google.com/p/hotdeath/
Source Code:http://code.google.com/p/hotdeath/source/checkout
Issue Tracker:http://code.google.com/p/hotdeath/issues/list
Donate:
Summary:Card game
Description:
A variant of the classic card game Uno
@ -16,3 +16,4 @@ Build Version:1.0.2,3,26
Market Version:1.0.2
Market Version Code:3

View File

@ -1,9 +1,9 @@
Use Built:Yes
License:Apache2
Category:Multimedia
License:Apache2
Web Site:http://telecapoland.github.com/jamendo-android/
Source Code:http://github.com/telecapoland/jamendo-android
Issue Tracker:http://github.com/telecapoland/jamendo-android/issues
Summary:Jamendo (FaiF music) player
Description:
A music player tied to the Jamendo site, a large resource of FaiF music.
@ -20,3 +20,4 @@ Build Version:1.0.3 [BETA],34,!No source in repo
Market Version:1.0.4 [BETA]
Market Version Code:35

View File

@ -1,11 +1,14 @@
License:Apache2
Category:System
License:Apache2
Web Site:http://www.tbray.org/ongoing/When/201x/2010/04/25/LifeSaver-Lessons
Source Code:http://code.google.com/p/lifesaver/
Issue Tracker:http://code.google.com/p/lifesaver/issues/list
Summary:SMS and call log backup/restore
Description:
A simple backup and restore of your SMS and call logs.
.
Market Version:1.0
Market Version Code:3

View File

@ -1,15 +1,18 @@
Disabled:Can't identify release
Use Built:Yes
Category:Games
License:Unknown
Web Site:https://github.com/thibault/OpenQOTD
Source Code:https://github.com/thibault/OpenQOTD
Issue Tracker:https://github.com/thibault/OpenQOTD/issues
Summary:Widget to display random quotes
Description:
A simple widget that displays random quotes in English or French.
.
Repo Type:git
Repo:https://github.com/thibault/OpenQOTD.git
Market Version:1.0.1
Market Version Code:2

View File

@ -1,9 +1,9 @@
Use Built:Yes
License:Apache2
Category:Office
License:Apache2
Web Site:http://code.google.com/p/and-bookworm/
Source Code:http://code.google.com/p/and-bookworm/source/checkout
Issue Tracker:http://code.google.com/p/and-bookworm/issues/list
Summary:Book collection manager
Description:
BookWorm allows you to keep track of books you have read and those you
@ -20,3 +20,4 @@ Build Version:1.0.18,19,574
Market Version:1.0.18
Market Version Code:19

View File

@ -0,0 +1,21 @@
Category:Games
License:GPLv3
Web Site:http://code.google.com/p/shortyz/
Source Code:http://code.google.com/p/shortyz/source/checkout
Issue Tracker:http://code.google.com/p/shortyz/issues/list
Summary:Crossword game
Description:
Crossword game that downloads puzzles from a variety of internet locations.
.
Repo Type:hg
Repo:https://code.google.com/p/shortyz/
Build Version:3.1.0,30100,1ce970a00083,subdir=shortyz,target=android-11,prebuild=\
cd ../puzlib && mvn package && mv target/*.jar ../shortyz/libs && rm -rf target &&\
cd ../shortyz
Market Version:3.1.7
Market Version Code:30107

View File

@ -0,0 +1,16 @@
Category:Multimedia
License:EPLv1
Web Site:http://united-coders.com/gpodroid
Source Code:https://github.com/gpodder/GpodRoid
Issue Tracker:https://github.com/gpodder/GpodRoid/issues
Summary:gpodder.net client
Description:
A gpodder.net podcasting client.
.
Repo Type:git
Repo:git://github.com/gpodder/GpodRoid.git
Build Version:0.4.7,12,0.4.7,target=android-7,prebuild=mv jars libs

View File

@ -1,10 +1,9 @@
License:GPLv3
Category:Internet
License:GPLv3
Web Site:https://github.com/voidcode/Diaspora-Webclient
Source Code:https://github.com/voidcode/Diaspora-Webclient
Issue Tracker:
Donate:
Summary:Diaspora Client
Description:
Client for the Diaspora social network.
@ -13,5 +12,8 @@ Client for the Diaspora social network.
Repo Type:git
Repo:https://github.com/voidcode/Diaspora-Webclient.git
Build Version:1.3,3,26d7120fea1af5835a17537bebeef6df523d57e6,prebuild=rm -rf gen/ && rm -rf bin/,target=android-9
Build Version:1.3,3,26d7120fea1af5835a17537bebeef6df523d57e6,prebuild=rm -rf gen/ && rm -rf bin/,target=android-10
Market Version:1.5
Market Version Code:6

View File

@ -1,8 +1,9 @@
License:GPLv2
Category:System
License:GPLv2
Web Site:http://code.google.com/p/wifikeyboard/
Source Code:http://code.google.com/p/wifikeyboard/source/checkout
Issue Tracker:http://code.google.com/p/wifikeyboard/issues/list
Summary:Remote WiFi keyboard
Description:
Use a remote browser over WiFi as a keyboard for the Android device.

View File

@ -1,9 +1,10 @@
Use Built:Yes
License:Expat
AntiFeatures:NonFreeNet
Category:Office
License:Expat
Web Site:http://remembeer.info
Source Code:https://code.discordians.net/projects/remembeer/repository
Issue Tracker:https://code.discordians.net/projects/remembeer/issues
Summary:Track and rate the beers you drink.
Description:
Remembeer lets you track and rate the beers you drink. No more trying
@ -17,7 +18,6 @@ Repo:git://code.discordians.net/srv/git/remembeer.git
Build Version:1.2.2,48,c9d64e35964e9c445749aa02e470354b5788d8b4,target=android-4,subdir=android,prebuild=mv lib libs
Build Version:1.3.0,50,319231627d207cf7fb1d2ac23ada0ffdd486230c,target=android-4,subdir=android,prebuild=mv lib libs
AntiFeatures:NonFreeNet
Market Version:1.3.0
Market Version Code:50

View File

@ -1,10 +1,9 @@
Use Built:Yes
License:AGPL
Category:Internet
License:AGPL
Web Site:http://blog.webworxshop.com/projects/swallowcatcher
Source Code:http://gitorious.org/swallowcatcher
Issue Tracker:
Donate:
Summary:Podcast client
Description:
A podcatcher.

View File

@ -1,9 +1,9 @@
Use Built:Yes
License:MIT
Category:Internet
License:MIT
Web Site:https://github.com/jberkel/gist-it#readme
Source Code:https://github.com/jberkel/gist-it
Issue Tracker:https://github.com/jberkel/gist-it/issues
Summary:Android gist API client written in Scala
Description:
Create and edit gists (snippets of text hosted at https://gist.github.com) with
@ -12,5 +12,7 @@ this Android app.
Repo Type:git
Repo:https://github.com/jberkel/gist-it.git
Market Version:0.1.4
Market Version Code:5

View File

@ -1,25 +1,23 @@
Use Built:Yes
License:Apache2
Disabled:Non-free blob
Category:System
License:Apache2
Web Site:https://github.com/jberkel/sms-backup-plus#readme
Source Code:https://github.com/jberkel/sms-backup-plus#readme
Issue Tracker:https://github.com/jberkel/sms-backup-plus/issues
Summary:Backup SMS and call logs to IMAP
Description:
Backups up SMS and call log data from the device to an IMAP server, or
Gmail.
There are newer versions of this application avaiable elsewhere, but
these include non-free software components and are not available via
F-Droid.
.
Repo Type:git
Repo:https://github.com/jberkel/sms-backup-plus.git
Build Version:1.4.3,1404,1.4.3
Build Version:1.4.4,1405,1.4.4,target=android-9,prebuild=mv lib libs
Build Version:1.4.5,1406,!Non-free blob now included
Build Version:1.4.4,1405,1.4.4,target=android-10,prebuild=mv lib libs
Build Version:1.4.5,1406,1.4.5,target=android-10,prebuild=mv lib libs
Market Version:1.4.5
Market Version Code:1406

View File

@ -0,0 +1,20 @@
Category:Games
License:GPLv3
Web Site:https://gitorious.org/chesswalk
Source Code:https://gitorious.org/chesswalk
Issue Tracker:
Summary:Chess game and FICS client
Description:
Play chess offline, or play online at FICS.
.
Repo Type:git
Repo:https://git.gitorious.org/chesswalk/chesswalk.git
Build Version:1.5,7,4007173d,buildjni=yes
Update Check Mode:Market
Market Version:1.4
Market Version Code:6

Some files were not shown because too many files have changed in this diff Show More