Bibliothek einbinden in Androidstudio

  • Antworten:4
Kevin Hemling
  • Forum-Beiträge: 3

15.06.2016, 14:49:19 via Website

Hallo,

Ich hab mithilfe von eclipse eine Bibliothek geschrieben und als .jar exportiert. Nun möchte ich diese in Androidstudio in meinem Projekt einbinden.
Dazu habe ich folgendes gefunden: In den lib Ordner kopieren, rechts klick, add as Library.

Das hat auch hervorragend geklappt.

Das Problem ist, dass in meiner .jar weitere externe Bibliotheken benutzt werden, wie z.B. Gson-2.1.jar.
Wenn ich meine Bibliothek im Projekt benutze kommt folgende Fehlermeldung:

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/gson/JsonParser;

Kann mir irgendjemand sagen ob man noch irgendetwas umstellen muss bei Androidstudio?
Ich habe die gleich Bibliothek in ein anderes Eclipseprojekt eingebunden und es funktioniert.

Würde mich freuen wenn mir jemand helfen könnte.

Gruß
Kevin

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

15.06.2016, 14:53:15 via Website

Hallo Kevin,
Herzlich wilkommen hier im Forum :)



Ich würde nur wenn es unbedingt nötig ist, Libs als jar einbinden. In AndroidStudio benutzt mal Gradle und Funktionen, welche die Libs automatisch einbinden.
Am besten du ließt dich mal ein wie das funktioniert.

Alternativ würde ich den Code der Lib auch in AS als Module importieren. Dann brauchst du nicht mal mehr eine JAR und kannst den Code der Lib in AS auch ganz einfch bearbeiten

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

Kevin Hemling

Antworten
Kevin Hemling
  • Forum-Beiträge: 3

15.06.2016, 15:05:33 via Website

Hallo Pascal,

Dankeschön.
Ich habe mithilfe der Gradlefunktion compile files diese bibliothek eingebunden. Aber es ist doch möglich so eine Bibliothek einzubinden oder nicht?

Die Modullösung hatte ich auch schon in erwägung gezogen, doch gefiel mir die .jar Variante einfach besser :-P

Antworten
pepperonas
  • Forum-Beiträge: 434

15.06.2016, 15:23:27 via Website

Hallo,
Pascal hat es schon gut zusammengefasst, ich schließe mich seiner Empfehlung an und möchte dich auf das .aar-Format hinweisen. Das Android-Archive besitzt viele Vorteile gegenüber einer einfach .jar (u.A. ist es somit auch möglich Content des "res"-Ordners in eine Lib mit beizupacken, und es ist ebenso möglich einen "lib" Ordner beim Build mit einzuschließen, der dann wie bei dir weitere Dependencies in Form von .jars enthält. Oder einfach gesagt: Genau das, wonach du suchst ;) ). Und das Beste: AndroidStudio bietet dir Out-of-the-box die Möglichkeit besagte .aar zu builden. Einfach ein neues Projekt anlegen oder in einem bestehendem ein neues Modul anlegen. Beim Anlegen des Moduls wählst du dann sinnvollerweise die Option "Android Library Module".

Weitere Hinweise und Fragestellungen, die du prüfen solltest, wenn du libs einbindest oder erstellst:
- sind Quellen doppelt vorhanden / überschneiden sich Package-Namen? <- das kann auch zu unaufgelösten Quellen führen
- sind in ProGuard Ausnahmen festgelegt, oder wird ggf. eine Library beim Kompilieren wegoptimiert? <- auch ein häufiges Problem.
- sind unter der von dir genutzten gradle-Version womöglich Bugs bekannt? Falls du dazu keine sicheren bzw. aktuellen Infos findest, kannst du die gradle-Versionen hier einsehen (unbedingt bookmarken!)

Gerade beim Arbeiten mit Dependenies ist es schwierig aus der Ferne zu helfen. Aber mit etwas Ruhe und Geduld kommst du schon dahinter ;)

Open Source

Kevin Hemling

Antworten
Kevin Hemling
  • Forum-Beiträge: 3

15.06.2016, 15:41:08 via Website

Vielen Dank euch beiden.

Jetzt wurde ich aufjedenfall überzeugt. Es wird wohl auf die Modulversion hinauslaufen. Macht sicherlich mehr Sinn :-P

Antworten