Skip to content

Projekt Carotine: Beta App Distribution

Carotine on AndroidWenn man Beta Versionen für Android Apps verteilen will, muss man sich überlegen, wie man das am besten tut. Ich habe bei Plume den Alpha Test mitgemacht und dort war das richtig angenehm: Einmal im Forum eine Alpha Version herunter geladen und installiert, danach meldet die Plume App immer selbstständig, wenn eine neue Version vorhanden ist und installiert diese auf Anfrage. Das ist natürlich der komfortabelste Weg und ich habe mir mal angesehen, wie die das machen.

Sie benutzen den Service Hockey App. Dieser deutsche Service ist in der Tat sehr genial mit unglaublich vielen Optionen (z.B. eingeschränkten Testgruppen oder öffentliche Tests, einfach zu bedienende Management Konsole usw). Wir setzen den selben Service schon seit einiger Zeit bei dailyme ein, um unsere Betatester zu versorgen, und haben auch da gute Erfahrungen mit dem Service gemacht. Da dieser Service aber mindestens 10 USD pro Monat kostet, kommt er für kostenlose Apps wie z.B. mein Superious einfach nicht in Frage. Ich halte den Service in der Tat, so gut er auch ist, für etwas überteuert. Deshalb habe ich mich nach Alternativen umgesehen.

Offenbar haben sich andere darüber auch schon Gedanken gemacht, so versucht der alternative Market AndroidPIT gerade mit "Beta Apps" zu punkten. Die Idee ist prima: Ein Market hat bereits alles, was es dafür benötigt (Distribution und Update, Commnity usw). Es bietet Vorteile für alle: Entwickler werden in den Market gezogen, weil sie diesen Distributionskanal interessant finden (= mehr Apps), Anwender ebenfalls, weil sie in Beta Versionen stöbern können und den Market Betreiber kostet das nicht viel mehr, er bekommt aber mehr Entwickler, Anwender und Apps. Perfekt also.

Leider ist der Beta Apps Bereich bei AndroidPIT selbst noch sehr Beta und hat außerdem noch den selben Namensraum, wie der normale Market. Das bedeutet, dass man keine Beta Versionen von Apps hochladen kann, die bereits im Market publiziert sind, man kann dementsprechend nur Beta Tests von neuen Apps fahren. Das ist leider nicht mein Usecase. Somit habe ich mir jetzt einfach etwas eigenes gebaut. In nur einem Tag ist so zu sagen eine "Poor Mans HockeyApp" dabei entstanden. :-)

Die Voraussetzungen

So schön die ganzen Optionen von Hockey App auch sind, für einen "kleinen Betatest" benötige ich davon nur sehr wenige.

  • Ich will einen Service haben, bei dem ich die Beta Apps hinterlegen kann. Ich benötige keine geschlossenen Benutzergruppen, wer sich traut, die Beta auszuprobieren, den will ich nicht in dem Wunsch beschränken.
  • Mit den Beta Apps müssen Metainformationen zu der App hinterlegt und abgefragt werden können. Also so etwas wie Programmname, Version, "Was ist neu" usw.
  • Ich benötige eine möglichst einfach einzubindende Bibliothek für Android, die automatisch nach neuen Versionen schaut und diese dann, falls gefunden, dem Beta Tester InApp mitteilt und einen Update vornehmen kann.

Das ist es eigentlich schon. All das habe ich mir gestern in einem Tag zusammen gebaut.

Carotine Server für Beta Distribution

Der Cartine Distributionsserver erfüllt bereits alle oben genannten Kriterien, allerdings ist er derzeit noch etwas "raw".. Er hat nur die notwendigste Oberfläche (oder anders ausgedrückt: Sieht ziemlich scheiße aus :-D), hat keinerlei Admin Interface oder Benutzerverwaltung. Somit wird alles über Dateien gesteuert: Wenn man an die Verzeichnisse auf dem Server heran kommt, dann kann man auch eine Beta Distribution einrichten. Das Einrichten ist allerdings auch nicht sehr schwer: Man legt im Store Verzeichnis ein weiteres Verzeichnis für die neue Beta Distribution an, hinterlegt dort die APK Datei und eine JSON Datei mit entsprechenden Metainformationen. Den Rest (Beschreibungsseite, Download Seite und programmatisch abfragbare Metainformation) erzeugt sich dann der Carotine Server aus beidem.

