Während der Aktualisierung meiner Android-Anwendung habe ich den Paketnamen geändert. Der Android Market erlaubt es jedoch nicht, die geänderte Paketnamensanwendung als Upgrade hochzuladen. Wenn ich die Anwendung als neue Anwendung hochlade, hat der Benutzer zwei Anwendungen auf seinem Gerät? Wie kann ich sicherstellen, dass der Benutzer die Anwendung nicht von Grund auf neu herunterladen muss, ohne die Änderung meines Paketnamens rückgängig zu machen?Ändern des Paketnamens einer aktualisierten Android-Anwendung
Antwort
zwei paket = zwei verschiedene anwendung im marktplatz. Sobald Sie eine App hochgeladen haben, sollte das Paket dasselbe sein. Außerdem sollte der Schlüssel derselbe sein.
Android Market betrifft nur den Paketnamen in Ihrem Manifest, nicht den tatsächlichen Paketnamen in der Quelle.
Sie könnten versuchen, die alten Paketnamen im Manifest Attribute zu geben, dann für Maßnahmen im Bereich der neuen Paketnamen anstelle von relativen geben (dh .MainActivity)
So:
<manifest package="your.old.package" ...>
...
<application android:name="your.new.package.MainActivity" ...>
funktionieren könnte ..
Ich plane, zwei Versionen meiner App (bezahlt/frei) auf diese Weise und mit dem gleichen Projekt und Code zu bedienen.
interessant !! Ich werde meine nächste App ausprobieren. – yogsma
Sie haben Recht, Tapirboy. Android interessiert sich nicht für das Namensattribut, das Sie in Ihre Aktivitäts-Tags einfügen. Es interessiert nur das Paketattribut Ihres Manifest-Tags, soweit es um die Identität Ihrer App geht. Wenn das Paketattribut des Manifest-Tags geändert wird, betrachtet Android die App mit dieser Änderung als eine komplett andere App. – Carl
Ich erinnere mich vage an einige Probleme mit dem Eclipse-Plugin, wenn das Manifest-Paket und der Anwendungsname unterschiedlich sind. Das ist vielleicht kein Problem mehr, aber ich musste definitiv mit Eclipse ringen, wenn ich diesen Ansatz nutze. Das war vor gut einem Jahr. – Jeff
Wenn Sie den Namen des Pakets ändern, wird es als separate App behandelt - nicht nur auf dem Markt, aber apk's ersetzen im Allgemeinen nur den gleichen Paketnamen (und nur wenn beide mit demselben Schlüssel signiert sind)).
Obwohl es möglich ist, zu einem neuen Schlüssel überzuwechseln, indem ein Zwischenpaket with both keys signiert wird, gibt es derzeit keine einfache Möglichkeit, den Paketnamen zu übersteuern.
Das Beste, was getan werden kann, ist dies:
- New apk-Version mit dem gleichen Schlüssel signiert ist, aber einen anderen Paketnamen hat.
- Wenn installiert, ordnet das neue apk die
shared_prefs
mit dem alten Paketnamen an. - Die Daten werden in den neuen Paketnamen kopiert.
- Die neue Version fordert an, dass die alte Version entfernt wird, und der Benutzer sieht den Deinstallationsdialog.
Hinweis App-Daten ist in der Regel hier gehalten:
/data/data/pac.kage.name/
Ich habe nicht versucht, so kann ich nicht geben mehr noch Details. Sie könnten auch interessiert sein an meine request for a seamless way of transitioning the package name.
Ich habe den gleichen Schlüssel, aber anderen Paketnamen für meine erste hochgeladene Anwendung verwendet. – yogsma
Sie können den Hauptpaketnamen nicht ändern. Wenn Sie dies tun, kann es nicht als dieselbe App behandelt werden. –
Ich bin nicht sicher, warum Sie nach der Veröffentlichung der App das Paket ändern mussten. Sie sollten Ihre Entscheidung über das Ändern des Paketnamens überdenken. Wenn nicht möglich, dann vergiss (und in der Marktbeschreibung einen Link zur neuen App) die alte App. –