Eher untypisch für diesen Blog, machen wir heute mal einen kleinen Ausflug in eher technische Gefilde. Wer kennt das Problem nicht? Ihr habt monatelang in die Konzeption, das Design und die Programmierung Eurer brandneuen und hochinnovativen Android-App gesteckt. Ihr bereitet den Launch vor, macht etwas Pressearbeit, fahrt zu einigen Konferenzen und erzählt einer Menge Menschen, dass es jetzt endlich losgeht.

Damit Eure App nun wohlbehalten bei Google Play ankommt und von dort die Reise um die Welt antreten kann, müsst Ihr Eure .apk Datei (Android application package) noch signieren. Hierfür gibt es verschiedene Möglichkeiten. Manche verwenden dafür Android Studio oder – vorausgesetzt Ihr habt bereits das ADT Plugin installiert – die Software Eclipse. Beides sind Tools, die einem diesen nicht ganz trivialen Prozess des Signierens wahrscheinlich erheblich erleichtern können. Aber wir wollen es uns ja nicht unnötig leicht machen. Als digitale Feinmanufaktur signieren wir selbstverständlich in Handarbeit. Hierfür ist eine Reihe von Handlungsschritten erforderlich, die, sobald man sie einmal erfolgreich absolviert hat, sofort in Vergessenheit geraten. Wir haben lange nach einer kleinen Bedienungsanleitung gesucht und keine geeignete gefunden. Dieser Blogartikel ist also nicht ganz uneigennützig entstanden und dient uns in Zukunft auch selbst als kleine Erinnerungsstütze 😉

Also… machen wir uns an die Arbeit.

Der Signing-Prozess für eine Android-App im Detail:



Zum Signieren Eurer App im Release Mode benötigt Ihr zunächst einen Private Key. Diesen kann man z.B. mit dem keytool dieses Java Development Kits erstellen. Das keytool lässt sich nun über Terminal ansteuern. Eine geeignete Kommandozeile hierfür sollte in etwa so aussehen:

keytool -genkey -v -keystore NAME_EURES_RELEASE_KEYS.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 20000

-keystore legt den Namen Eures Keystores fest. Wir haben hier den Platzhalter: NAME_EURES_RELEASE_KEYS.keystore verwendet, dieser muss durch Eure Eingabe ersetzt werden.

-validity gibt hierbei die Gültigkeitsdauer Eures Keys in Tagen an. Im Beispiel oben liegt diese bei 20000 Tagen, das sollte erstmal reichen…

Nach der Eingabe der Kommandozeile fragt Terminal nun einige Informationen von Euch ab. Dies sind Angaben zum Urheber (Vor- und Nachname, Name und Sitz des Unternehmens, etc.) und an dieser Stelle wird auch Euer Keystore Password generiert. Es muss mindestens 6 Zeichen lang sein und Ihr solltet es gut aufbewahren! Wenn das geklappt hat, bekommt Ihr die hinterlegten Daten noch einmal angezeigt. Abschließen könnt Ihr diesen Prozess dann, indem Ihr an der entsprechenden Stelle ein „Ja“ bzw. „Yes“ eintragt. Jetzt habt Ihr Euren Private Key generiert und somit den ersten Schritt erfolgreich gemeistert.

Als nächstes müsst Ihr nun Eure App signieren. Ihr benötigt dafür eine unsignierte .apk im Release Mode, Eure Datei mit dem Private Key und z.B. die Anwendung jarsigner

jarsigner -verbose -keystore /PFAD/NAME_EURES_RELEASE_KEYS.keystore /PFAD/NAME_EURER_APP.apk NAME_EURER_APP

Bei der Option –keystore müsst Ihr den Pfad angeben, an welcher Stelle Euer eben generierter Keystore zu finden ist. Nach der entsprechenden Verifikation erhaltet Ihr Eure signierte App. Weiter geht’s! Als nächstes solltet Ihr noch Gebrauch vom zipalign Tool machen. Näheres zu den Vorzügen dieses Tools findet Ihr hier. Um es an dieser Stelle etwas kürzer zu halten: Dies reduziert den benötigten Arbeitsspeicher, den Eure App im laufenden Betrieb verwendet.

/PFAD/zipalign -v 4 /PFAD/NAME_EURER_APP_QUELLE.apk /PFAD/NAME_EURER_APP_ZIEL.apk

 

Damit ist es vollbracht – Die Signierung ist abgeschlossen!



Diese kleine Bedienungsanleitung wäre unvollständig, würde sie Euch nicht auch über den (möglichen) weiteren Verlauf in Kenntnis setzen. Der Vollständigkeit geschuldet, möchten wir zu guter Letzt noch auf einige mögliche Probleme hinweisen. Unser erster Versuch die App zu signieren verlief vermeintlich erfolgreich. Wir konnten die .apk auf Google Play bereitstellen, dort wurde sie akzeptiert und war wenige Stunden später bereits gelistet. Die schlechte Nachricht erreichte uns dann erst einige Stunden später: Scheinbar konnten einige Smartphones die App nicht herunterladen. Einige teilten uns mit, dass bei Ihnen eine Fehlermeldung angezeigt wurde. Sie lautete:

Die Paketdatei wurde nicht richtig signiert.

Einen wirklichen Support für dieses Problem konnten wir leider nirgendwo ausmachen. Einige schlechte Bewertungen und ratlose Stunden später, stießen wir dann in einem Forum auf die Anmerkung, den Prozess des Signierens einfach mal mit einem älteren JDK (statt JDK 7/8 mit JDK 6) zu wiederholen. Dies führte letztlich zum Erfolg! Das oben im Text verlinkte Development Kit ist deshalb auch eine ältere Version. Es müsste bei Euch also alles funktionieren….also eigentlich…na ja Ihr wisst ja, wie es läuft. Wir hoffen, mit diesem technischen und zugegebenermaßen eher untypischen Ausflug auf diesem Blog einigen Gleichgesinnten weitergeholfen zu haben. Falls Ihr eigene Tipps und Tricks rund um den Signierungsprozess habt, würden wir uns freuen wenn Ihr sie hier mit uns teilt. Hinterlasst also gerne Eure Ergänzungen in den Kommentaren.

Wir wünschen frohes Hochladen und bis bald!

P.S.: Unsere neue iOS Version ist nun ebenfalls signiert, eingereicht und wartet auf die Freigabe für den App Store. Wir halten Euch auf dem Laufenden…

Leave a Comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.