[Monkey] Eigene App für GooglePlay vorbereiten
Übersicht Andere Programmiersprachen FAQs und Tutorials
MidimasterBetreff: Eigene App für GooglePlay vorbereiten |
Fr, März 29, 2013 12:59 Antworten mit Zitat |
|
---|---|---|
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
BladeRunnerModerator |
Fr, März 29, 2013 14:33 Antworten mit Zitat |
|
---|---|---|
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 |
Fr, März 29, 2013 18:06 Antworten mit Zitat |
|
---|---|---|
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 |
BladeRunnerModerator |
Sa, März 30, 2013 13:20 Antworten mit Zitat |
|
---|---|---|
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 |
Sa, März 30, 2013 15:53 Antworten mit Zitat |
|
---|---|---|
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 |
||
BladeRunnerModerator |
Sa, März 30, 2013 16:43 Antworten mit Zitat |
|
---|---|---|
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 |
XeresModerator |
Sa, März 30, 2013 22:49 Antworten mit Zitat |
|
---|---|---|
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Midimaster |
Sa, Apr 20, 2013 16:11 Antworten mit Zitat |
|
---|---|---|
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 |
RaymondBetreff: Richtige Icons |
Do, Dez 31, 2015 9:22 Antworten mit Zitat |
|
---|---|---|
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 |
Do, Dez 31, 2015 18:39 Antworten mit Zitat |
|
---|---|---|
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 |
Übersicht Andere Programmiersprachen FAQs und Tutorials
Powered by phpBB © 2001 - 2006, phpBB Group