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
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:
- Macht ein Baum Kopie Ihres Projekts dir an einem temporären Speicherort
- Schalten Sie die Kopie des Manifests an den neuen Paketnamen über eine Suche und-ersetzen
- 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
- ändern IS_PAID_APP (oder was auch immer) zum entgegengesetzten Wert (Suche und Ersetzen in der Kopie)
- Führt ein Ant-Build für die Kopie des Projektes
- 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)
- 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.
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 ...
- 1. Loading verschiedene Versionen der gleichen Baugruppe
- 2. iOS 7 und iOS 6 verschiedene Versionen der gleichen App
- 3. Wie man zwei verschiedene Module in Android Studio verwendet verschiedene Versionen der gleichen Bibliothek über Gradle
- 4. Veröffentlichen der gleichen App, aber zwei Versionen
- 5. Bereitstellen von 2 Versionen der gleichen Anwendung
- 6. C# 2-Versionen der gleichen MDF-Datei
- 7. Eclipse: Verschiedene JRE-Versionen erstellen und anpassen
- 8. Android: Wie verwendet man verschiedene Themen für verschiedene Android-Versionen?
- 9. ASP.net: Kann ich 2 verschiedene Versionen der gleichen DLL/Assembly im Ordner bin haben?
- 10. Log4Net: 2 Bibliotheken benötigen 2 verschiedene Versionen davon
- 11. Fehler beim Nachschlagen des Fensters - verschiedene Verhaltensweisen von der gleichen App auf 2 Galaxie Nexus
- 12. Erstellen Sie verschiedene Versionen einer Android-Anwendung
- 13. Verwenden verschiedener Versionen von Python für verschiedene Projekte in Eclipse
- 14. Android - 2 ListView in der gleichen Zeile
- 15. Android App in Eclipse
- 16. Spring Boot: Konfigurieren Sie 2 verschiedene Sorten der gleichen Klasse
- 17. Wie haben Sie 2 verschiedene Karten auf der gleichen Seite
- 18. verschiedene App mit dem gleichen Provisioning-Profil
- 19. Mongo db verschiedene Versionen
- 20. AngularJS 2: Umgang mit der App-Konfiguration für verschiedene Umgebungen
- 21. Wie man 2 verschiedene Versionen (freie, pro) Datenbankanforderung behandelt
- 22. Eclipse Android App Projekt Ausgabe
- 23. Verschiedene Versionen von Proto-Dateien
- 24. Loading mehrere Versionen der gleichen Baugruppe
- 25. Verwenden Sie 2 Versionen von Juwel zur gleichen Zeit
- 26. konfigurieren verschiedene Versionen derselben Grails-Anwendung
- 27. Was passiert, wenn zwei Android-Module des gleichen Android-Projekts unterschiedliche Support-Bibliothek-Versionen verwenden?
- 28. Wie erstelle ich ein App-Symbol für verschiedene iOS-Versionen?
- 29. Verschiedene Versionen derselben Bibliothek in Flex mischen
- 30. Verschiedene Versionen in transitive Abhängigkeiten in Gradle