Eigenes Package importieren oder Sources hinzufügen? (Android Studio)

  • Antworten:6
Gerd-Ulrich M.
  • Forum-Beiträge: 770

19.06.2016, 11:43:35 via Website

Hallo,
meine App (Heizungssteuerung) darf sich jetzt endlich in Android Studio wohlfühlen (ein Update von AS hat zwar nochmal für Chaos gesorgt, weil plötzlich einige Einstellungen sowie ein paar AVDs weg waren) aber jetzt hab ich ein grundsätzliches Strukturierungsproblem:
Den Zugriff auf die Heizungssteuerung selbst hatte ich in einem eigenen Package organisiert, um flexibel zu bleiben.

Nun überlege ich, ob ich dieses Package wieder importiere oder die Sources des Packages direkt wieder ins Projekt-Package kopiere (neue Klassendatei anlegen und Inhalte kopieren).

Was ist geschickter und praktischer? Der Import des Packages wäre mir lieber, aber wie mache ich das?

Danke und Gruss
G.-U.M.

N'y pas n'y
tu car tu
mal tu mal

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.06.2016, 12:18:28 via App

Was meinst du mit import?
Hast du dabeu die Codedateien im Projekt oder nicht?

Alternativ würde ich dir vorschlagen die Steuerung (logik) selbst in eine Lib bzw. AS Modul auszugliedern.

Damit hast du deine gewünschte Trennung oder?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gerd-Ulrich M.
  • Forum-Beiträge: 770

19.06.2016, 12:29:19 via Website

Pascal P.

Was meinst du mit import?

Ich hab die Sources ja schon vollständig (vor ein paar Monaten in einem Testprojekt und Testverzeichnis entwickelt). Ich würde die gern in dem Verzeichnis lassen, wo ich sie entwickelt habe und prkatisch nur einen Verweis darauf aufnehmen. Sonst hab ich ja Redundanz und die möchte ich vermeiden.

Hast du dabeu die Codedateien im Projekt oder nicht? Im aktuellen Projekt noch nicht - daraum frag ich ja.

Alternativ würde ich dir vorschlagen die Steuerung (logik) selbst in eine Lib bzw. AS Modul auszugliedern.
Das klingt gut - ich vermute, wie ich eine LIB bzw. ein AS-Modul erzeuge, kann ich googlen?

Damit hast du deine gewünschte Trennung oder?
Das wäre das, was ich haben möchte - zumindest, sofern ich bei Bedarf ohne Aufwand die Logik weiter bearbeiten kann.

Gruss
G.-U.M.

N'y pas n'y
tu car tu
mal tu mal

Antworten
pepperonas
  • Forum-Beiträge: 434

19.06.2016, 17:36:25 via Website

Zum Verständnis:
Code und Ressourcen die man öfter nutzt (wiederverwertbar sind), lagert man in Libraries aus um bei künftigen Projekten Zeit zu sparen und auf eine gewisse Codesicherheit zurückzugreifen, bzw. falls doch mal Fehler auffallen kann man diese zentral für alle Anwendungen lösen.

Bedeutet:
Wenn diese Punkte nicht auf dich zutreffen, brauchst du keine Library bauen.
Falls die Punkt zutreffen klickst du auf File -> new Project* -> Android Library Modul -> Code schreiben -> Build -> im out-Ordner befindet sich deine aar.

*hier ginge auch "new Modul" (je nach dem wie du deine Dateien auf deinem Rechner verwaltest.. ist aber gehuppt wie geduppt)

Diese .aar kopierst du dann in den /lib-Ordner deines "Arbeitsprojekts" und dort fügst du im gradle-File des Projekts(!) (Achtung: NICHT das "Top-Level" gradle) folgende Einträge hinzu:

//...
repositories {
    mavenCentral()
    flatDir {
        dirs 'libs' // <- Ordner verlinken
    }
}
//...

  dependencies {
     //..
      compile 'com.dein.packagename:libraryname:0.0.1@aar' // <- ja, die Schreibweise unterscheidet bei lokalen Libraries
  }

Clean -> Build -> Success?! :D

