[Monkey] Eigene App für GooglePlay vorbereiten

Übersicht Andere Programmiersprachen FAQs und Tutorials

Neue Antwort erstellen

Midimaster

Betreff: Eigene App für GooglePlay vorbereiten

BeitragFr, März 29, 2013 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
In diesem Tutorial will ich mal alle Erfahrungen zusammenfassen, die ich jetzt in Zusammenhang mit GooglePlay gemacht habe. Um eine eigene App dort zu veröffentlichen müssen an der App einige Veränderungen vorgenommen werden, damit der Store sie akzeptiert unabhängig davon, ob die App kostenlos oder kostenpflichtig wird.

In diesem Tutorial lernst Du nicht, wie man sich bei GooglePlay anmeldet. Es geht eher um die programmiertechnischen Bedingungen einer AppStore-App. Es gibt dabei Schritte, die darf man pro App nur beim ersten Mal durchführen. Und es gibt Schritte, die muss man bei jedem Update durchführen.


Das ist zu tun:

Die App muss einen eindeutigen Namen erhalten, eine Versionsnummer und Icons.

Die Standard-Signatur muss entfernt werden und durch eine individuelle Sigantur ersetzt werden. Alles Files der Installations-Datei werden damit signiert und wieder zusammengepackt.




Vorbereitungen pro App:

Zunächst muss auf der C:\ ein neuer Ordern KeyTools angelegt werden. In diesem Ordner wird ein weiterer Ordner Keys angelegt.

Mit einem Text-Editor erstellst Du nun die folgenden drei Dateien und speicherst sie in den Ordner KeyTools.



1. Create_Key_For_MyApp.Bat

Die erste Datei enthält nur eine Zeile. Der gesamte Text muss in einer Zeile stehen:
Create_Key_For_MyApp.Bat:
Code: [AUSKLAPPEN]
C:\Programme\Java\jdk1.6.0_32\bin\keytool -genkey -alias MyApp.keystore -keyalg RSA -validity 20000 -keystore keys/MyApp.keystore


Den Pfad musst Du an Deine Gegebenheiten anpassen:
C:\Programme\Java\jdk1.6.0_32\bin\keytool -genkey -alias MyApp.keystore -keyalg RSA -validity 20000 -keystore keys/MyApp.keystore

Den AppNamen natürlich auch:
C:\Programme\Java\jdk1.6.0_32\bin\keytool -genkey -alias MyApp.keystore -keyalg RSA -validity 20000 -keystore keys/MyApp.keystore



2. Sign_MyApp.Bat

Die zweite Datei enthält 3 Zeilen. Der mittlere Text muss in einer Zeile stehen:
Sign_MyApp.Bat:
Code: [AUSKLAPPEN]
cd C:\keytools\
C:\Programme\Java\jdk1.6.0_32\bin\jarsigner -verbose -keystore keys/MyApp.keystore -signedjar MyApp-signed.apk MyApp.apk MyApp.keystore
pause


Einige Angabe musst Du an Deine Gegebenheiten anpassen:

C:\Programme\Java\jdk1.6.0_32\bin\jarsigner -verbose -keystore keys/MyApp.keystore -signedjar MyApp-signed.apk MyApp.apk MyApp.keystore




3. Align_MyApp.Bat

Die dritte Datei enthält 3 Zeilen. Der mittlere Text muss in einer Zeile stehen:
Align_MyApp.Bat:
Code: [AUSKLAPPEN]
cd C:\keytools\
C:\Programme\Android\android-sdk\tools\zipalign -v 4 MyApp-signed.apk MyApp-signed-zipped.apk
pause


Einige Angabe musst Du an Deine Gegebenheiten anpassen:
C:\Programme\Android\android-sdk\tools\zipalign -v 4 MyApp-signed.apk MyApp-signed-zipped.apk






Die folgenden Schritte für jede App nur einmal im Leben ausführen:


Ein Schlüssel wird nur einmal erzeugt. Theoretisch genügt es alle Apps mit immer wieder dem gleichen Schüssel zu signieren. Ich bevorzuge es aber pro App einen eigenen Schlüssel zu haben. Allerdings verwende ich für Varianten dieser App (Kaufversion Freeversion, Version II, etc...) dann immer den selben Schlüssel.

Für eine neue App erstellst Du einfach eine neue Create_Key_For_MyNextApp.Bat, indem Du eine bestehende anpasst und sie anschließend unter dem neuen Namen Create_Key_For_MyNextApp.Bat abspeicherst.
Code: [AUSKLAPPEN]
C:\Programme\Java\jdk1.6.0_32\bin\keytool -genkey -alias MyNextApp.keystore -keyalg RSA -validity 20000 -keystore keys/MyNextApp.keystore



