1
0
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:
Hans-Emil Skogh 2012-01-23 21:22:42 +01:00
commit 0b7ea34a85
22 changed files with 603 additions and 155 deletions

View File

@ -74,15 +74,14 @@ if not os.path.isdir(build_dir):
for app in apps: 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'] 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'] print "Skipping %s: no builds specified" % app['id']
else:
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'] print "Processing " + app['id']
build_dir = 'build/' + app['id'] build_dir = 'build/' + app['id']

267
common.py
View File

@ -20,6 +20,7 @@ import glob, os, sys, re
import shutil import shutil
import subprocess import subprocess
import time import time
import operator
def getvcs(vcstype, remote, local): def getvcs(vcstype, remote, local):
if vcstype == 'git': if vcstype == 'git':
@ -54,39 +55,26 @@ class vcs:
self.remote = remote self.remote = remote
self.local = local self.local = local
self.refreshed = False
# Refresh the local repository - i.e. get the latest code. This # Take the local repository to a clean version of the given revision, which
# works either by updating if a local copy already exists, or by # is specificed in the VCS's native format. Beforehand, the repository can
# cloning from scratch if it doesn't. # be dirty, or even non-existent. If the repository does already exist
def refreshlocal(self): # locally, it will be updated from the origin, but only once in the
if not os.path.exists(self.local): # lifetime of the vcs object.
self.clone() def gotorevision(self, rev):
else: raise VCSException("This VCS type doesn't define gotorevision")
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
# Initialise and update submodules # Initialise and update submodules
def initsubmodules(self): def initsubmodules(self):
assert False # Not supported unless overridden raise VCSException('Submodules not supported for this vcs type')
class vcs_git(vcs): 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): def checkrepo(self):
p = subprocess.Popen(['git', 'rev-parse', '--show-toplevel'], p = subprocess.Popen(['git', 'rev-parse', '--show-toplevel'],
stdout=subprocess.PIPE, cwd=self.local) stdout=subprocess.PIPE, cwd=self.local)
@ -94,28 +82,34 @@ class vcs_git(vcs):
if not result.endswith(self.local): if not result.endswith(self.local):
raise VCSException('Repository mismatch') raise VCSException('Repository mismatch')
def clone(self): def gotorevision(self, rev):
if subprocess.call(['git', 'clone', self.remote, self.local]) != 0: if not os.path.exists(self.local):
raise VCSException("Git clone failed") # Brand new checkout...
if subprocess.call(['git', 'clone', self.remote, self.local]) != 0:
def reset(self, rev=None): raise VCSException("Git clone failed")
self.checkrepo() self.checkrepo()
if rev is None: else:
rev = 'origin' self.checkrepo()
if subprocess.call(['git', 'reset', '--hard', rev], # Discard any working tree changes...
cwd=self.local) != 0: if subprocess.call(['git', 'reset', '--hard'], cwd=self.local) != 0:
raise VCSException("Git reset failed") raise VCSException("Git reset failed")
if subprocess.call(['git', 'clean', '-dfx'], # Remove untracked files now, in case they're tracked in the target
cwd=self.local) != 0: # 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") 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): def initsubmodules(self):
self.checkrepo() self.checkrepo()
if subprocess.call(['git', 'submodule', 'init'], if subprocess.call(['git', 'submodule', 'init'],
@ -128,6 +122,10 @@ class vcs_git(vcs):
class vcs_gitsvn(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): def checkrepo(self):
p = subprocess.Popen(['git', 'rev-parse', '--show-toplevel'], p = subprocess.Popen(['git', 'rev-parse', '--show-toplevel'],
stdout=subprocess.PIPE, cwd=self.local) stdout=subprocess.PIPE, cwd=self.local)
@ -135,34 +133,40 @@ class vcs_gitsvn(vcs):
if not result.endswith(self.local): if not result.endswith(self.local):
raise VCSException('Repository mismatch') raise VCSException('Repository mismatch')
def clone(self): def gotorevision(self, rev):
if subprocess.call(['git', 'svn', 'clone', self.remote, self.local]) != 0: if not os.path.exists(self.local):
raise VCSException("Git clone failed") # Brand new checkout...
if subprocess.call(['git', 'svn', 'clone', self.remote, self.local]) != 0:
def reset(self, rev=None): raise VCSException("Git clone failed")
self.checkrepo() self.checkrepo()
if rev is None:
rev = 'HEAD'
else: else:
p = subprocess.Popen(['git', 'svn', 'find-rev', 'r' + rev], self.checkrepo()
cwd=self.local, stdout=subprocess.PIPE) # Discard any working tree changes...
rev = p.communicate()[0].rstrip() if subprocess.call(['git', 'reset', '--hard'], cwd=self.local) != 0:
if p.returncode != 0: raise VCSException("Git reset failed")
raise VCSException("Failed to get git treeish from svn rev") # Remove untracked files now, in case they're tracked in the target
if subprocess.call(['git', 'reset', '--hard', rev], # revision (it happens!)...
cwd=self.local) != 0: if subprocess.call(['git', 'clean', '-dfx'], cwd=self.local) != 0:
raise VCSException("Git reset failed") raise VCSException("Git clean failed")
if subprocess.call(['git', 'clean', '-dfx'], if not self.refreshed:
cwd=self.local) != 0: # 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") 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): class vcs_svn(vcs):
def userargs(self): def userargs(self):
@ -172,77 +176,70 @@ class vcs_svn(vcs):
'--password', self.password, '--password', self.password,
'--non-interactive'] '--non-interactive']
def clone(self): def gotorevision(self, rev):
if subprocess.call(['svn', 'checkout', self.remote, self.local] + if not os.path.exists(self.local):
self.userargs()) != 0: if subprocess.call(['svn', 'checkout', self.remote, self.local] +
raise VCSException("Svn checkout failed") self.userargs()) != 0:
raise VCSException("Svn checkout failed")
def reset(self, rev=None):
if rev is None:
revargs = []
else: else:
revargs = ['-r', rev] for svncommand in (
for svncommand in ( 'svn revert -R .',
'svn revert -R .', r"svn status | awk '/\?/ {print $2}' | xargs rm -rf"):
r"svn status | awk '/\?/ {print $2}' | xargs rm -rf"): if subprocess.call(svncommand, cwd=self.local,
if subprocess.call(svncommand, cwd=self.local, shell=True) != 0:
shell=True) != 0: raise VCSException("Svn reset failed")
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 + if subprocess.call(['svn', 'update', '--force'] + revargs +
self.userargs(), cwd=self.local) != 0: self.userargs(), cwd=self.local) != 0:
raise VCSException("Svn update failed") 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): class vcs_hg(vcs):
def clone(self): def gotorevision(self, rev):
if subprocess.call(['hg', 'clone', self.remote, self.local]) !=0: if not os.path.exists(self.local):
raise VCSException("Hg clone failed") 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 = []
else: else:
revargs = [rev] if subprocess.call('hg status -u | xargs rm -rf',
if subprocess.call('hg status -u | xargs rm -rf', cwd=self.local, shell=True) != 0:
cwd=self.local, shell=True) != 0: raise VCSException("Hg clean failed")
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, if subprocess.call(['hg', 'checkout', '-C'] + revargs,
cwd=self.local) != 0: cwd=self.local) != 0:
raise VCSException("Hg checkout failed") 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): class vcs_bzr(vcs):
def clone(self): def gotorevision(self, rev):
if subprocess.call(['bzr', 'branch', self.remote, self.local]) != 0: if not os.path.exists(self.local):
raise VCSException("Bzr branch failed") 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 = []
else: else:
revargs = ['-r', rev] if subprocess.call(['bzr', 'clean-tree', '--force',
if subprocess.call(['bzr', 'clean-tree', '--force', '--unknown', '--ignored'], cwd=self.local) != 0:
'--unknown', '--ignored'], cwd=self.local) != 0: raise VCSException("Bzr revert failed")
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, if subprocess.call(['bzr', 'revert'] + revargs,
cwd=self.local) != 0: cwd=self.local) != 0:
raise VCSException("Bzr revert failed") 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. # Get the type expected for a given metadata field.
def metafieldtype(name): def metafieldtype(name):
@ -548,9 +545,6 @@ class MetaDataException(Exception):
# be a subdirectory of it. # be a subdirectory of it.
def prepare_source(vcs, app, build, build_dir, sdk_path, ndk_path, javacc_path, refresh): 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... # Optionally, the actual app source can be in a subdirectory...
if build.has_key('subdir'): if build.has_key('subdir'):
root_dir = os.path.join(build_dir, build['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 root_dir = build_dir
# Get a working copy of the right revision... # Get a working copy of the right revision...
print "Resetting repository to " + build['commit'] print "Getting source for revision " + build['commit']
vcs.reset(build['commit']) vcs.gotorevision(build['commit'])
# Check that a subdir (if we're using one) exists. This has to happen # Check that a subdir (if we're using one) exists. This has to happen
# after the checkout, since it might not exist elsewhere... # 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... # Delete unwanted file...
if build.has_key('rm'): 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... # Fix apostrophes translation files if necessary...
if build.get('fixapos', 'no') == 'yes': if build.get('fixapos', 'no') == 'yes':
@ -821,3 +817,20 @@ class KnownApks:
if apkname in self.apks: if apkname in self.apks:
return self.apks[apkname] return self.apks[apkname]
return None 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

View 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

View 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

View 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

View 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

View File

@ -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.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 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: #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 # 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. #Source is now accessible, but the build is failing without an obvious error.
#Need to look at this again. #Need to look at this again.
#Build Version:10.0.7,17,2671,subdir=tags/10.0.7,update=no,initfun=yes #Build Version:10.0.7,17,2671,subdir=tags/10.0.7,update=no,initfun=yes
Market Version:10.0.7 Market Version:10.0.8
Market Version Code:17 Market Version Code:18

View 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

View 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

View 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>

View File

@ -1,9 +1,8 @@
Disabled: Seems to early in the development cycle to build a release
Category:Internet Category:Internet
License:Apache2 License:Apache2
Web Site:https://guardianproject.info/apps/gibber/ Web Site:https://guardianproject.info/apps/gibber/
Source Code:https://github.com/guardianproject/OtRChat Source Code:https://github.com/guardianproject/Gibberbot
Issue Tracker:https://github.com/guardianproject/OtRChat/issues Issue Tracker:https://github.com/guardianproject/Gibberbot/issues
Summary:XMPP client with OTR support Summary:XMPP client with OTR support
Description: Description:
@ -13,7 +12,9 @@ and for Tor via Orbot.
. .
Repo Type:git 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:0.0.5-RC5
Market Version Code:21 Market Version Code:21

View File

@ -9,6 +9,11 @@ Description:
Uses the magnetic sensor to show the orientation. 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:2.5.1
Market Version Code:23 Market Version Code:23

21
metadata/org.androhid.txt Normal file
View 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

View 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

View File

@ -13,17 +13,6 @@ An offline reader that works with the Tiny Tiny RSS web-based feed reader/aggreg
Repo Type:hg Repo Type:hg
Repo:https://ttrss-reader-fork.googlecode.com/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,1000,1efaebb5678f,subdir=ttrss-reader,target=android-8
Build Version:1.0,1002,aa503a0f2201,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 Build Version:1.02,1023,87f123514c11,subdir=ttrss-reader,target=android-8

View File

@ -13,7 +13,7 @@ Detects and resets a broken WiFi connection.
Repo Type:git Repo Type:git
Repo:https://github.com/Zanshinmu/Wifi-Fixer.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,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.1,759,55394716804479e76d5f,subdir=wififixer,target=android-8
Build Version:0.8.0.2,760,ff612a31874fc89cb124,subdir=wififixer,target=android-8 Build Version:0.8.0.2,760,ff612a31874fc89cb124,subdir=wififixer,target=android-8

View File

@ -1,7 +1,7 @@
Category:Office Category:Office
License:GPLv3 License:GPLv3
Web Site:http://divedroid.android.networld.to 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: Issue Tracker:
Summary:Scuba Dive Logbook Summary:Scuba Dive Logbook
@ -19,7 +19,10 @@ Portable data through the use of RDFS Ontology.
. .
Repo Type:git 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 .. 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 ..

View 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

View File

@ -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.4.apk org.geometerplus.zlibrary.ui.android
FBReaderJ-0.99.7.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 FBReaderJ-0.99.9.apk org.geometerplus.zlibrary.ui.android
FDroid.apk org.fdroid.fdroid
FDroid_0.10.apk org.fdroid.fdroid FDroid_0.10.apk org.fdroid.fdroid
FDroid_0.11.apk org.fdroid.fdroid FDroid_0.11.apk org.fdroid.fdroid
FDroid_0.12.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.3.apk com.ringdroid
Ringdroid-2.4-rc2.apk com.ringdroid Ringdroid-2.4-rc2.apk com.ringdroid
SayMyName_2.5.3.2.apk org.mailboxer.saymyname 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 Scrambled_Net-5.0.apk org.hermit.netscramble
Sipdroid-1.6.1.apk org.sipdroid.sipua Sipdroid-1.6.1.apk org.sipdroid.sipua
Sipdroid-2.0.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 andLess_05202011.apk net.avs234 2011-05-20
android.androidVNC_13.apk android.androidVNC 2011-04-06 android.androidVNC_13.apk android.androidVNC 2011-04-06
androidVNC_build20100725.apk android.androidVNC 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_11.apk at.tomtasche.reader 2011-01-05
at.tomtasche.reader_12.apk at.tomtasche.reader 2011-01-10 at.tomtasche.reader_12.apk at.tomtasche.reader 2011-01-10
at.tomtasche.reader_15.apk at.tomtasche.reader 2011-01-13 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.android.keepass_84.apk com.android.keepass 2012-01-19
com.angrydoughnuts.android.alarmclock_8.apk com.angrydoughnuts.android.alarmclock 2011-05-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.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_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_7.apk com.beem.project.beem 2011-02-03
com.beem.project.beem_9.apk com.beem.project.beem 2012-01-10 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_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.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.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_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_163.apk com.google.code.appsorganizer 2011-02-13
com.google.code.appsorganizer_164.apk com.google.code.appsorganizer 2011-04-19 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_35.apk com.morphoss.acal 2012-01-03
com.morphoss.acal_36.apk com.morphoss.acal 2012-01-09 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_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.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_212.apk com.nexes.manager 2011-03-09
com.nexes.manager_218.apk com.nexes.manager 2011-07-22 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_5.apk com.webworxshop.swallowcatcher 2011-03-10
com.webworxshop.swallowcatcher_6.apk com.webworxshop.swallowcatcher 2011-07-12 com.webworxshop.swallowcatcher_6.apk com.webworxshop.swallowcatcher 2011-07-12
com.webworxshop.swallowcatcher_7.apk com.webworxshop.swallowcatcher 2011-12-07 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.hejl.chesswalk_7.apk cz.hejl.chesswalk 2012-01-12
cz.romario.opensudoku_1104.apk cz.romario.opensudoku 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 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.browser_3.apk info.guardianproject.browser 2011-12-07
info.guardianproject.cacert_3.apk info.guardianproject.cacert 2011-10-03 info.guardianproject.cacert_3.apk info.guardianproject.cacert 2011-10-03
info.guardianproject.cacert_4.apk info.guardianproject.cacert 2011-12-11 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.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_7.apk info.staticfree.android.units 2011-01-05
info.staticfree.android.units_8.apk info.staticfree.android.units 2011-01-17 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.plus_42.apk net.osmand.plus 2011-12-08
net.osmand_25.apk net.osmand 2011-02-11 net.osmand_25.apk net.osmand 2011-02-11
net.osmand_26.apk net.osmand 2011-06-24 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_219.apk net.rocrail.androc 2011-01-10
net.rocrail.androc_221.apk net.rocrail.androc 2011-03-01 net.rocrail.androc_221.apk net.rocrail.androc 2011-03-01
net.rocrail.androc_228.apk net.rocrail.androc 2011-04-19 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 tuioDroid.impl_4.apk tuioDroid.impl 2011-11-28
tuxrider_1.0.4.apk com.drodin.tuxrider tuxrider_1.0.4.apk com.drodin.tuxrider
urbanstew.RehearsalAssistant_22.apk urbanstew.RehearsalAssistant 2011-02-19 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_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_37.apk vu.de.urpool.quickdroid 2011-03-10
vu.de.urpool.quickdroid_38.apk vu.de.urpool.quickdroid 2011-05-16 vu.de.urpool.quickdroid_38.apk vu.de.urpool.quickdroid 2011-05-16

10
stats/latestapps.txt Normal file
View 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

View 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

View File

@ -121,8 +121,25 @@ for logfile in glob.glob(os.path.join(logsdir,'access-*.log')):
if not apkname in unknownapks: if not apkname in unknownapks:
unknownapks.append(apkname) 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(): 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: if len(unknownapks) > 0:
print '\nUnknown apks:' print '\nUnknown apks:'