PS: Falls es nicht funktioniert bitte beide gradle-Files posten (ggf. persönliche Kennungen, wie Passwörter oder IDs vorher entfernen).

— geändert am 19.06.2016, 17:38:39

Open Source

Antworten
Gerd-Ulrich M.
  • Forum-Beiträge: 770

19.06.2016, 18:07:55 via Website

pepperonas

Zum Verständnis:
Code und Ressourcen die man öfter nutzt (wiederverwertbar sind), lagert man in Libraries aus um bei künftigen Projekten Zeit zu sparen und auf eine gewisse Codesicherheit zurückzugreifen, bzw. falls doch mal Fehler auffallen kann man diese zentral für alle Anwendungen lösen.

Ich möchte den Code später noch in anderen Projekten nutzen können - ich hab mich jetzt schon während der ersten "Gehversuche" geärgert, dass ich diesen Code-Teil immer wieder in das aktuelle Projekt kopieren musste.

Bedeutet:
Wenn diese Punkte nicht auf dich zutreffen, brauchst du keine Library bauen.
Falls die Punkt zutreffen klickst du auf File -> new Project* -> Android Library Modul -> Code schreiben -> Build -> im out-Ordner befindet sich deine aar.

Hmm, den Anfang hab ich genauso gemacht, bis auf den Schritt mit dem Build.

*hier ginge auch "new Modul" (je nach dem wie du deine Dateien auf deinem Rechner verwaltest.. ist aber gehuppt wie geduppt)

Diese .aar kopierst du dann in den /lib-Ordner deines "Arbeitsprojekts" und dort fügst du im gradle-File des Projekts(!) (Achtung: NICHT das "Top-Level" gradle) folgende Einträge hinzu:

//...
repositories {
    mavenCentral()
    flatDir {
        dirs 'libs' // <- Ordner verlinken
    }
}
//...

  dependencies {
     //..
      compile 'com.dein.packagename:libraryname:0.0.1@aar' // <- ja, die Schreibweise unterscheidet bei lokalen Libraries
  }

Clean -> Build -> Success?! :D

Das probiere ich nochmal in Ruhe durch....der letzte Build lief eigentlich problemlos durch.
Die Struktur bei mir sieht jetzt so aus:
image
Ist das richtig?

PS: Falls es nicht funktioniert bitte beide gradle-Files posten (ggf. persönliche Kennungen, wie Passwörter oder IDs vorher entfernen).

Ich integriere gerade entscheidenen Routinen wieder, danach kann ich testen.

Gruss
G.-U.M.

N'y pas n'y
tu car tu
mal tu mal

Antworten
pepperonas
  • Forum-Beiträge: 434

19.06.2016, 19:10:30 via Website

Da es uns AndroidStudio einfach macht und auch gerne selbst mal Dependencies erkennt und in gradle einfügt, solltest du vielleicht doch das Library Modul in ein eigenes Projekt packen (aber wie bereits oben gesagt, eigentlich ist es egal. Im schlimmsten Fall musst du zu einem späteren Zeitpunkt das dann nochmal testen)

Viele Grüße
Martin

Open Source

Antworten
Gerd-Ulrich M.
  • Forum-Beiträge: 770

19.06.2016, 19:34:40 via Website

pepperonas

Da es uns AndroidStudio einfach macht und auch gerne selbst mal Dependencies erkennt und in gradle einfügt,

Das dürfte das sein, was vorhin passiert ist...ich erinnere mich dunkel an eine der Abfragen dazu :D

solltest du vielleicht doch das Library Modul in ein eigenes Projekt packen (aber wie bereits oben gesagt, eigentlich ist es egal. Im schlimmsten Fall musst du zu einem späteren Zeitpunkt das dann nochmal testen)

Damit kann ich leben; auch damit, dass ich evtl. später nochmal testen muss.

Viele Grüße
Martin

Vielen Dank trotzdem für die ausführliche Erklärung (ich würde den Thread gern noch etwas offen lassen, für den Fall das jetzt in den nächsten Tagen doch noch was dazu kommt - sonst mach ich selbst zu).

Gruss

G.-U.M.

N'y pas n'y
tu car tu
mal tu mal

Antworten