Starte die Create_Key_For_MyNextApp.Bat nur einmal, wenn Du einen neue App erfunden hast. Beim Ausführen erfolgt die Eingabe einer Reihe von Angaben:

Code: [AUSKLAPPEN]
   Passwort=WieDuWillst
   Organisation=DeinLabel
   Organisation=DeinLabel
   Vor und Zuname=Vorname Nachname
   Stadt=München
   Provinz=Bayern
   Land=DE


Nach dem Ende wird ein Key MyNextApp.keystore erzeugt und der befindet sich anschließend im Unterorder KEYS. Merke Dir das Passwort. Du wirst es beiim Signieren von Updates deiner App immer wieder benötigen.




Die folgenden Vorbereitungen triffst Du direkt in Monkey

1. Eindeutiger Name

Deine App muss einen eindeutigen Namen für den Appstore erhalten. Füge daher diese Zeilen oben in dein Monkey-Script ein:

Code: [AUSKLAPPEN]
'#ANDROID_APP_LABEL="Beta-Test"
#ANDROID_APP_LABEL="Meine App"

'#ANDROID_APP_PACKAGE="com.deinlabel.meineapptest"
#ANDROID_APP_PACKAGE="com.deinlabel.meineapp"


durch die "com..." Bezeichnung werden später die Apps vom Smartphone auseinandergehalten. Der Anzeigename des Start-Icons wäre in diesem Beispiel "Meine App", während der android-interne Name "com.deinlabel.meineapp" wäre.


2. Reinigen des Data Ordners

Kontrolliere jetzt den "MYApp.data" Ordner auf unnötige Alt-Dateien und entferne sie. So erzeugst Du eine schlanke App.


3. Entferne Consolen PRINTs

Kommentiere auch alle PRINT Befehle aus. Sie würden später beim User unnötige in der Debug-Konsole ausgegeben. Auskommentierte Monkey-Zeilen sind übrigens im späteren Java-Code wirklich nicht mehr enthalten.


4. Auf Release umstellen

Verstelle die Build-Ausgabe nun auf "RELEASE". Mach Dir keine Sorgen, wenn dein Build anschließend wieder "*-debug.apk" heißt. Es ist trotzdem OK.




Die folgenden Vorbereitungen triffst Du im Build-Ordner


1. AndroidManifest

Zu prüfen ist das AndroidManifest, das sich in dem BIN-Ordner befindet:

C:\Monkey\MyApp\MyApp.build\android\bin\AndroidManifest.xml

Wenn hier etwas nicht korrekt sein sollte, musst Du Änderungen allerdings immer in diesem Manifest vornehmen und anschließend die App noch einmal in Monkey builden:

C:\Monkey\MyApp\MyApp.build\android\templates\AndroidManifest.xml



Code: [AUSKLAPPEN]
dieser Name muss immer MonkeyGame bleiben:
   android:name="MonkeyGame"

Diese PlayStore-interne Versionsnummer muss vor jedem Upload um 1 erhöht werden:
   android:versionCode="6"

drehbar oder nicht:
   android:screenOrientation="user"
Dies ist die angezeigte Versionsnummer. Du kannst sie frei gestalten:

   android:versionName="1.2"

Diese Werte lässt Du wie sie sind:
   android:installLocation="auto">
   android:minSdkVersion="4"
   android:targetSdkVersion="7" />
   <uses-permission android:name="android.permission.INTERNET"></uses-permission>
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

Diesen Wert musst du ergänzen, wenn Deine Apps auf Android 4 laufen sollen:
   <activity
   ...
      android:configChanges="keyboardHidden|orientation|screenSize"


Diese Änderung ist nötig, um GoogplePlay zu überzeugen, dass es sich um keine DEBUGGING-APP handelt. Suche diese Zeile und füge den hinteren Teil an die bereits bestehende Zeile an:

${ANDROID_MANIFEST_MAIN}
   <application android:label="${ANDROID_APP_LABEL}" android:icon="@drawable/icon" android:debuggable="false">



2. Richtige Icons?

Überprüfe auch, ob wirklich Deine Icons in die App aufgenommen wurden:

C:\Monkey\MyApp\MyApp.build\android\bin\res\drawable-hdpi\icon.png


Wenn dort das falsche PNGs dargestellt wird, kopiere Dein PNG "icon.png" in jedes der 3 folgenden Verzeichisse und builde in Monkey erneut:

