[android] Erstellung von Demo und Vollversion App basierend auf einer Codebasis / Projekt



Answers

Ich sehe den einfachsten Ansatz drei Projekte zu haben:

  1. Demo
  2. voll
  3. Bibliothek

Die Demo- und vollständigen Projekte haben jeweils ihren eigenen eindeutigen Paketnamen, wie er in der jeweiligen Manifest-Datei definiert ist. Ihre Aktivitäten sind lediglich Ports, die Informationen in einem Paket an die primäre Aktivität im Bibliotheksprojekt senden. Die Aktivität im Bibliotheksprojekt liest das übergebene Paket nach den erforderlichen Parametern, die bestimmen, ob es von der Demo-Aktivität oder der vollständigen Aktivität gestartet wurde. Dann wird es entsprechend weitergehen.

Die Logik ist also so:

Benutzer startet die Demo-Aktivität -> Die Demo-Aktivität erstellt ein Paket mit den Informationen, dass es die Demo-Aktivität ist -> Die Demo-Aktivität startet die Bibliotheksaktivität, die dann den Rest des Programms im Demo-Modus ausführt.

ODER

Benutzer startet die vollständige Aktivität -> Die vollständige Aktivität erstellt ein Bündel mit der Information, dass es die vollständige Aktivität ist -> Die vollständige Aktivität startet die Bibliotheksaktivität, die dann den Rest des Programms im Vollmodus ausführt.

Question

Ich habe eine Android-App in einem Projekt mit Eclipse entwickelt - sie ist strukturiert (vom iPhone kommend), also definiert eine Konstante, ob es sich um die Demo oder die Vollversion handelt.

Jetzt habe ich das Problem, dass ich jedes Mal, wenn ich die Demoversion erstellen möchte, die Konstante ändern muss, aber auch eine Kopie des Projekts mit einem anderen Paketnamen erstellen muss.

Offensichtlich muss der Code in der ursprünglichen Vollversion in die Demo kopiert werden oder ich muss die Erstellung der Demo-App jedes Mal wiederholen, wenn ich meine App einreiche.

Ich sehe drei mögliche Ansätze:

1. Während ich mich mit Bibliotheksprojekten beschäftigt habe, ist mir immer noch unklar, wie dies in diesem Fall wirklich eine gute Lösung darstellt.

Zum Beispiel, wenn ich die Vollversion mit einer Aktivitätsstruktur habe:

A1
A2
A3

Verwenden von Dienstprogrammklassen U1, U2

Zweifellos können U1 und U2 in einem Bibliotheksprojekt sein und von beiden Projekten referenziert werden - aber die Aktivitäten, strings.xml, Grafiken, Layouts müssen dupliziert werden (oder gibt es eine andere Möglichkeit, die ich nicht sehe?) Dies ist ein guter Weg vorwärts und wurde leider in ähnlichen Fragen zu diesem Thema nicht erläutert, als dieser Ansatz vorgeschlagen wurde.

2. Der andere Weg wäre, verschiedene Paketnamen basierend auf verschiedenen Build-Einstellungen (ähnlich wie beim iPhone) zu erstellen, dies scheint jedoch in Eclipse nicht möglich zu sein, anstatt einige externe Skripte zu verwenden (was ich ehrlich gesagt - lieber vermeide) es scheint eher fehleranfällig), während auch die Kompilierung außerhalb von Eclipse aufgerufen werden muss

3. Der wahrscheinlich einfachste Ansatz (und auch derzeit mit minimalem Aufwand) ist, das Projekt einfach manuell zu kopieren, die eine Konstante zu ändern, das Paket umzubenennen und jedes Mal, wenn ich es einreiche, zu kompilieren / exportieren. Dies scheint jedoch eher "basic" zu sein und sieht sicherlich nicht professionell aus (im Vergleich zu iPhone / xCode Build Einstellung / Ziellösung)

Was wäre der beste Ansatz (minimale Änderungen erforderlich und trotzdem stabil und einfach zu benutzen)?

Danke vielmals!

BEARBEITEN

Für alle, die Tims Lösung ausprobiert haben - es funktioniert gut, aber ich stieß auf ein Problem mit benutzerdefinierten Attributen.

Überprüfen Sie Folgendes: Wie lösen Sie die benutzerdefinierten Attribute von Android Libraries und die Neuzuordnung von Paketnamen während der Erstellung? es wird die isses für Bibliotheken lösen






Links