Carotine hat einen Vorteil zu Services wie HockeyApp: Im Gegensatz zu diesem kann Carotine auf jedem beliebigen Server eingerichtet werden, ist also völlig unabhängig von einem zentralen (bezahlten) Service. Wer einen Server und dort ein wenig Bandbreite zur Verfügung hat (normaler Weise benötigt es ja nicht viel, weil so viele Nutzer nun auch keine Beta App installieren und testen), dann kann man sich seinen eigenen Beta Service einrichten. Der Server muss nur PHP können und eine .htaccess akzeptieren. Eine Datenbank ist nicht erforderlich. Nach genau so was hatte ich gesucht.

Carotine Android Bibliothek

Zusätzlich zu diesem Server habe ich mir noch eine Bibliothek für Android gebaut, die alles ausführt, was man InApp für einen Beta Test benötigt:

  • Sie schaut regelmäßig auf dem Carotine Server nach, ob es eine neue Version der Anwendung gibt.
  • Wurde eine gefunden, so poppt ein Dialog hoch, der das meldet und ein "WhatsNew" darstellt, das vom Carotine Server abgeholt wurde.
  • Per Knopfdruck kann man den Update ausführen.

Einen Eindruck von der Bibliothek in Aktion kann man sich auf obigen Bildschirm Foto machen.

Dabei ist das Einbinden der Lib in die eigene App denkbar einfach: Die Bibliothek ist eine Android Library, die man z.B. zusätzlich zu seiner App in den Eclipse Workspace ablegt und mit der App verbindet. Ein einfacher Aufruf in der Haupt-Activity der Applikation ist alles, was man dann noch einbinden muss:

Carotine.check(this, "carotine.meinserver.com", "meineapp");

Dabei wird der Host übergeben, auf dem der eigene Carotine Server installiert ist, sowie der Name der Beta App unter dem die App am Carotine Server hinterlegt wurde. That's it.

Fazit

Carotine habe ich komplett innerhalb eines regnerischen Nachmittags erstellt und funktionsfähig bekommen. Gerade der Server aber auch die Lib benötigen noch ein wenig Feinschliff. Ich denke, wenn ich mit der Stabilität und Funktion einigermaßen zufrieden bin, werde ich ein Projekt bei GitHub aufsetzen, um den Service OpenSource zu machen. Vielleicht sind auch andere Entwickler auf der Suche nach so einem kostengünstigen Service, die eigenen Beta Apps zu verteilen.

Open Source bei GitHub könnte auch für mich prima sein, evtl finden sich andere Entwickler, die weitere Ideen haben und Carotine erweitern. Der Carotine Server ist so aufgebaut, dass er im Prinzip Updates zu allem verteilen kann, er ist in keiner Weise auf Android Apps beschränkt. Die Meta Informationen können frei hinterlegt werden und eine (andere) Lib kann diese dann 1:1 abfragen.  Somit könnte man dort auch Updates für PHP Plugins, Desktop Anwendungen usw hinterlegen, man müsste sich dann nur die Lib bauen, die den Server abfragt und das Update darstellt und ausführt.

Der Name Carotine

Als Abschluß: Was soll eigentlich der Name? Nun.. Als Assoziation zu "Beta" fiel mir vor allem "Betakarotin" ein. Gibt man das Wort in Wikipedia ein, kommt man sofort auf dieses (deutsche) Wort. Englisch ausgesprochen klingt das doch recht cool, oder? 8-)

Somit ist das Icon für Carotine eine Karotte. Diese hier ist aus einer Public Domain Datenbank, wer eine schickere als Icon malen kann, ist herzlich willkommen, das zu tun! :-D

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Dieses Blog erlaubt Dir, Audio Kommentare über audioboo.fm hinzuzufügen. Erstelle einen neuen Boo und gib hier den Link auf die Seite Deines Boos ein.
record
Wenn Du Deinen Twitter Namen eingibst wird Deine Timeline in Deinem Kommentar verlinkt.
Bewirb einen Deiner letzten Artikel
Dieses Blog erlaubt Dir mit Deinem Kommentar einen Deiner letzten Artikel zu bewerben. Bitte gib Deine Blog URL als Homepage ein, dann wird eine Auswahl erscheinen, in der Du einen Artikel auswählen kannst. (Javascript erforderlich)
(Bedingung: 1 Kommentare geschrieben)
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
tweetbackcheck