C:\Monkey\MyApp\MyApp.build\android\res\drawable-hdpi\icon.png
C:\Monkey\MyApp\MyApp.build\android\res\drawable-ldpi\icon.png
C:\Monkey\MyApp\MyApp.build\android\res\drawable-mdpi\icon.png






Entfernen der Monkey Signatur

Nun hast Du alle Schritte oben abgearbeitet und die finale Apk-Datei gebuildet. Nun muss diese APK-Datei aber von den Signaturen, die Monkey eingefügt hatte, befreit werden. Ohne diesen Schritt kannst Du deine Signaturen im folgenden nicht einfügen.


1. Apk umbenennen

Die MonkeyGame-debug.apk...

C:\Monkey\MyApp\MyApp.build\android\android\bin\MonkeyGame-debug.apk

...wird in den endgültigen Namen MYGAME.apk umbenannt.


2. Monkey Signatur entfernen

Anschließend wird sie mit 7ZIP geöffnet. 7Zip zeigt Dir den Inhalt an. In der Apk befindet sich ein Ordner META-INF. Den entfernst Du nun. Beende 7Zip wieder.


3. Alte Apks löschen

Wechsle in dem Keytools Ordner.

C:\basic\monkey\keytools\

Dort löscht Du nun eventuell von der letzten Veröffentlichung vorhandene APKs . Entferne diese 3:

C:\basic\monkey\keytools\MyGame.apk
C:\basic\monkey\keytools\MyGame-signed.apk
C:\basic\monkey\keytools\MyGame-signed-zipped.apk


4. Neue Apk verschieben

Verschiebe nun die neue MyGame.apk von...

C:\Monkey\MyApp\MyApp.build\android\android\bin\MyGame.apk

...in den den Keytools Ordner....

C:\basic\monkey\keytools\MyGame.apk





Das Signieren beginnt


Jetzt sind nur noch 2 Schritte nötig. Dann kannst Du Deine App veröffentichen:

1. Signieren mit Sign_MyApp.Bat

Starte die Sign_MyApp.Bat. Beim Ausführen der BAT wird die Eingabeaufforderung geöffnet. Dort gibst Du Dein Passwort ein, das Du für diese App einmal festgelegt hattest. (siehe Kapitel "Die folgenden Schritte für jede App nur einmal im Leben ausführen"). Das Passwort wird in der Eingabeaufforderung nicht angezeigt. Beende Deine Eingabe mit RETURN. Beende die Sign_MyApp.Bat mit einem weiteren RETURN. Anschließend gibt es eine "MyGame-signed.apk"


2. Zippen mit Align_MyApp.Bat

Starte anschließend die Align_MyApp.Bat. Beim Ausführen der BAT wird die Eingabeaufforderung geöffnet. Du musst hier nichts eingeben und beendest die Align_MyApp.Bat sofort wieder mit einem weiteren RETURN. Anschließend gibt es eine "MyGame-signed-zipped.apk"


3. Veröffentlichen

Das wars! Gratulation! Die neu entstandene "MyGame-signed-zipped.apk" kannst Du sofort so veröffentlichen.
  • Zuletzt bearbeitet von Midimaster am Mi, Jan 20, 2016 10:24, insgesamt 5-mal bearbeitet

BladeRunner

Moderator

BeitragFr, März 29, 2013 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Sehr schön (ich werde diesen Post bei Bedarf entfernen). Allerdings frage ich mich warum Du zwingend eine Anlage des Keytools auf C:/ vorschreibst. Ich würde mir sowas nie auf die Systemplatte setzen, und es sollte ja theoretisch auch egal sein auf welchem Volume Du das anlegst.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Midimaster

BeitragFr, März 29, 2013 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
für Kommentare und Vorschläge gibt es immer einen Kritik-Thread.

https://www.blitzforum.de/foru...hp?t=39162

Da werde ich Dir dann auch antworten.

Vielleicht kannst Du ja jetzt beide Antworten dorthin umtubbern?
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

BladeRunner

Moderator

BeitragSa, März 30, 2013 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal im Ernst, Midimaster, ich finde es ... unschön, wenn Du hier versuchst deine eigenen Strukturregeln durchzuboxen. Du verweist mich in dem Forum dass ich moderiere auf einen anderen Thread, den Du vor Monaten in einem anderen Subforum erstellt hast zu einem Tutorial was Du in der Codearchivsektion einstellst.
Fällt Dir da was auf?

