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

Apps auf gleicher Codebasis ("Multiapp")

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Flixius, 18.06.2011.

  1. Flixius, 18.06.2011 #1
    Flixius

    Flixius Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    132
    Erhaltene Danke:
    4
    Registriert seit:
    24.10.2010
    Hallo Gemeinde,

    ich plane eine App zu programmieren, die RSS-Feeds anzeigt (Bitte nicht um Sinn und Unsinn einer solchen App diskutieren. Ich habe meine Gründe warum ich keine App aus dem Market nehme). Anhand des Namens der App würde ich über Internet eine Datenbank aufrufen, die die RSS-Feeds holt.

    Jetzt möchte ich weitere Apps entwickeln, die genau die selbe Funktionalität haben, aber andere RSS-Feeds einbinden. Ich könnte einfach das Projekt kopieren, den Appnamen umbenennen und in der Datenbank RSS-Feeds zu dem Namen einfügen. Das Problem bei dieser Vorgehensweise ist, dass die ganze Logik dupliziert wird was die Weiterentwicklung sehr aufwändig macht, da ich dann bei jeder App den Code anpassen müsste. Kann ich das irgendwie auslagern? Der einzige Unterschied zwischen den Apps sind ein paar Strings, die ich über den Appnamen aus der Datenbank holen kann. Oberfläche und Funktionalität sollen bei allen Apps exakt identisch sein und auf dem gleichen Code basieren. Wie kann ich das realisieren?
     
  2. swordi, 18.06.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ich würde eher über sinn und unsinn sprechen, wenn es darum geht, dass du anscheinend den market mit unzähligen identen apps vollspammen willst.

    es gibt schon zig tausende apps, die immer nur 3-4 bilder anzeigen. ist gleich unnötig :D


    warum kannst du nicht eine app machen, in der die ganzen rss feeds drin sind?
     
  3. Flixius, 18.06.2011 #3
    Flixius

    Flixius Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    132
    Erhaltene Danke:
    4
    Registriert seit:
    24.10.2010
    Nein danke. Ich möchte das hier nicht diskutieren. Weiter ins Detail gehen will ich auch nicht. Von "unzähligen Apps" kann aber nicht die Rede sein. Es geht um insgesamt 4 Apps. Wenn ich das ganze realisiert habe kann ich dir gerne eine Nachricht zukommen lassen damit du dich selbst überzeugen kannst. Wenn du es dann immer noch für unsinnig hälst, darfst du die Apps gerne bei Google melden. Wirtschaftliche Interessen verfolge ich übrigens nicht.

     
  4. swordi, 18.06.2011 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    naja dann leg dir einfach ein library projekt an.

    um 4 einzelne projekte wirst du nicht drum rumkommen, aber die können alle die selbe libary-basis nutzen.
     
    Flixius bedankt sich.
  5. Flixius, 18.06.2011 #5
    Flixius

    Flixius Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    132
    Erhaltene Danke:
    4
    Registriert seit:
    24.10.2010
    Kann ich denn eine Libary mit Activities machen so das ich dann beim OnCreate meiner Apps die Activity der Libaryklasse aufrufe? Dann müsste ich nur noch Parameter übergeben und hätte das ganze Layout auch noch ausgelagert.
     
  6. swordi, 18.06.2011 #6
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    warum nicht einfach die url in die strings.xml und bei jedem projekt legst eine passende url in die datei
     
  7. Flixius, 18.06.2011 #7
    Flixius

    Flixius Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    132
    Erhaltene Danke:
    4
    Registriert seit:
    24.10.2010
    Naja, wenn ich dann Änderungen am Layout mache, dann müsste ich den geänderten Code bei allen Projekten anpassen anstatt bei einem. Aber cih seh schon. So wie ich es mir dachte ist das wohl nicht zu realisieren.

    Danke trotzdem für deine Hilfe!
     
  8. swordi, 18.06.2011 #8
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ? hast wohl nicht ganz verstanden was ich meinte:


    du hast ein library projekt, das alles regelt. die komplette app liegt da drin.

    du liest halt einfach deine url aus dem res/strings.xml file

    jetzt machst dir deine 4 projekte und stellst überall das eine als library basis ein.

    nun musst nur noch jeweils die 4 strings.xml anpassen und gut is.

    wenn du jetzt am library projekt was änderst, ist es überall geändert.


    also eigentlich genau das, was du suchst

    befrag am besten google zum library projekt
     
  9. Flixius, 20.06.2011 #9
    Flixius

    Flixius Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    132
    Erhaltene Danke:
    4
    Registriert seit:
    24.10.2010
    Sorry ich bin anscheinend einfach zu blöd dafür.

    Ich möchte jetzt im ersten Schritt erst mal nicht die App mit ihren Activities in eine Lib machen, sondern nur den RSS-Reader.

    Also habe ich bei meinem RSS-Projekt auf Export geklickt und als Exportformat das JAR file angegeben. Nach dem Import der Jar-File sind jetzt die Klassen als .class dateien in Verzeichnissen abgelegt, die nach dem Package benannt sind. Ich kann aber keine Objekte aus diesen Klassen erzeugen. Wenn ich in meiner Klasse über "import de.xxx.xxx;" das Package einbinden will, dann erkennt er es nicht.

    Mein zweiter Versuch war einfach über Copy-Paste das Package rüber zu kopieren. Das funktioniert auch so weit mit dem Unterschied, dass mein App-Projekt nichts mit dem package javax.xml.* anfangen kann, welches sich in einer der javaeigenen Klassen befindet und im android.jar nicht mit drin ist. Das Importieren der Jar-Files im java/jre6/lib/ Verzeichnis schlägt auch fehl. Ich verstehe nicht so ganz was ich falsch mache. Für Hilfe wäre ich sehr dankbar. Am liebsten möchte ich natürlich das erste Szenario umsetzen. Also Import des RSS-Readers als .jar Datei in mein Android-Projekt.
     
  10. deek, 20.06.2011 #10
    deek

    deek Fortgeschrittenes Mitglied

    Beiträge:
    442
    Erhaltene Danke:
    110
    Registriert seit:
    09.03.2011
    Also, ich probier mal dein konkretes Problem zu verstehen:

    1. Dein RSS Projekt ist bisher ein Java Projekt, das Klassen nutzt, die in Android nicht vorhanden sind?
    Das ist schonmal schlecht, das Problem hatte ich auch mal. Zumindest damals gab es keine Möglichkeit, das komplette JDK da reinzulinken.

    2. Um eine gemeinsame lib zu deinen app Projekten hinzuzufügen gibt es zwei Möglichkeiten.
    a) eine jar erstellen, wie du es versuchst und dann in Eclipse diese zum Build Path hinzufüfen. (rechte Maustaste auf das Projekt -> Build Path -> Add external Archives)
    b) Du fügst in das App Projekt einfach eine Abhängigkeit auf das RSS Projekt ein. (rechte Maustaste auf das Projekt -> Build Path -> Configure Build Path -> Projects Tab -> Add)

    Bei beiden Lösungen kannst du die Klassen dann in deinem App Projekt verwenden. Wenn es sowieso dein eigenes Projekt ist, dass du sharen willst, ist b die elegantere Variante weil du dann nicht bei jeder Änderung eine neue jar bauen musst. Das passiert dann alles automatisch.


    Allerdings gilt für beides, dass es nach meinem Kenntnisstand nicht möglich ist JDK Projekte auf Android laufen zu lassen, die Klassen verwenden die im Android SDK nicht vorhanden sind.
     
    Flixius bedankt sich.
  11. Flixius, 20.06.2011 #11
    Flixius

    Flixius Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    132
    Erhaltene Danke:
    4
    Registriert seit:
    24.10.2010
    Danke für die Hilfe. Über den Classpath kann ich das ganze endlich vernünftig einbinden. Leider scheinst du auch in dem Punkt recht zu behalten wo du sagst, dass man JDK-Jars nicht im Android-Projekt verwenden kann. Beim kompilieren gibt es einen Fehler. Ich werde wohl das Projekt noch mal neu machen müssen und dabei dann nur libs zu verwenden, die im android sdk sind.

    Naja. Wär ja auch zu einfach gewesen. :)
     

Diese Seite empfehlen