Wie beginnt man ein großes, Versionsübergreifendes Projekt?

B

binneuhier

Fortgeschrittenes Mitglied
10
Hallo,

eine Frage an die eher erfahrenen Benutzer ;)

(leider brachte mich die SuFu nicht weiter)

Ich starte ein Projekt , dass auf vielen Geräten und Versionen lauffähig sein soll.

Es soll unter 2.3 Handys und Smartphones laufen können. Die Auflösung ist nicht das Problem, dank dem "Supporting Multiple Screens" Artikel von google.
Es soll aber auch unter 3.X laufen.
Auch soll es unter 4.X Handys und Smartphones laufen. Auch hier wieder keine probleme bei unterschiedlichen Auflösungen.

Wie geht man das am besten an?
- Erstellt man ein Projekt und sprüft dann irgendwo im Code welche Version jetzt benutzt wird?
- Oder erstellt man für alle 3 Plattformen ein eigenes Projekt?
(Der Code ist zu 99% immer der gleiche nur eben die GUI sachen sind immer anders)
- Oder erstellt man für alle 3 Plattformen ein Projekt + ein Projekt mit "Librarys" für den identischen Backend-Code? (welche man mittels import benutzt)

die 3. Lösung klingt mir am sinnvollsten.
Muss ich dann für die "Library" ein "Android Projekt" erstellen oder macht man da ein normales Java-Projekt und kuckt das man keine Funktionen aus dem Framework nutzt, dies am Handy nicht gibt?

irgendwie hilft mir google da auch nicht weiter, man findet immer nur langweilige "Hallo World" Programme.

ein paar Sätze von erfahrenen Entwicklern würden mir da sehr viel weiterhelfen ;)

gruß und danke
 
  • Danke
Reaktionen: GENiALi
Ich kann dir zwar nicht konkret weiter helfen stehe aber vor dem selben Problem. Wir haben uns nun dazu entschlossen einen Consultatnt kommen lassen der schon ein paar ganz grosse Projekte umgesetzt hat. Mal schauen was das bringt.
 
Ganz klar: am Ende muss ein Projekt herauskommen. Man will für alle Geräte eine .apk Datei haben. Google Play bietet zwar mittlerweile die Möglichkeit für verschiedene Geräte .apk Dateien hochzuladen, empfiehlt es aber nicht. Ich schließe mich an: macht das nicht, der Wartungsaufwand erhöht sich nur.

Ich habe mitterweile mehrere Projekte durchgeführt (abgesehen von meinen privaten) und bin mit der Strategie am besten gefahren. Viel unterscheidet sich nicht. Die Layouts werden in entsprechende Ordner aufgeteilt und man hat nicht mehr viel damit zu tun. Ja, die Ordneranzahl steigt schnell an, aber man kann sich durchfuchsen.

Was ich auch gerne mache: Die Activity kümmert sich um die GUI aus den .xml Dateien. Z.B. legt sie Tabs für Smartphones an und bei Tablets ein großes Layout. Die Logik lager ich in Fragments aus. Richtig umgesetzt, funktioniert das sehr gut :)

Über Verbesserungsvorschläge würde ich mich freuen. Bei weiteren Fragen immer her damit. Nette Diskussion.

Edit: Weil Bibliotheken angesprochen wurden. Die bieten sich an, wenn einzelne Komponenten mehrmals für verschiedene Projekt verwendet werden. Bei Android ist das nach meiner Erfahrung selten der Fall. Man kann, wenn man unbedingt z.B. Core von GUI trennen will, ein Library Projekt für den Core anlegen. So ist das Projekt vielleicht auch besser strukturiert und man sucht nicht lange in einem riesen Projekt. Das muss aber jeder für sich selbst eintscheiden, ich habe es bisher noch nicht gemacht.
 
Zuletzt bearbeitet:
Vor dieser Überlegung steh ich seit gestern Abend auch. Das Problem ist das ich auch gern für die 2.3, 3 und 4er was machen würde. Nur stehen mir ja gewisse Sachen in 2.3. nicht zur Verfügung die ich bspwl. in der 3. hab.

Nun hab ich überlegt das ich es so mache, das ich zentrale Funktionen auf den kleinsten gemeinsamen Nenner runter-breche und in eine Library auslagere, diese spreche ich dann von den anderen Projekten an.

Aber wenn ich gerade den Beitrag von v Ralle v lese; hat man denn auch die Möglichkeit in einen Projekt Portrait und Landscape für smartphone und Tablets zu bauen? sprich das beide ihre beiden (Portrait/Landscape) Layouts haben? Und wie machst du das dann in den Activitys? Gibt es da ne Methode über die Systemresoruce mit der du das device abfragen kannst etc.?

Gruß
 
Nein, niemals nach einem bestimmten Gerät fragen. Nach Portrait oder Landscape zu fragen, ist auch überflüssig. Lass das Problem den Android Kern übernehmen. Du sagst einfach: ich möchte die Ressource haben. Android gibt dir die passendste zurück. Um jetzt z.B. zwischen Tablet und Smartphone zu unterscheiden, sieh dir das mal an, sehr gut erklärt: Fragments | Android Developers

Das Problem Gingerbread, Honeycomb, ICS kann man durch Interfaces umgehen. Viele Dinge (wie die Actionbar, Fragments, Loader) kann man durch Bibliotheken umgehen und die App sieht auf allen Geräten gleich aus. Sehr zu empfehlen!
 
  • Danke
Reaktionen: Madlip und GENiALi
Ich werde mich sofort an den Artikel machen aber nun abschließend kannst du mir sagen das ich durch aus alles in einen Projekt bewältigen kann?

Ich dachte mir nun halt das ich die Datenbank, Netzwerk Spracherkennung Geschichten in eine Bibliothek auslagere.
 
Warum willst du das auslagern? Willst du die Bibliothek dann in mehreren Apps verwenden? Würde mich mal interessieren.

Falls es für eine App gedacht ist, brauchst du es nicht auslagern. Entweder teilst du den Code auf entsprechende packages auf, z.B.

de.vrallev.testproject.activities
de.vrallev.testproject.activites.fragments
de.vrallev.testproject.nfc
...

oder du legst verschiedene Source Folder an (also neben src und gen). Da kann man db für Datenbank, nfc für NFC uvm. verwenden. So lässt sich das auch gut strukturieren.
 
  • Danke
Reaktionen: Madlip
naja das Netzwerk und Spracherkennung Zeugs will ich denke ich mal schon auslagern, weil das ja Dinge sind die man immer wieder mal gebrauchen kann. Und mit den Rest da hast du Recht, dass kann ich dann auch in den Projekt lassen.

Ich hatte ja heute morgen mit der Auslagerung begonnen weil ich der Meinung war das ich wirklich zwei Projekte parallel entwickeln muss (Smartphone/Tablet).

Auf jeden Fall besten Dank für deine Tipps.
 

Ähnliche Themen

M
Antworten
2
Aufrufe
631
Mozart40
M
M
Antworten
3
Aufrufe
167
moin
M
S
Antworten
7
Aufrufe
1.161
swa00
swa00
Zurück
Oben Unten