Also: Wenn Du schon einen Kritik & Anregethread brauchst (was ich in Anbetracht der Durchschnittsresonanz schon überzogen finde) dann sollte der zu diesem Tutorial und in der selben Sektion erstellt sein.
Des weiteren finde ich dass ein Tutorial im Codearchiv eigentlich nichts zu suchen hat - unter 'Allgemein' könnte es passen, Wenn es um das Erstellen von Modulen ginge auch grade noch unter Module.

Ich möchte Dich hiermit auffordern in Zukunft solche Späße vorneweg mit einem der Moderatoren abzusprechen, denn so ist es Kraut und Rüben.

Ich werde dieses Tutorial nun nach allgemein verschieben, den Kritik-Thread kannst Du meinethalben behalten. Ich werd diese Posts jedoch belassen, schon allein als Dokumentation für meine altersschwachen Geist.

So sehr ich es schätze dass Du immer Wissen weitergeben willst und versuchst die Leute hier zu motivieren, so sehr muss ich immer wieder feststellen dass ich deine Alleingänge und deinen Stil nicht gutheissen kann.

~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Midimaster

BeitragSa, März 30, 2013 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo?

Du hattest doch in der ersten Antwort vorgeschlagen deinen Post wieder zu verschieben?!?

Oder meinstet Du, mit...

"... Sehr schön (ich werde diesen Post bei Bedarf entfernen)...."

...dass Du so gerne meinen Beitrag löschen möchtest. Das hatte ich dann leider falsch verstanden.

Ich sehe zwar keinen Grund meinen Beitrag zu löschen. Aber wenn dem so ist, dann war's das für mich hier!


Ich hatte von den anderen Moderatoren auh schon bei früheren Tutorials die Erlaubnis ein getrenntes "Kritik-Thread" zu führen und hatte dies dann auch immer im ersten Beitrag erwähnt. Bei diesen Tutorial hier schien es mir nicht wichtig. Aufgrund Deiner Anfrage hatte ich den Eindruck Du würdest gerne darauf bestehen....

Diesmal versuche ich gar nix "durchzuboxen".

Das Code-Archive Forum wählte ich, weil es ja kein Monkey-Tutorial-Forum gibt. Wohin das dann wirklich gehört, soll ruhig ein Moderator entscheiden. Dagegen habe ich nix, aber gegen Deinen Ton schon.

"durchboxen", "in Anbetracht der Durchschnittsresonanz", "in Zukunft solche Späße..." sind Begriffe, die wirklich fehl am Platze sind:

Da du mein Verhalten mit "durchboxen" bezeichnest, unterstellst du mir eine Agressivität, die ich nicht gezeigt habe...

"in Anbetracht der Durchschnittsresonanz..." ist einfach herabwürdigend. Das neue Tutorial hat jetzt bereits 111 Aufrufe, meine anderen Monkey-Tutorials so um die 800, meine Tutorials allgemein um die 2000. Wieviele Aufrufe braucht man denn, um von von einer würdigen Resonanz zu sprechen?

Ebenso "in Zukunft solche Späße..." Meine Beiträge erstelle ich in der selben Ernsthaftigkeit wie andere. Vielleicht sind sie nicht immer so hilfreich für die Profis. Ich habe aber durchaus eine Leserschaft, die von den Beiträgen profitiert und das auch so kommuniziert....

Was hab ich Dir getan?


Deine Arbeit hier in allen Ehren.... Aber bald gibt es hier gar nix mehr zu verschieben, wenn das so weiter geht:

https://www.blitzforum.de/stat...13&m=3

BladeRunner

Moderator

BeitragSa, März 30, 2013 16:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
(ich werde diesen Post bei Bedarf entfernen)

War genauso geminet dass ich es - dem Lesefluß förderlich- entfernen werde wenn die Antwort denn Banal oder integriert sein sollte. Ich weiss ja wie sauber Du deine Threads magst.

Du hast MIR nichts getan. Aber mir fällt immer wieder auf dass Du durch die Hintertür deine eigene Art der Moderation aufzubauen versuchst. (Und ich bin nebenbei nicht der einzige dem das ausgefallen ist).

