1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

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

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von binneuhier, 11.06.2012.

  1. binneuhier, 11.06.2012 #1
    binneuhier

    binneuhier Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    145
    Erhaltene Danke:
    10
    Registriert seit:
    23.02.2012
    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
     
    GENiALi bedankt sich.
  2. GENiALi, 11.06.2012 #2
    GENiALi

    GENiALi Erfahrener Benutzer

    Beiträge:
    248
    Erhaltene Danke:
    10
    Registriert seit:
    25.08.2011
    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.
     
  3. v Ralle v, 11.06.2012 #3
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    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: 11.06.2012
  4. Madlip, 11.06.2012 #4
    Madlip

    Madlip Fortgeschrittenes Mitglied

    Beiträge:
    434
    Erhaltene Danke:
    72
    Registriert seit:
    03.08.2011
    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ß
     
  5. v Ralle v, 11.06.2012 #5
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    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!
     
    Madlip und GENiALi haben sich bedankt.
  6. Madlip, 11.06.2012 #6
    Madlip

    Madlip Fortgeschrittenes Mitglied

    Beiträge:
    434
    Erhaltene Danke:
    72
    Registriert seit:
    03.08.2011
    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.
     
  7. v Ralle v, 11.06.2012 #7
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    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.
     
    Madlip bedankt sich.
  8. Madlip, 11.06.2012 #8
    Madlip

    Madlip Fortgeschrittenes Mitglied

    Beiträge:
    434
    Erhaltene Danke:
    72
    Registriert seit:
    03.08.2011
    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.
     

Diese Seite empfehlen