Bauen mehrere (test/prod) Versionen von Android APKs in Eclipse
Ich bin auf der Suche zu optimieren, erzeugen leicht unterschiedliche APKs von der gleichen Android-app, der einzige Unterschied ist, dass die http-API-server verwenden (dev - /staging - /prod).
Ideal, ich würde nur wollen, dass mein Eclipse zu bauen 2 Truppentransportern, mit dem prod-server und einem mit dem dev ein.
Ich bin auch OK mit mit 2 "Konfigurationen Ausführen", aber ich habe nicht in der Lage gewesen, um herauszufinden, wie die Parameter übergeben, um die app und Lesen Sie Sie aus dem code.
Will das Ziel von 1,5, BTW, und ich möchte die Eclipse-auto-build-tools, ich bin auf der Suche für die meisten generischen Lösung.
Danke.
- möglich, Duplikat [ Android – mehrere benutzerdefinierte Versionen der gleichen app](stackoverflow.com/questions/1222302/...)
- Keine der Lösungen integrieren sich gut in Eclipse als weit als ich kann erzählen. Ich bin eigentlich ziemlich ratlos, warum so eine einfache Aufgabe scheint so kompliziert. Keine flamewar starten, aber ich habe Sie getroffen, einen Blick auf das iPhone-dev-env unserer iPhone-Entwickler, und es ist ziemlich trivial zu übergeben params Ihrer Anwendung von außen. Das macht mich traurig.
- Ich weiß, wie dies mit maven-android-plugin, eigentlich ziemlich einfach. es erfordert allerdings binden Sie Ihre Anwendung mit maven, außerdem scheint es einige Inkompatibilitäten mit der neuesten Android-SDK (r14 & r15) in maven-android-plugin/m2e-android, wahrscheinlich nicht das, was Sie wollen.
- Haben Sie in Betracht gezogen, nur mit Eclipse für die erste coding-phase, dann der Wechsel zu Ant-builds für die erste release-und Test-phase? Es ist ziemlich einfach ein batch/Skript-Datei zu übergeben, die in den Parametern von Ant, die angeben, Quell-und Ausgabe-Verzeichnisse, dann würden Sie nur ändern müssen, um die build.xml's-Ziele leicht Rechnung zu tragen und diese Verzeichnisse.
- Wenn Sie den server Steuern, die andere option ist, um Ihre app-hit einer bekannten URL zuerst auf laden Sie eine Richtlinie mit Einstellungen zu übernehmen, "targetUrl" ist einer von Ihnen. Sie können auch die Versionierung von Kunden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, mit ant-build-Skript wäre die einfachste Lösung. Eclipse unterstützt ant-build, so dass Sie können führen Sie den Befehl ant in eclipse.
Können Sie lösen Ihr problem mit ant wie diese.
xml wäre so:
- Ressource #1:
- Ressource #2:
und ant-script würde wie folgt Aussehen:
Alle verschieben Sie code, um ein Bibliothek-Projekt finden Sie unter
http://developer.android.com/guide/developing/projects/projects-eclipse.html#SettingUpLibraryProject
Dann erstellen Sie separate Projekte in eclipse für test und Produktion mit jeweils einem eigenen package-Namen. Dann können Sie die Paket-Namen zu unterscheiden zwischen den Versionen.
Etwas wie:
Dies mag wie overkill für die Verwaltung der verschiedenen http-end-Punkte, aber es macht den code übersichtlicher. Sie können auch nützliche Dinge tun wie:
Dies kann alles getan werden, in eclipse ohne Verwendung und third-party-tools.
Seine nicht wirklich, was Sie wollen:
Könnte man dann Treffer ein dev - /staging-server, wenn die app ist signiert mit einem debug-key und der Produktion mit einer freigabeerklärung.
Für die übergabe von Parametern, können Sie immer erstellen Sie eine Datei im android-Verzeichnis-system haben und Ihren code Lesen aus.
In meinem Fall wollte ich nur ein paar Werte in
strings.xml
zwischen den verschiedenen Versionen.Muss ich erst noch laden
ant-contrib
Bibliothek, definieren diefor
- Schleife Aufgabe:Ich legte meine Liste der Konfigurationen
config.names
in einemproperties
Datei:Definieren und eine
build-all
Ziel, das Schleifen über dieconfig.names
:Definieren von benutzerdefinierten
resources
Verzeichnis ein, speichern den Namen des Verzeichnisses in dieconfig.resources
Eigenschaft:Löschen Sie es, und kopieren Sie die globalen Ressourcen von
res
hinein:Ändern
-
zu/
in der config-name, die machen es zu einem Pfad im URL-parameter:Ausführen einer XSLT-Transformation ändern, die
strings.xml
Datei:Dies ist das XSLT-stylesheet, das ich benutze:
Und zurück
custom_rules.xml
wo ich dann extrahieren Sie dieapp_version
aus dem ursprünglichen (unveränderten)res/values/strings.xml
:Und verwenden Sie die
antcall
Aufgabe zu nennen, diedebug
bauen:mit zwei geänderten Eigenschaft Werte:
resource.absolute.dir
sagt diedebug
Ziel, um meine modifizierteres
Verzeichnis, definiert in denconfig.resources
Eigentum über;out.final.file
sagt es zu produzieren eine APK mit einem anderen Namen, einschließlich der Namen der Konfiguration (z.B.student-testing
) und die Versionsnummer entnommenstrings.xml
.Und dann, endlich, kann ich
ant build-all
von der Befehlszeile aus und erstellen alle vier Ziele. Ein wenig mehr Skript, kurz vor dem Ende derbuild-all
Ziel, listet die kompilierte APK-Dateien zusammen Referenz: