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:
commit
bd136134e1
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,5 +1,6 @@
|
||||
config.py
|
||||
repo/
|
||||
logs/
|
||||
built/
|
||||
build/
|
||||
build_*/
|
||||
|
25
README
25
README
@ -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
279
build.py
@ -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'
|
||||
|
||||
|
@ -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
597
common.py
@ -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
|
||||
|
||||
|
1
marketcheck/.gitignore
vendored
1
marketcheck/.gitignore
vendored
@ -1 +0,0 @@
|
||||
*.class
|
@ -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.
@ -1,2 +0,0 @@
|
||||
#!/bin/sh
|
||||
javac -classpath androidmarketapi-0.6.jar test.java
|
Binary file not shown.
@ -1,2 +0,0 @@
|
||||
#!/bin/sh
|
||||
java -classpath ".:androidmarketapi-0.6.jar" test $1 $2 $3
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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
|
||||
|
||||
|
17
metadata/aarddict.android.txt
Normal file
17
metadata/aarddict.android.txt
Normal 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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
25
metadata/com.appengine.paranoid_android.lost.txt
Normal file
25
metadata/com.appengine.paranoid_android.lost.txt
Normal 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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
28
metadata/com.bottleworks.dailymoney.txt
Normal file
28
metadata/com.bottleworks.dailymoney.txt
Normal 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
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
20
metadata/com.chessclock.android.txt
Normal file
20
metadata/com.chessclock.android.txt
Normal 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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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/
|
||||
|
||||
|
@ -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
|
||||
|
20
metadata/com.episode6.android.appalarm.lite.txt
Normal file
20
metadata/com.episode6.android.appalarm.lite.txt
Normal 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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
25
metadata/com.jadn.cc.txt
Normal 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
|
||||
|
105
metadata/com.jadn.cc/admob.patch
Normal file
105
metadata/com.jadn.cc/admob.patch
Normal 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>
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
31
metadata/com.prey.txt
Normal 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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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/
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
21
metadata/com.totsp.crossword.shortyz.txt
Normal file
21
metadata/com.totsp.crossword.shortyz.txt
Normal 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
|
||||
|
16
metadata/com.unitedcoders.android.gpodroid.txt
Normal file
16
metadata/com.unitedcoders.android.gpodroid.txt
Normal 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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
20
metadata/cz.hejl.chesswalk.txt
Normal file
20
metadata/cz.hejl.chesswalk.txt
Normal 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
Loading…
Reference in New Issue
Block a user