mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-09 00:40:11 +01:00
Merge branch 'master' of git://gitorious.org/f-droid/fdroidserver
This commit is contained in:
commit
0b7ea34a85
13
build.py
13
build.py
@ -74,15 +74,14 @@ if not os.path.isdir(build_dir):
|
||||
|
||||
for app in apps:
|
||||
|
||||
if app['Disabled']:
|
||||
if options.package and options.package != app['id']:
|
||||
# Silent skip...
|
||||
pass
|
||||
elif app['Disabled']:
|
||||
print "Skipping %s: disabled" % app['id']
|
||||
elif not app['builds']:
|
||||
elif (not app['builds']) or app['Repo Type'] =='' or len(app['builds']) == 0:
|
||||
print "Skipping %s: no builds specified" % app['id']
|
||||
|
||||
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):
|
||||
|
||||
else:
|
||||
print "Processing " + app['id']
|
||||
|
||||
build_dir = 'build/' + app['id']
|
||||
|
267
common.py
267
common.py
@ -20,6 +20,7 @@ import glob, os, sys, re
|
||||
import shutil
|
||||
import subprocess
|
||||
import time
|
||||
import operator
|
||||
|
||||
def getvcs(vcstype, remote, local):
|
||||
if vcstype == 'git':
|
||||
@ -54,39 +55,26 @@ class vcs:
|
||||
|
||||
self.remote = remote
|
||||
self.local = local
|
||||
self.refreshed = False
|
||||
|
||||
# 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.
|
||||
def refreshlocal(self):
|
||||
if not os.path.exists(self.local):
|
||||
self.clone()
|
||||
else:
|
||||
self.reset()
|
||||
self.pull()
|
||||
|
||||
# Clone the remote repository. It must not already exist locally.
|
||||
def clone(self):
|
||||
assert False # Must be defined in child
|
||||
|
||||
# Reset the local repository. Remove changes, untracked files, etc.
|
||||
# Put the working tree to either the given revision, or to the HEAD
|
||||
# if not specified.
|
||||
def reset(self, rev=None):
|
||||
assert False # Must be defined in child
|
||||
|
||||
# Get new commits from the remote repository. Local must be clean.
|
||||
# Fetch would really be a better name, as this doesn't necessarily
|
||||
# (depending on the vcs) affect the local source tree or HEAD!
|
||||
def pull(self):
|
||||
assert False # Must be defined in child
|
||||
# Take the local repository to a clean version of the given revision, which
|
||||
# is specificed in the VCS's native format. Beforehand, the repository can
|
||||
# be dirty, or even non-existent. If the repository does already exist
|
||||
# locally, it will be updated from the origin, but only once in the
|
||||
# lifetime of the vcs object.
|
||||
def gotorevision(self, rev):
|
||||
raise VCSException("This VCS type doesn't define gotorevision")
|
||||
|
||||
# Initialise and update submodules
|
||||
def initsubmodules(self):
|
||||
assert False # Not supported unless overridden
|
||||
raise VCSException('Submodules not supported for this vcs type')
|
||||
|
||||
class vcs_git(vcs):
|
||||
|
||||
# If the local directory exists, but is somehow not a git repository, git
|
||||
# will traverse up the directory tree until it finds one that is (i.e.
|
||||
# fdroidserver) and then we'll proceed to destory it! This is called as
|
||||
# a safety check.
|
||||
def checkrepo(self):
|
||||
p = subprocess.Popen(['git', 'rev-parse', '--show-toplevel'],
|
||||
stdout=subprocess.PIPE, cwd=self.local)
|
||||
@ -94,28 +82,34 @@ class vcs_git(vcs):
|
||||
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],
|
||||
cwd=self.local) != 0:
|
||||
raise VCSException("Git reset failed")
|
||||
if subprocess.call(['git', 'clean', '-dfx'],
|
||||
cwd=self.local) != 0:
|
||||
def gotorevision(self, rev):
|
||||
if not os.path.exists(self.local):
|
||||
# Brand new checkout...
|
||||
if subprocess.call(['git', 'clone', self.remote, self.local]) != 0:
|
||||
raise VCSException("Git clone failed")
|
||||
self.checkrepo()
|
||||
else:
|
||||
self.checkrepo()
|
||||
# Discard any working tree changes...
|
||||
if subprocess.call(['git', 'reset', '--hard'], cwd=self.local) != 0:
|
||||
raise VCSException("Git reset failed")
|
||||
# Remove untracked files now, in case they're tracked in the target
|
||||
# revision (it happens!)...
|
||||
if subprocess.call(['git', 'clean', '-dfx'], cwd=self.local) != 0:
|
||||
raise VCSException("Git clean failed")
|
||||
if not self.refreshed:
|
||||
# Get latest commits and tags from remote...
|
||||
if subprocess.call(['git', 'fetch', '--tags', 'origin'],
|
||||
cwd=self.local) != 0:
|
||||
raise VCSException("Git fetch failed")
|
||||
self.refreshed = True
|
||||
# Check out the appropriate revision...
|
||||
if subprocess.call(['git', 'checkout', rev], cwd=self.local) != 0:
|
||||
raise VCSException("Git checkout failed")
|
||||
# Get rid of any uncontrolled files left behind...
|
||||
if subprocess.call(['git', 'clean', '-dfx'], cwd=self.local) != 0:
|
||||
raise VCSException("Git clean failed")
|
||||
|
||||
def pull(self):
|
||||
self.checkrepo()
|
||||
# Might need tags that aren't on a branch.
|
||||
if subprocess.call(['git', 'fetch', '--tags', 'origin'],
|
||||
cwd=self.local) != 0:
|
||||
raise VCSException("Git fetch failed")
|
||||
|
||||
def initsubmodules(self):
|
||||
self.checkrepo()
|
||||
if subprocess.call(['git', 'submodule', 'init'],
|
||||
@ -128,6 +122,10 @@ class vcs_git(vcs):
|
||||
|
||||
class vcs_gitsvn(vcs):
|
||||
|
||||
# If the local directory exists, but is somehow not a git repository, git
|
||||
# will traverse up the directory tree until it finds one that is (i.e.
|
||||
# fdroidserver) and then we'll proceed to destory it! This is called as
|
||||
# a safety check.
|
||||
def checkrepo(self):
|
||||
p = subprocess.Popen(['git', 'rev-parse', '--show-toplevel'],
|
||||
stdout=subprocess.PIPE, cwd=self.local)
|
||||
@ -135,34 +133,40 @@ class vcs_gitsvn(vcs):
|
||||
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'
|
||||
def gotorevision(self, rev):
|
||||
if not os.path.exists(self.local):
|
||||
# Brand new checkout...
|
||||
if subprocess.call(['git', 'svn', 'clone', self.remote, self.local]) != 0:
|
||||
raise VCSException("Git clone failed")
|
||||
self.checkrepo()
|
||||
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:
|
||||
self.checkrepo()
|
||||
# Discard any working tree changes...
|
||||
if subprocess.call(['git', 'reset', '--hard'], cwd=self.local) != 0:
|
||||
raise VCSException("Git reset failed")
|
||||
# Remove untracked files now, in case they're tracked in the target
|
||||
# revision (it happens!)...
|
||||
if subprocess.call(['git', 'clean', '-dfx'], cwd=self.local) != 0:
|
||||
raise VCSException("Git clean failed")
|
||||
if not self.refreshed:
|
||||
# Get new commits and tags from repo...
|
||||
if subprocess.call(['git', 'svn', 'rebase'],
|
||||
cwd=self.local) != 0:
|
||||
raise VCSException("Git svn rebase failed")
|
||||
self.refreshed = True
|
||||
# Figure out the git commit id corresponding to the svn revision...
|
||||
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")
|
||||
# Check out the appropriate revision...
|
||||
if subprocess.call(['git', 'checkout', rev], cwd=self.local) != 0:
|
||||
raise VCSException("Git checkout failed")
|
||||
# Get rid of any uncontrolled files left behind...
|
||||
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):
|
||||
|
||||
def userargs(self):
|
||||
@ -172,77 +176,70 @@ class vcs_svn(vcs):
|
||||
'--password', self.password,
|
||||
'--non-interactive']
|
||||
|
||||
def clone(self):
|
||||
if subprocess.call(['svn', 'checkout', self.remote, self.local] +
|
||||
self.userargs()) != 0:
|
||||
raise VCSException("Svn checkout failed")
|
||||
|
||||
def reset(self, rev=None):
|
||||
if rev is None:
|
||||
revargs = []
|
||||
def gotorevision(self, rev):
|
||||
if not os.path.exists(self.local):
|
||||
if subprocess.call(['svn', 'checkout', self.remote, self.local] +
|
||||
self.userargs()) != 0:
|
||||
raise VCSException("Svn checkout failed")
|
||||
else:
|
||||
revargs = ['-r', rev]
|
||||
for svncommand in (
|
||||
'svn revert -R .',
|
||||
r"svn status | awk '/\?/ {print $2}' | xargs rm -rf"):
|
||||
if subprocess.call(svncommand, cwd=self.local,
|
||||
shell=True) != 0:
|
||||
raise VCSException("Svn reset failed")
|
||||
for svncommand in (
|
||||
'svn revert -R .',
|
||||
r"svn status | awk '/\?/ {print $2}' | xargs rm -rf"):
|
||||
if subprocess.call(svncommand, cwd=self.local,
|
||||
shell=True) != 0:
|
||||
raise VCSException("Svn reset failed")
|
||||
if not self.refreshed:
|
||||
if subprocess.call(['svn', 'update'] +
|
||||
self.userargs(), cwd=self.local) != 0:
|
||||
raise VCSException("Svn update failed")
|
||||
self.refreshed = True
|
||||
revargs = ['-r', rev]
|
||||
if subprocess.call(['svn', 'update', '--force'] + revargs +
|
||||
self.userargs(), cwd=self.local) != 0:
|
||||
raise VCSException("Svn update failed")
|
||||
|
||||
def pull(self):
|
||||
if subprocess.call(['svn', 'update'] +
|
||||
self.userargs(), cwd=self.local) != 0:
|
||||
raise VCSException("Svn update failed")
|
||||
|
||||
class vcs_hg(vcs):
|
||||
|
||||
def clone(self):
|
||||
if subprocess.call(['hg', 'clone', self.remote, self.local]) !=0:
|
||||
raise VCSException("Hg clone failed")
|
||||
|
||||
def reset(self, rev=None):
|
||||
if rev is None:
|
||||
revargs = []
|
||||
def gotorevision(self, rev):
|
||||
if not os.path.exists(self.local):
|
||||
if subprocess.call(['hg', 'clone', self.remote, self.local]) !=0:
|
||||
raise VCSException("Hg clone failed")
|
||||
else:
|
||||
revargs = [rev]
|
||||
if subprocess.call('hg status -u | xargs rm -rf',
|
||||
cwd=self.local, shell=True) != 0:
|
||||
raise VCSException("Hg clean failed")
|
||||
if subprocess.call('hg status -u | xargs rm -rf',
|
||||
cwd=self.local, shell=True) != 0:
|
||||
raise VCSException("Hg clean failed")
|
||||
if not self.refreshed:
|
||||
if subprocess.call(['hg', 'pull'],
|
||||
cwd=self.local) != 0:
|
||||
raise VCSException("Hg pull failed")
|
||||
self.refreshed = True
|
||||
revargs = [rev]
|
||||
if subprocess.call(['hg', 'checkout', '-C'] + revargs,
|
||||
cwd=self.local) != 0:
|
||||
raise VCSException("Hg checkout failed")
|
||||
|
||||
def pull(self):
|
||||
if subprocess.call(['hg', 'pull'],
|
||||
cwd=self.local) != 0:
|
||||
raise VCSException("Hg pull failed")
|
||||
|
||||
class vcs_bzr(vcs):
|
||||
|
||||
def clone(self):
|
||||
if subprocess.call(['bzr', 'branch', self.remote, self.local]) != 0:
|
||||
raise VCSException("Bzr branch failed")
|
||||
|
||||
def reset(self, rev=None):
|
||||
if rev is None:
|
||||
revargs = []
|
||||
def gotorevision(self, rev):
|
||||
if not os.path.exists(self.local):
|
||||
if subprocess.call(['bzr', 'branch', self.remote, self.local]) != 0:
|
||||
raise VCSException("Bzr branch failed")
|
||||
else:
|
||||
revargs = ['-r', rev]
|
||||
if subprocess.call(['bzr', 'clean-tree', '--force',
|
||||
'--unknown', '--ignored'], cwd=self.local) != 0:
|
||||
raise VCSException("Bzr revert failed")
|
||||
if subprocess.call(['bzr', 'clean-tree', '--force',
|
||||
'--unknown', '--ignored'], cwd=self.local) != 0:
|
||||
raise VCSException("Bzr revert failed")
|
||||
if not self.refreshed:
|
||||
if subprocess.call(['bzr', 'pull'],
|
||||
cwd=self.local) != 0:
|
||||
raise VCSException("Bzr update failed")
|
||||
self.refreshed = True
|
||||
revargs = ['-r', rev]
|
||||
if subprocess.call(['bzr', 'revert'] + revargs,
|
||||
cwd=self.local) != 0:
|
||||
raise VCSException("Bzr revert failed")
|
||||
|
||||
def pull(self):
|
||||
if subprocess.call(['bzr', 'pull'],
|
||||
cwd=self.local) != 0:
|
||||
raise VCSException("Bzr update failed")
|
||||
|
||||
|
||||
# Get the type expected for a given metadata field.
|
||||
def metafieldtype(name):
|
||||
@ -548,9 +545,6 @@ class MetaDataException(Exception):
|
||||
# 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'])
|
||||
@ -558,8 +552,8 @@ def prepare_source(vcs, app, build, build_dir, sdk_path, ndk_path, javacc_path,
|
||||
root_dir = build_dir
|
||||
|
||||
# Get a working copy of the right revision...
|
||||
print "Resetting repository to " + build['commit']
|
||||
vcs.reset(build['commit'])
|
||||
print "Getting source for revision " + build['commit']
|
||||
vcs.gotorevision(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...
|
||||
@ -632,7 +626,9 @@ def prepare_source(vcs, app, build, build_dir, sdk_path, ndk_path, javacc_path,
|
||||
|
||||
# Delete unwanted file...
|
||||
if build.has_key('rm'):
|
||||
os.remove(os.path.join(build_dir, build['rm']))
|
||||
dest = os.path.join(build_dir, build['rm'])
|
||||
if os.path.exists(dest):
|
||||
os.remove(dest)
|
||||
|
||||
# Fix apostrophes translation files if necessary...
|
||||
if build.get('fixapos', 'no') == 'yes':
|
||||
@ -821,3 +817,20 @@ class KnownApks:
|
||||
if apkname in self.apks:
|
||||
return self.apks[apkname]
|
||||
return None
|
||||
|
||||
def getlatest(self, num):
|
||||
apps = {}
|
||||
for apk, app in self.apks.iteritems():
|
||||
appid, added = app
|
||||
if added:
|
||||
if appid in apps:
|
||||
if apps[appid] > added:
|
||||
apps[appid] = added
|
||||
else:
|
||||
apps[appid] = added
|
||||
sortedapps = sorted(apps.iteritems(), key=operator.itemgetter(1))[-num:]
|
||||
lst = []
|
||||
for app, added in sortedapps:
|
||||
lst.append(app)
|
||||
return lst
|
||||
|
||||
|
26
metadata/apps.droidnotify.txt
Normal file
26
metadata/apps.droidnotify.txt
Normal file
@ -0,0 +1,26 @@
|
||||
Category:System
|
||||
License:GPLv3
|
||||
Web Site:https://code.google.com/p/droid-notify/
|
||||
Source Code:https://code.google.com/p/droid-notify/source/browse/
|
||||
Issue Tracker:https://code.google.com/p/droid-notify/issues/list
|
||||
Donate:https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=43V2NJQH5BQAA
|
||||
|
||||
Summary:Notification management tool
|
||||
Description:
|
||||
This application will display a popup window for Missed Calls, Text Messages, Calendar Events and Emails (K-9 email).
|
||||
It is extremely customizable with many options to suit your needs and style.
|
||||
.
|
||||
|
||||
Repo Type:svn
|
||||
Repo:http://droid-notify.googlecode.com/svn/trunk
|
||||
|
||||
Build Version:2.20,27,707,patch=facebook.patch,prebuild=mv lib/ libs/ \
|
||||
&& git clone git://github.com/facebook/facebook-android-sdk.git \
|
||||
&& cp facebook-android-sdk/facebook/default.properties facebook-android-sdk/facebook/project.properties \
|
||||
&& cp build.xml facebook-android-sdk/facebook/ \
|
||||
&& cp local.properties facebook-android-sdk/facebook/
|
||||
|
||||
Update Check Mode:Market
|
||||
Market Version:2.21
|
||||
Market Version Code:28
|
||||
|
10
metadata/apps.droidnotify/facebook.patch
Normal file
10
metadata/apps.droidnotify/facebook.patch
Normal file
@ -0,0 +1,10 @@
|
||||
Index: project.properties
|
||||
===================================================================
|
||||
--- a/project.properties (revision 707)
|
||||
+++ b/project.properties (working copy)
|
||||
@@ -9,4 +9,4 @@
|
||||
|
||||
# Project target.
|
||||
target=android-8
|
||||
-android.library.reference.1=../com_facebook_android
|
||||
+android.library.reference.1=facebook-android-sdk/facebook
|
30
metadata/com.axelby.podax.txt
Normal file
30
metadata/com.axelby.podax.txt
Normal file
@ -0,0 +1,30 @@
|
||||
Category:Multimedia
|
||||
License:BSD
|
||||
Web Site:https://market.android.com/details?id=com.axelby.podax
|
||||
Source Code:https://github.com/thasmin/Podax
|
||||
Issue Tracker:https://github.com/thasmin/Podax/issues
|
||||
|
||||
Summary:podcast downloader and player
|
||||
Description:
|
||||
It automatically downloads new podcasts on an RSS feed, has a widget for easy control, and can import subscriptions from Google Reader.
|
||||
Features include:
|
||||
- keeping a list of subscriptions
|
||||
- downloading new podcasts when they are available
|
||||
- importing subscriptions from OPML
|
||||
- two widgets for easy pausing and resuming
|
||||
- discover popular podcasts from other Podax listeners
|
||||
.
|
||||
|
||||
Repo Type:git
|
||||
Repo:git://github.com/thasmin/Podax.git
|
||||
|
||||
# this force closes on my device
|
||||
#Build Version:1.3,9,e44055a50fe5f4457f17c70666e3683bd7818fc1,target=android-7
|
||||
#Build Version:2.0,10,7141fee3933a580556121a01c60da04e9f37f7ac,target=android-7
|
||||
#Build Version:2.1,11,ab60ff786c0e050c94979f4801330c4f226e26d7,target=android-7
|
||||
Build Version:2.11,12,13d0e30198d96b4cd7b1a87065a1b8cf3ed578f4,target=android-7
|
||||
|
||||
Update Check Mode:Market
|
||||
Market Version:2.11
|
||||
Market Version Code:12
|
||||
|
20
metadata/com.digitallizard.nicecompass.txt
Normal file
20
metadata/com.digitallizard.nicecompass.txt
Normal file
@ -0,0 +1,20 @@
|
||||
Category:Navigation
|
||||
License:BSD
|
||||
Web Site:https://market.android.com/details?id=com.digitallizard.nicecompass
|
||||
Source Code:https://github.com/okey666/NiceCompass
|
||||
Issue Tracker:https://github.com/okey666/NiceCompass/issues
|
||||
|
||||
Summary:A nice compass app
|
||||
Description:
|
||||
It provides a graphical compass card along with text bearing information.
|
||||
.
|
||||
|
||||
Repo Type:git
|
||||
Repo:git://github.com/okey666/NiceCompass.git
|
||||
|
||||
Update Check Mode:Market
|
||||
Market Version:1.3
|
||||
Market Version Code:6
|
||||
|
||||
# uses ActionBarSherlock library which is not included
|
||||
#Build Version:1.3,6,b6f322cf10ec4320ca5b4111f75dccfdd4b6f7f0
|
@ -19,11 +19,12 @@ 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
|
||||
|
||||
Update Check Mode:Market
|
||||
#Source inaccessible for the last few days:
|
||||
# svn: Can't open file 'branches/us6260v87/src/com/funambol/android/source/pim/.svn/lock': No space left on device
|
||||
#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
|
||||
Market Version:10.0.8
|
||||
Market Version Code:18
|
||||
|
||||
|
22
metadata/com.google.android.stardroid.txt
Normal file
22
metadata/com.google.android.stardroid.txt
Normal file
@ -0,0 +1,22 @@
|
||||
# libs/libGoogleAnalytics.jar
|
||||
AntiFeatures:Tracking
|
||||
Category:None
|
||||
License:Apache2
|
||||
Web Site:https://code.google.com/p/stardroid/
|
||||
Source Code:https://code.google.com/p/stardroid/source/browse/
|
||||
Issue Tracker:https://code.google.com/p/stardroid/issues/list
|
||||
|
||||
Summary:Sky Map to explore the skies
|
||||
Description:
|
||||
Point your phone at the sky, and Sky Map will show the stars, planets, constellations, and more to help you identify the celestial objects in view. You can also browse the skies in manual mode.
|
||||
.
|
||||
|
||||
Repo Type:svn
|
||||
Repo:http://stardroid.googlecode.com/svn/trunk/app
|
||||
|
||||
Build Version:1.6.4,1112,3
|
||||
|
||||
Update Check Mode:Market
|
||||
Market Version:1.6.4
|
||||
Market Version Code:1112
|
||||
|
22
metadata/eu.vranckaert.worktime.txt
Normal file
22
metadata/eu.vranckaert.worktime.txt
Normal file
@ -0,0 +1,22 @@
|
||||
Disabled:Build problems
|
||||
Category:Office
|
||||
License:Apache2
|
||||
Web Site:https://code.google.com/p/worktime/
|
||||
Source Code:https://code.google.com/p/worktime/source/browse/
|
||||
Issue Tracker:https://code.google.com/p/worktime/wiki/Issues?tm=3
|
||||
Donate:
|
||||
|
||||
Summary:tracks your work time
|
||||
Description:
|
||||
Worktime targets on business people that want to keep track of their time. Weather you are working on different projects for different clients or just one project for one company, WorkTime is the application that will track your time.
|
||||
It also includes a widget which makes registering time even faster as you can do it right from you Android Home-Screen.
|
||||
You can generate reports based by filtering your time registrations by date (pre-defined date ranges or a custom date range) and by project and task.
|
||||
.
|
||||
|
||||
Repo Type:svn
|
||||
Repo:http://worktime.googlecode.com/svn/branches/1.1.2-f/android-app
|
||||
|
||||
# Doesn't build, yet
|
||||
#Build Version:1.1.2.f,104,268,target=android-11,patch=style.patch
|
||||
Build Version:1.1.3.a - UNSTABLE,107,273,target=android-11,patch=style.patch
|
||||
|
16
metadata/eu.vranckaert.worktime/style.patch
Normal file
16
metadata/eu.vranckaert.worktime/style.patch
Normal file
@ -0,0 +1,16 @@
|
||||
Index: res/values-v13/styles.xml
|
||||
===================================================================
|
||||
--- a/res/values-v13/styles.xml (revision 273)
|
||||
+++ b/res/values-v13/styles.xml (working copy)
|
||||
@@ -16,8 +16,9 @@
|
||||
-->
|
||||
<resources>
|
||||
<!-- Themes -->
|
||||
- <style name="Theme.Light.NoTitleBar" parent="android:style/Theme.Holo.Light.NoActionBar"/>
|
||||
- <style name="Theme.Translucent" parent="android:style/Theme.Holo.Light.NoActionBar">
|
||||
+ <style name="Theme.Light.NoTitleBar" parent="@android:style/Theme.Holo.Light"/>
|
||||
+ <style name="Theme.Translucent" parent="@android:style/Theme.Holo.Light">
|
||||
+ <item name="android:windowActionBar">false</item>
|
||||
<item name="android:windowIsTranslucent">true</item>
|
||||
<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
|
||||
<item name="android:windowBackground">@drawable/transparent_background</item>
|
@ -1,9 +1,8 @@
|
||||
Disabled: Seems to early in the development cycle to build a release
|
||||
Category:Internet
|
||||
License:Apache2
|
||||
Web Site:https://guardianproject.info/apps/gibber/
|
||||
Source Code:https://github.com/guardianproject/OtRChat
|
||||
Issue Tracker:https://github.com/guardianproject/OtRChat/issues
|
||||
Source Code:https://github.com/guardianproject/Gibberbot
|
||||
Issue Tracker:https://github.com/guardianproject/Gibberbot/issues
|
||||
|
||||
Summary:XMPP client with OTR support
|
||||
Description:
|
||||
@ -13,7 +12,9 @@ and for Tor via Orbot.
|
||||
.
|
||||
|
||||
Repo Type:git
|
||||
Repo:https://github.com/guardianproject/OtRChat.git
|
||||
Repo:https://github.com/guardianproject/Gibberbot.git
|
||||
|
||||
Build Version:0.0.7-RC1,25,e17dbbcf338af00466cabc5178634cd0d5ffded8,target=android-4
|
||||
|
||||
Market Version:0.0.5-RC5
|
||||
Market Version Code:21
|
||||
|
@ -9,6 +9,11 @@ Description:
|
||||
Uses the magnetic sensor to show the orientation.
|
||||
.
|
||||
|
||||
Repo Type:svn
|
||||
Repo:http://svn.pierrox.net/mcompass/trunk/
|
||||
|
||||
Build Version:1.2.4,10,32
|
||||
|
||||
Market Version:2.5.1
|
||||
Market Version Code:23
|
||||
|
||||
|
21
metadata/org.androhid.txt
Normal file
21
metadata/org.androhid.txt
Normal file
@ -0,0 +1,21 @@
|
||||
Category:System
|
||||
License:GPLv3
|
||||
Web Site:https://code.google.com/p/androhid/
|
||||
Source Code:https://code.google.com/p/androhid/source/browse/
|
||||
Issue Tracker:https://code.google.com/p/androhid/issues/list
|
||||
Donate:https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6R56TQAX8GTVQ
|
||||
|
||||
Summary:Bluetooth HID (keyboard) implementation
|
||||
Description:
|
||||
Use your android device as a bluetooth keyboard. Sending keystroke events over the bluetooth HID protocol to your computer, allows you to remotely control your PC or Laptop. As the bluetooth HID protocol is a standard specification which is provided by most modern operating systems you don't have to install any further software on the host.
|
||||
.
|
||||
|
||||
Requires Root:Yes
|
||||
|
||||
Repo Type:svn
|
||||
Repo:http://androhid.googlecode.com/svn/trunk/
|
||||
|
||||
# needs libbluetooth-dev to build
|
||||
#Build Version:0.6,6,34,buildjni=yes
|
||||
#,patch=jni.patch
|
||||
|
18
metadata/org.andstatus.app.txt
Normal file
18
metadata/org.andstatus.app.txt
Normal file
@ -0,0 +1,18 @@
|
||||
Category:Internet
|
||||
License:Apache2
|
||||
Web Site:http://andstatus.org/
|
||||
Source Code:https://github.com/andstatus/andstatus
|
||||
Issue Tracker:https://github.com/andstatus/andstatus/issues
|
||||
Donate:
|
||||
|
||||
Summary:a light-weight Twitter alternative
|
||||
Description:
|
||||
It allows you to read tweets, send Status updates, create Favorites etc. even when you are offline.
|
||||
.
|
||||
|
||||
Repo Type:git
|
||||
Repo:git://github.com/andstatus/andstatus.git
|
||||
|
||||
# needs to adapt src/org/andstatus/app/net/OAuthKeys.java
|
||||
#Build Version:1.2.4,48,9dba38c8d77fe8068564b88c197fb60ec64b60a3,target=android-3
|
||||
|
@ -13,17 +13,6 @@ An offline reader that works with the Tiny Tiny RSS web-based feed reader/aggreg
|
||||
Repo Type:hg
|
||||
Repo:https://ttrss-reader-fork.googlecode.com/hg/
|
||||
|
||||
Build Version:0.8.4,840,v0.8.4,subdir=ttrss-reader
|
||||
#This has the wrong version code in the repo (850 instead of 851)
|
||||
Build Version:0.8.5,850,v0.8.5,subdir=ttrss-reader
|
||||
Build Version:0.8.6,860,v0.8.6,subdir=ttrss-reader
|
||||
Build Version:0.8.8,880,5faddbaaf7,subdir=ttrss-reader
|
||||
Build Version:0.8.8,881,!Same as 880 just different code in repo
|
||||
Build Version:0.8.9,892,9ba20fcfb6,subdir=ttrss-reader,target=android-8
|
||||
Build Version:0.9.1,911,0.9.1,subdir=ttrss-reader,target=android-8
|
||||
# Tag is hosed for 0.9.3
|
||||
Build Version:0.9.3,931,93412751548f,subdir=ttrss-reader,target=android-8
|
||||
Build Version:0.9.7,973,0.9.7 (3),subdir=ttrss-reader,target=android-8
|
||||
Build Version:1.0,1000,1efaebb5678f,subdir=ttrss-reader,target=android-8
|
||||
Build Version:1.0,1002,aa503a0f2201,subdir=ttrss-reader,target=android-8
|
||||
Build Version:1.02,1023,87f123514c11,subdir=ttrss-reader,target=android-8
|
||||
|
@ -13,7 +13,7 @@ Detects and resets a broken WiFi connection.
|
||||
Repo Type:git
|
||||
Repo:https://github.com/Zanshinmu/Wifi-Fixer.git
|
||||
|
||||
Build Version:0.7.0.3.3,620,a3c0dfd8507a7778c1a3,subdir=wififixer,prebuild=sed -i s/android-1/android-8/ build.properties
|
||||
Build Version:0.7.0.3.3,620,a3c0dfd8507a7778c1a3,subdir=wififixer,target=android-8
|
||||
Build Version:0.8.0,758,d1278bb9b2cddb66a617,subdir=wififixer,target=android-8
|
||||
Build Version:0.8.0.1,759,55394716804479e76d5f,subdir=wififixer,target=android-8
|
||||
Build Version:0.8.0.2,760,ff612a31874fc89cb124,subdir=wififixer,target=android-8
|
||||
|
@ -1,7 +1,7 @@
|
||||
Category:Office
|
||||
License:GPLv3
|
||||
Web Site:http://divedroid.android.networld.to
|
||||
Source Code:git://networld.to/var/scm/android/DiveDroid.git
|
||||
Source Code:http://sources.networld.to/?p=android/DiveDroid.git;a=summary
|
||||
Issue Tracker:
|
||||
|
||||
Summary:Scuba Dive Logbook
|
||||
@ -19,7 +19,10 @@ Portable data through the use of RDFS Ontology.
|
||||
.
|
||||
|
||||
Repo Type:git
|
||||
Repo:git://networld.to/var/scm/android/DiveDroid.git
|
||||
#The following would appear to be the correct new address (see
|
||||
#http://sources.networld.to/?p=android/DiveDroid.git;a=summary) but it
|
||||
#isn't working currently for some reason
|
||||
Repo:git://gandalf.networld.to/home/repos/semweb/android/DiveDroid.git
|
||||
|
||||
Build Version:0.6,1,c50b1e638253cedf32dce49ef836fd30ba6071f9,encoding=utf-8,prebuild=mkdir libs && cd libs && wget http://dist.codehaus.org/jaxen/distributions/jaxen-1.1.3.zip && unzip -j jaxen-1.1.3.zip jaxen-1.1.3/jaxen-1.1.3.jar && rm *.zip && wget -O org.dom4j.jar http://sourceforge.net/projects/dom4j/files/dom4j-2.0.0-ALPHA-2/dom4j-2.0.0-ALPHA-2.jar/download && wget http://achartengine.googlecode.com/files/achartengine-0.5.0.jar && cd ..
|
||||
|
||||
|
20
metadata/us.lindanrandy.cidrcalculator.txt
Normal file
20
metadata/us.lindanrandy.cidrcalculator.txt
Normal file
@ -0,0 +1,20 @@
|
||||
Category:Office
|
||||
License:Apache2
|
||||
Web Site:https://code.google.com/p/cidrcalculator/
|
||||
Source Code:https://code.google.com/p/cidrcalculator/source/browse/
|
||||
Issue Tracker:https://code.google.com/p/cidrcalculator/issues/list
|
||||
|
||||
Summary:utility for CIDR/subnet calculation.
|
||||
Description:
|
||||
CIDR Calculator is a simple IP subnet calculator for network engineers to quickly determine what the address range is of a subnet.
|
||||
.
|
||||
|
||||
Repo Type:svn
|
||||
Repo:http://cidrcalculator.googlecode.com/svn/trunk/
|
||||
|
||||
Build Version:1.13,115,31,target=android-8
|
||||
|
||||
Update Check Mode:Market
|
||||
Market Version:1.14
|
||||
Market Version Code:116
|
||||
|
@ -41,6 +41,7 @@ FBReaderJ-0.99.2.apk org.geometerplus.zlibrary.ui.android
|
||||
FBReaderJ-0.99.4.apk org.geometerplus.zlibrary.ui.android
|
||||
FBReaderJ-0.99.7.apk org.geometerplus.zlibrary.ui.android
|
||||
FBReaderJ-0.99.9.apk org.geometerplus.zlibrary.ui.android
|
||||
FDroid.apk org.fdroid.fdroid
|
||||
FDroid_0.10.apk org.fdroid.fdroid
|
||||
FDroid_0.11.apk org.fdroid.fdroid
|
||||
FDroid_0.12.apk org.fdroid.fdroid
|
||||
@ -88,6 +89,7 @@ ReplicaIsland_1.3.apk com.replica.replicaisland
|
||||
Ringdroid-2.3.apk com.ringdroid
|
||||
Ringdroid-2.4-rc2.apk com.ringdroid
|
||||
SayMyName_2.5.3.2.apk org.mailboxer.saymyname
|
||||
Scrambled%20Net-5.0.apk org.hermit.netscramble
|
||||
Scrambled_Net-5.0.apk org.hermit.netscramble
|
||||
Sipdroid-1.6.1.apk org.sipdroid.sipua
|
||||
Sipdroid-2.0.1.apk org.sipdroid.sipua
|
||||
@ -112,6 +114,7 @@ alogcat-2.1.4.apk org.jtb.alogcat
|
||||
andLess_05202011.apk net.avs234 2011-05-20
|
||||
android.androidVNC_13.apk android.androidVNC 2011-04-06
|
||||
androidVNC_build20100725.apk android.androidVNC
|
||||
apps.droidnotify_27.apk apps.droidnotify 2012-01-21
|
||||
at.tomtasche.reader_11.apk at.tomtasche.reader 2011-01-05
|
||||
at.tomtasche.reader_12.apk at.tomtasche.reader 2011-01-10
|
||||
at.tomtasche.reader_15.apk at.tomtasche.reader 2011-01-13
|
||||
@ -143,6 +146,7 @@ com.android.keepass_83.apk com.android.keepass 2011-12-31
|
||||
com.android.keepass_84.apk com.android.keepass 2012-01-19
|
||||
com.angrydoughnuts.android.alarmclock_8.apk com.angrydoughnuts.android.alarmclock 2011-05-19
|
||||
com.appengine.paranoid_android.lost_12.apk com.appengine.paranoid_android.lost 2012-01-08
|
||||
com.axelby.podax_12.apk com.axelby.podax 2012-01-21
|
||||
com.beem.project.beem_10.apk com.beem.project.beem 2012-01-20
|
||||
com.beem.project.beem_7.apk com.beem.project.beem 2011-02-03
|
||||
com.beem.project.beem_9.apk com.beem.project.beem 2012-01-10
|
||||
@ -189,6 +193,7 @@ com.google.android.diskusage_2103.apk com.google.android.diskusage 2011-05-16
|
||||
com.google.android.diskusage_3010.apk com.google.android.diskusage 2011-08-09
|
||||
com.google.android.diskusage_3020.apk com.google.android.diskusage 2011-12-08
|
||||
com.google.android.maps.mytracks_23.apk com.google.android.maps.mytracks 2011-02-11
|
||||
com.google.android.stardroid_1112.apk com.google.android.stardroid 2012-01-21
|
||||
com.google.code.appsorganizer_162.apk com.google.code.appsorganizer 2011-01-27
|
||||
com.google.code.appsorganizer_163.apk com.google.code.appsorganizer 2011-02-13
|
||||
com.google.code.appsorganizer_164.apk com.google.code.appsorganizer 2011-04-19
|
||||
@ -227,6 +232,7 @@ com.morphoss.acal_34.apk com.morphoss.acal 2011-12-12
|
||||
com.morphoss.acal_35.apk com.morphoss.acal 2012-01-03
|
||||
com.morphoss.acal_36.apk com.morphoss.acal 2012-01-09
|
||||
com.morphoss.acal_37.apk com.morphoss.acal 2012-01-15
|
||||
com.morphoss.acal_38.apk com.morphoss.acal 2012-01-20
|
||||
com.mp3tunes.android.player_89.apk com.mp3tunes.android.player 2011-04-09
|
||||
com.nexes.manager_212.apk com.nexes.manager 2011-03-09
|
||||
com.nexes.manager_218.apk com.nexes.manager 2011-07-22
|
||||
@ -252,6 +258,8 @@ com.wanghaus.remembeer_50.apk com.wanghaus.remembeer 2011-06-29
|
||||
com.webworxshop.swallowcatcher_5.apk com.webworxshop.swallowcatcher 2011-03-10
|
||||
com.webworxshop.swallowcatcher_6.apk com.webworxshop.swallowcatcher 2011-07-12
|
||||
com.webworxshop.swallowcatcher_7.apk com.webworxshop.swallowcatcher 2011-12-07
|
||||
com.zegoggles.smssync_1404.apk com.zegoggles.smssync
|
||||
com.zegoggles.smssync_1405.apk com.zegoggles.smssync
|
||||
cz.hejl.chesswalk_7.apk cz.hejl.chesswalk 2012-01-12
|
||||
cz.romario.opensudoku_1104.apk cz.romario.opensudoku 2012-01-12
|
||||
cz.romario.opensudoku_1105.apk cz.romario.opensudoku 2012-01-12
|
||||
@ -286,6 +294,7 @@ httpmon_0.4.10.apk org.jtb.httpmon
|
||||
info.guardianproject.browser_3.apk info.guardianproject.browser 2011-12-07
|
||||
info.guardianproject.cacert_3.apk info.guardianproject.cacert 2011-10-03
|
||||
info.guardianproject.cacert_4.apk info.guardianproject.cacert 2011-12-11
|
||||
info.guardianproject.otr.app.im_25.apk info.guardianproject.otr.app.im 2012-01-22
|
||||
info.lamatricexiste.network_42.apk info.lamatricexiste.network 2011-07-06
|
||||
info.staticfree.android.units_7.apk info.staticfree.android.units 2011-01-05
|
||||
info.staticfree.android.units_8.apk info.staticfree.android.units 2011-01-17
|
||||
@ -345,6 +354,7 @@ net.osmand.plus_39.apk net.osmand.plus 2011-10-07
|
||||
net.osmand.plus_42.apk net.osmand.plus 2011-12-08
|
||||
net.osmand_25.apk net.osmand 2011-02-11
|
||||
net.osmand_26.apk net.osmand 2011-06-24
|
||||
net.pierrox.mcompass_10.apk net.pierrox.mcompass 2012-01-21
|
||||
net.rocrail.androc_219.apk net.rocrail.androc 2011-01-10
|
||||
net.rocrail.androc_221.apk net.rocrail.androc 2011-03-01
|
||||
net.rocrail.androc_228.apk net.rocrail.androc 2011-04-19
|
||||
@ -571,6 +581,7 @@ transdroid-1.1.0-beta.apk org.transdroid 2011-10-21
|
||||
tuioDroid.impl_4.apk tuioDroid.impl 2011-11-28
|
||||
tuxrider_1.0.4.apk com.drodin.tuxrider
|
||||
urbanstew.RehearsalAssistant_22.apk urbanstew.RehearsalAssistant 2011-02-19
|
||||
us.lindanrandy.cidrcalculator_115.apk us.lindanrandy.cidrcalculator 2012-01-21
|
||||
vu.de.urpool.quickdroid_31.apk vu.de.urpool.quickdroid 2011-01-27
|
||||
vu.de.urpool.quickdroid_37.apk vu.de.urpool.quickdroid 2011-03-10
|
||||
vu.de.urpool.quickdroid_38.apk vu.de.urpool.quickdroid 2011-05-16
|
||||
|
10
stats/latestapps.txt
Normal file
10
stats/latestapps.txt
Normal file
@ -0,0 +1,10 @@
|
||||
org.eehouse.android.xw4
|
||||
aarddict.android
|
||||
org.jmoyer.NotificationPlus
|
||||
org.mozilla.firefox
|
||||
apps.droidnotify
|
||||
com.axelby.podax
|
||||
com.google.android.stardroid
|
||||
us.lindanrandy.cidrcalculator
|
||||
net.pierrox.mcompass
|
||||
info.guardianproject.otr.app.im
|
194
stats/total_downloads_app.txt
Normal file
194
stats/total_downloads_app.txt
Normal file
@ -0,0 +1,194 @@
|
||||
# Total downloads by application, since October 2011
|
||||
ALL 166414
|
||||
An.stop 768
|
||||
aarddict.android 309
|
||||
android.androidVNC 927
|
||||
apps.droidnotify 7
|
||||
at.tomtasche.reader 78
|
||||
caldwell.ben.trolly 605
|
||||
cm.aptoide.pt 81
|
||||
cmupdaterapp.ui 1491
|
||||
com.FireFart.Permissions 815
|
||||
com.agiro.scanner.android 221
|
||||
com.alfray.mandelbrot2 513
|
||||
com.alfray.timeriffic 306
|
||||
com.andrewshu.android.reddit 838
|
||||
com.android.inputmethod.norwegian 122
|
||||
com.android.keepass 1283
|
||||
com.angrydoughnuts.android.alarmclock 1488
|
||||
com.appengine.paranoid_android.lost 146
|
||||
com.axelby.podax 11
|
||||
com.beem.project.beem 931
|
||||
com.boardgamegeek 522
|
||||
com.bwx.bequick 894
|
||||
com.bwx.qs.battery 742
|
||||
com.chessclock.android 42
|
||||
com.commonsware.android.arXiv 453
|
||||
com.csipsimple 904
|
||||
com.danga.squeezer 150
|
||||
com.dozingcatsoftware.bouncy 1094
|
||||
com.drodin.tuxrider 26
|
||||
com.eddyspace.networkmonitor 372
|
||||
com.eleybourn.bookcatalogue 896
|
||||
com.episode6.android.appalarm.pro 3
|
||||
com.evancharlton.mileage 368
|
||||
com.example.android.maxpapers 792
|
||||
com.fsck.k9 2959
|
||||
com.funambol.androidsync 530
|
||||
com.ghostsq.commander 1724
|
||||
com.google.android.diskusage 1516
|
||||
com.google.android.maps.mytracks 533
|
||||
com.google.android.stardroid 5
|
||||
com.google.code.appsorganizer 1053
|
||||
com.google.zxing.client.android 2985
|
||||
com.googlecode.androidcells 405
|
||||
com.googlecode.chartdroid 222
|
||||
com.googlecode.droidwall 1466
|
||||
com.googlecode.talkmyphone 287
|
||||
com.gpl.rpg.AndorsTrail 1747
|
||||
com.ichi2.anki 980
|
||||
com.jadn.cc 140
|
||||
com.kirit.android.mintercept 846
|
||||
com.kmagic.solitaire 1166
|
||||
com.lecz.android.tiltmazes 790
|
||||
com.liato.bankdroid 258
|
||||
com.matburt.mobileorg 505
|
||||
com.mobilepearls.sokoban 845
|
||||
com.morphoss.acal 2446
|
||||
com.mp3tunes.android.player 54
|
||||
com.nexes.manager 1179
|
||||
com.proch.practicehub 368
|
||||
com.replica.replicaisland 827
|
||||
com.ringdroid 668
|
||||
com.roozen.SoundManager 568
|
||||
com.serone.desktoplabel 435
|
||||
com.smorgasbork.hotdeath 312
|
||||
com.teleca.jamendo 839
|
||||
com.textuality.lifesaver2 309
|
||||
com.totsp.bookworm 407
|
||||
com.totsp.crossword.shortyz 74
|
||||
com.unitedcoders.android.gpodroid 58
|
||||
com.voidcode.diasporawebclient 310
|
||||
com.volosyukivan 683
|
||||
com.wanghaus.remembeer 91
|
||||
com.webworxshop.swallowcatcher 500
|
||||
com.zegoggles.smssync 690
|
||||
cz.hejl.chesswalk 237
|
||||
cz.romario.opensudoku 604
|
||||
de.blau.android 24
|
||||
de.joergjahnke.c64.android 31
|
||||
de.shandschuh.slightbackup 405
|
||||
de.shandschuh.sparserss 1237
|
||||
de.ub0r.android.adBlock 1413
|
||||
dk.andsen.asqlitemanager 335
|
||||
edu.nyu.cs.omnidroid.app 529
|
||||
edu.rit.poe.atomix 699
|
||||
es.prodevelop.gvsig.mini 522
|
||||
fm.libre.droid 419
|
||||
fr.seeks 155
|
||||
goo.TeaTimer 508
|
||||
info.guardianproject.browser 274
|
||||
info.guardianproject.cacert 393
|
||||
info.lamatricexiste.network 1679
|
||||
info.staticfree.android.units 940
|
||||
me.guillaumin.android.osmtracker 493
|
||||
mixedbit.speechtrainer 252
|
||||
name.bagi.levente.pedometer 726
|
||||
net.androgames.level 185
|
||||
net.avs234 167
|
||||
net.bytten.xkcdviewer 695
|
||||
net.cactii.mathdoku 511
|
||||
net.dahanne.android.regalandroid 214
|
||||
net.fercanet.LNM 780
|
||||
net.gaast.giggity 182
|
||||
net.jaqpot.netcounter 688
|
||||
net.mafro.android.wakeonlan 331
|
||||
net.osmand 664
|
||||
net.osmand.plus 2398
|
||||
net.pierrox.mcompass 19
|
||||
net.rocrail.androc 885
|
||||
net.sf.andbatdog.batterydog 1019
|
||||
net.sourceforge.servestream 408
|
||||
net.status.client.mobile 275
|
||||
net.sylvek.sharemyposition 252
|
||||
net.tapi.handynotes 917
|
||||
net.tedstein.AndroSS 1515
|
||||
net.tevp.postcode 155
|
||||
nl.sogeti.android.gpstracker 778
|
||||
nu.firetech.android.pactrack 52
|
||||
org.abrantix.rockon.rockonnggl 1195
|
||||
org.adaway 2712
|
||||
org.adw.launcher 689
|
||||
org.andnav.osm 555
|
||||
org.androidsoft.games.memory.kids 306
|
||||
org.connectbot 1499
|
||||
org.coolreader 3590
|
||||
org.curiouscreature.android.shelves 171
|
||||
org.damazio.notifier 247
|
||||
org.droidseries 871
|
||||
org.eehouse.android.xw4 848
|
||||
org.example.pushupbuddy 288
|
||||
org.fdroid.fdroid 35195
|
||||
org.fdroid.taskstrid 23
|
||||
org.fosdem 205
|
||||
org.geometerplus.zlibrary.ui.android 2545
|
||||
org.helllabs.android.xmp 253
|
||||
org.hermit.audalyzer 773
|
||||
org.hermit.netscramble 454
|
||||
org.hermit.tricorder 1136
|
||||
org.jessies.mathdroid 505
|
||||
org.jfedor.frozenbubble 2460
|
||||
org.jmoyer.NotificationPlus 37
|
||||
org.johanhil.flygtider 64
|
||||
org.jtb.alogcat 858
|
||||
org.jtb.droidlife 809
|
||||
org.jtb.httpmon 371
|
||||
org.kost.externalip 754
|
||||
org.kreed.vanilla 675
|
||||
org.linphone 586
|
||||
org.mailboxer.saymyname 31
|
||||
org.marcus905.wifi.ace 768
|
||||
org.mixare 669
|
||||
org.moparisthebest.appbak 803
|
||||
org.mozilla.firefox 5842
|
||||
org.mult.daap 334
|
||||
org.mustard.android 852
|
||||
org.mythdroid 239
|
||||
org.navitproject.navit 655
|
||||
org.opensatnav 1016
|
||||
org.paulmach.textedit 1163
|
||||
org.penghuang.tools.rotationlock 85
|
||||
org.piwik.mobile 115
|
||||
org.pocketworkstation.pckeyboard 1930
|
||||
org.scoutant.blokish 1255
|
||||
org.sipdroid.sipua 439
|
||||
org.sixgun.ponyexpress 324
|
||||
org.sparkleshare.android 58
|
||||
org.swiftp 410
|
||||
org.thialfihar.android.apg 778
|
||||
org.thoughtcrime.securesms 160
|
||||
org.tomdroid 391
|
||||
org.torproject.android 903
|
||||
org.transdroid 541
|
||||
org.ttrssreader 966
|
||||
org.vudroid 1253
|
||||
org.wahtod.wififixer 967
|
||||
org.wordpress.android 374
|
||||
org.xbmc.android.remote 361
|
||||
org.xcsoar 34
|
||||
org.yaaic 710
|
||||
org.yaxim.androidclient 776
|
||||
org.zirco 1898
|
||||
pl.magot.vetch.ancal 23
|
||||
remuco.client.android 112
|
||||
ru.gelin.android.weather.notification 500
|
||||
se.johanhil.clipboard 397
|
||||
se.johanhil.duckduckgo 736
|
||||
se.peterbjorkman.android.trafikinfo 108
|
||||
seanfoy.wherering 203
|
||||
tkj.android.homecontrol.mythmote 304
|
||||
to.networld.android.divedroid 183
|
||||
tuioDroid.impl 59
|
||||
urbanstew.RehearsalAssistant 346
|
||||
us.lindanrandy.cidrcalculator 11
|
||||
vu.de.urpool.quickdroid 715
|
@ -121,8 +121,25 @@ for logfile in glob.glob(os.path.join(logsdir,'access-*.log')):
|
||||
if not apkname in unknownapks:
|
||||
unknownapks.append(apkname)
|
||||
|
||||
# Calculate and write stats for total downloads...
|
||||
f = open('stats/total_downloads_app.txt', 'w')
|
||||
lst = []
|
||||
alldownloads = 0
|
||||
for app, count in apps.iteritems():
|
||||
print app + " " + str(count)
|
||||
lst.append(app + " " + str(count))
|
||||
alldownloads += count
|
||||
lst.append("ALL " + str(alldownloads))
|
||||
f.write('# Total downloads by application, since October 2011\n')
|
||||
for line in sorted(lst):
|
||||
f.write(line + '\n')
|
||||
f.close()
|
||||
|
||||
# Write list of latest apps added to the repo...
|
||||
latest = knownapks.getlatest(10)
|
||||
f = open('stats/latestapps.txt', 'w')
|
||||
for app in latest:
|
||||
f.write(app + '\n')
|
||||
f.close()
|
||||
|
||||
if len(unknownapks) > 0:
|
||||
print '\nUnknown apks:'
|
||||
|
Loading…
Reference in New Issue
Block a user