2010-05-16 7 views
7

Hallo Ich bin ein Anfänger Android-Entwickler mit Windows und der Eclipse-IDE Java-Android-Anwendungen zu entwickeln.Ich habe ein Spiel veröffentlicht, aber es gibt eine kostenlose Version des Spiels und eine kostenpflichtige Version . Der Google-Markt besteht darauf, dass die verschiedenen Versionen unterschiedliche Paketnamen haben müssen. Bis jetzt habe ich das Paket mit zwei verschiedenen Namen umgestaltet und den Import der R-Ressourcendatei jedes Mal geändert, wenn ich die verschiedenen Versionen gebaut habe. Der Code ist zu 99% für beide Versionen gleich. Gibt es einen besseren Weg?Android & Eclipse 2 verschiedene Versionen der gleichen App

Antwort

2

Sie haben verschiedene Diskussionen zu diesem Thema here und there, aber im Grunde ist die Lösung verwandt, das Projekt zu duplizieren.

Zum Beispiel (nicht auf Basis von Eclipse):

Es ist schwierig, dies zu beantworten, da wir nicht wissen, was der Unterschied zwischen den freien und nicht-freien Versionen Ihrer App.

Ich gehe davon aus, dass die Unterschiede durch eine Art globale freie/nicht-freie Flagge behandelt werden könnten. Damit meine ich, dass der gleiche Code beide Versionen der App machen würde und welche Teile aktiviert sind oder auf einem öffentlichen statischen Datenmember irgendwo wäre abhängig verwendet:

if (SomeClass.IS_PAID_APP) { 
     // add more stuff to menu, etc. 
} 

Wenn Sie können organisieren Sie Ihre App auf diese Weise, dann brauchen Sie nur eine Codebasis.
Legen Sie fest, ob Sie Ihre App auf eine Art und Weise (kostenlos oder kostenpflichtig, Ihre Wahl) und mit dem entsprechenden Paket in Ihrem Manifest für diese Version der App erstellen möchten.
Dann eine Ant-Task hinzufügen, geschieht Folgendes:

  1. Macht ein Baum Kopie Ihres Projekts dir an einem temporären Speicherort
  2. Schalten Sie die Kopie des Manifests an den neuen Paketnamen über eine Suche und-ersetzen
  3. wechseln alle Importanweisungen für Ihr altes Paket Ausgabe von R das neue Paket, wieder über Such- und ersetzen und wieder auf der Kopie, nicht Ihre ursprüngliche
  4. ändern IS_PAID_APP (oder was auch immer) zum entgegengesetzten Wert (Suche und Ersetzen in der Kopie)
  5. Führt ein Ant-Build für die Kopie des Projektes
  6. Kopiert die Binärdateien aus, dass zu dem Hauptprojekt ist/ Verzeichnis unter einem eindeutigen Namen bauen (so es doesn‘ t Ihre andere Kopie der APK clobber)
  7. Löscht die Kopie Baum in Schritt # gemacht 1

Wenn Java einen Pre-Prozessor hatte, diese etwas einfacher wäre. Die grundlegende Technik, die ich oben beschrieben habe, wird jedoch seit ein paar Jahrzehnten verwendet. Es ist klobig, aber es funktioniert, und es bedeutet, dass Sie nur einen Satz Quellcode haben, um damit umzugehen. Beachten Sie, dass die Task Ant <replace> Ihre Such- und Ersetzungsdateien gut verarbeitet.

1

Dies ist eine der Schwächen von Android Market, obwohl ich sehen kann, warum sie es so gemacht haben.Es war einfach nicht für kostenlose und kostenpflichtige Versionen Ihrer App (sie behaupten, die 24-Stunden-Rückkehr ist das, wofür das ist, aber das ist stattdessen für Piraterie) verwendet:

Wie auch immer, einfachste Sache zu tun ist zu schreiben ein Ant-Build-Skript (oder die von Ihnen verwendete Skriptsprache). Durch eine Suche ersetzen Sie den Namen Ihres Pakets durch alle .xml- und .java-Dateien. Dann mach den Build deiner App dort. Refactoring Ihren Code ist mehr Schmerzen als es wert ist IMHO ...

Verwandte Themen