Ich unterstelle Dir dabei auch keine bösen Absichten. Ich weise dich nur darauf hin dass es auffällt und dass ich mir eben einen anderen Umgang wünsche.
Du musst Dich für deine Wahl auch nicht rechtfertigen, ich habe das ja schon korrigiert. Der Hinweis kam da im Wesentlichen um weiteres Unbill in Zukunft zu vermeiden.
"durchboxen" - meine Wortwahl. Sie muss dir nicht schmecken, aber wie gesagt, das sehen mehr als eine Person so.
"in Anbetracht der ..." Dito. Noch dazu ist es in der Tat so dass kein Thread von Dir durch Anfragen so zugemüllt gewesen wäre dass man ihm im Sinn nicht mehr hätte folgen können. Wir haben eben iene recht begrenzte Userzahl hier. Das gilt im Allgemeinen und nicht nur bei deinen Threads. Ich kann damit Leben dass Du diese Kritikthreads machst, aber dann bitte konsequent im selben Froum und bezogen auf einen Thread. Auch wenn ich glaube dass es sinniger wäre im Zweifelsfall ein oder zwei Posts zu editieren.
"in Zukunft solche Späße" ist ebenfalls der BladeRunnersche Schreibstil der nicht als Angriff zu werten ist, es sei denn man ist ein Hund der bellen will.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Xeres

Moderator

BeitragSa, März 30, 2013 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach Kinder, darf ich kurz (hoffentlich schlichtend) etwas einwerfen?

Hier gibt es das übliche: Kommunikationsmedium bedingte Ungenauigkeiten und Psychologie!

In einer geschlossenen Gruppe wie dem Forum (genauer: den alt eingesessene Nutzern) kommt es gern mal zu der "wir machen das so, weil wir es immer so gemacht haben" Attitüde. Wer da neue Ideen bringt (Monatliche Galerieabstimmungstage z.B.) macht sich zwangsläufig unbeliebt - nicht weil die Idee schlecht gedacht oder ausgeführt wird, sondern weil sie neu ist.

Wenn du, Midimaster, dem Alleinbesitzer des Forums (und Oberhaupt einer -höher gestellten- Gruppe) sagst, du würdest seine Anfrage wo anders beantworten... Siehst du das Autoritätsproblem, dass du Auslöst? Sagst du einem Polizisten, der dir eine Frage gestellt hat "ich beantworte ihre Frage in dem Cafe dort drüben"?
(Ich will nicht implizieren, Moderatoren wären sowas wie Polizisten, es geht allein um den Autoritätskonflikt.) Wo Regeln nur mittels Autorität durchgesetzt werden, kann man auf sie nicht verzichten und mal eine schnippische Antwort (real oder nur als solche wahrgenommen) durchgehen lassen.

Wir Kommunizieren hier über Text - da gehen Konnotationen schnell verloren. Bitte vermutet vom Gegenüber nicht das schlimmste und bleibt sachlich.

Midimaster: Deine Beiträge sind qualitativ durchaus hochwertig - wie BladeRunner auch schon erwähnte - und ich schätze durchaus deine frischen Ideen um das Portal zu verbessern. Sei dir aber bewusster, wie du die Dinge formulierst.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Midimaster

BeitragSa, Apr 20, 2013 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe soeben das Tutorial vervollständigt. Nun sind alle Schritte von der Vorbereitungen beim Builden bis zum Signieren beschrieben. Ich hoffe, irgendwer kanns mal gebrauchen....
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
 

Raymond

Betreff: Richtige Icons

BeitragDo, Dez 31, 2015 9:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Midimaster
Ich habe da eine Frage zum Punkt 2. "Richtige Icons" ?
Da stehen nur diese Grössen :
Zitat:
hdpi, ldpi, mdpi

Was ist mit diesen Auflösungen
Zitat:
xxxhdpi, xxhdpi, xhdpi ?

Laut Google sollen diese Größen auch vorhanden sein aber Monkey erstellt ja nur die oben genannten.
gruss raymond

DAK

BeitragDo, Dez 31, 2015 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie man aus den Namen erraten kann, sind diese Größen erst nachträglich hinzugekommen (xxxhdpi klingt ja schon reichlich blöd), da es früher so hohe DPI gar nicht gegeben hat. Nehme an, wie das Ganze gemacht wurde, war von sowas noch keine Rede.

Diese ganzen DPI-Größen sind nicht notwendig, nur hilfreich. Wenn du ein Gerät hast, das eine höhere Auflösung hat, dann werden die Grafiken raufskaliert, das heißt, sie schauen nicht so schön aus, wie man es machen könnte, aber es funktioniert normal weiter. In den meisten Fällen wird man es nicht wirklich merken, im schlimmsten Fall sind die Bilder etwas verblurt.
Gewinner der 6. und der 68. BlitzCodeCompo

Neue Antwort erstellen


Übersicht Andere Programmiersprachen FAQs und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group