Wie fügt man bei Android Studio .jar-Libraries zu einem Android-Java-Projekt hinzu?

Diskutiere Wie fügt man bei Android Studio .jar-Libraries zu einem Android-Java-Projekt hinzu? im Mobile Geräte Bereich.
J

jmar83

Hallo zusammen!

Praktisch überall im Internet wird man auf ein Verzeichnis namens "libs" verwiesen, welches aber so in dieser Form bei meinem Projekt gar nicht existiert.

Beispiel hier:

Oder hier:



Oder müsste ich dieses selbst erstellen?


1.)
Es läuft letztendlich auf das gleiche Hinaus wie das hier bei Eclipse:

2.) Der Inhalt der .jar-Datei sollte beim Builden ins .apk kopiert werden, damit diese Libraries letztendlich dann auch dort drin sind.


Evtl. weiss hier jemand was zum Thema? Vielen Dank für die Feedbacks! :)
 
J

jmar83

Vielen Dank!

Es ist aber ne selbst programmierte Library, kann also nicht aus irgendwelchen Repos automatisch mit der neusten Version geholt werden. (Wie das heute halt so "in" ist... wie bspw. mit `npm` bei Node.JS oder dem Composer bei PHP...)

Gilt das denn aus für selbst entwickelte Sachen...?

Merke gerade dass Android ein Gebiet für sich ist, obwohl ich 1999 die ersten Java-Versuche gemacht habe und in der Zwischenzeit auch ein paar Java-Jobs hatte (inkl. J2EE) habe ich irgendwie "null Ahnung" von den Android-Sachen... aber was nicht ist, kann (wohl eher "muss") noch werden...;-)
 
J

JustNobody

Also wenn Du den Link anschaust von mrBrown, dann siehst Du, dass dieser auch "local binary dependencies" erläutert. Das ist das, was Du wohl auch schon gefunden hast.

Und ja - da legst Du das lib Verzeichnis selbst an.

Ein einfaches Beispiel aus einem meiner Projekte ist z.B. der Eintrag:
implementation files('libs/jar2exe_integrate.jar')
innerhalb der dependencies im build.gradle file.

Und daher habe ich ein Verzeichnis libs und in diesem die jar2exe_integrate.jar Datei.
 
J

jmar83

Nach dem Anlagen eines Verzeichnis "lib" ist dieses zwar vorhanden, aber nicht sichtbar. Wenn ich es noch mal kreieren will ("app" -> rechte Maustaste -> "New" -> "Directory") wird mir gesagt dass es bereits existiert. Gibt es da einen Filter, welche leere Verzeichnisse "per Default" ausblendet oder so?

P.S.: Habe auch kein Verzeichnis "src" wie in den obigen Screenshots ersichtlich. Bei mir sind die Packages irgendwie "direkt" drin, ohne ein src-Verzeichnis. (?)
 
mrBrown

mrBrown

Es ist aber ne selbst programmierte Library, kann also nicht aus irgendwelchen Repos automatisch mit der neusten Version geholt werden. (Wie das heute halt so "in" ist... wie bspw. mit `npm` bei Node.JS oder dem Composer bei PHP...)
Klar, aus deinem lokalen Repo ;)

"in" ist das bei Java übrigens seit fast 20 Jahren ;P
 
J

jmar83

...in `build.gradle` steht aber folgendes:


Code:
dependencies {
        classpath 'com.android.tools.build:gradle:3.6.3'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
Hmmm…?


`"in" ist das bei Java übrigens seit fast 20 Jahren ;P`
Evtl. seit "Maven"...?
 
J

jmar83

Weder das eine (auskommentiert) noch das andere geht:

Code:
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.3'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        //implementation fileTree(dir: 'libs', include: ['AndroidCompatibleHTTPClient.jar'])
        implementation fileTree(dir: 'libs', include: ['*.jar'])
    }
}

Meldung:

`Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method implementation() for arguments [directory 'libs'] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.`

Steht aber hier so dass man es so tun sollte:

(???)
 
mrBrown

mrBrown

...in `build.gradle` steht aber folgendes:


Code:
dependencies {
        classpath 'com.android.tools.build:gradle:3.6.3'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }



Hmmm…?
Der verweist doch extra auf eine build.gradle in den einzelnen Modulen, da sollte es eine weitere build.gradle geben :)


Evtl. seit "Maven"...?
Jap :)
 
J

jmar83

Es gibt nach der Suche mit "Agent Ransack" exakt 2 build.gradle-Dateien:

- Eine unter PROJEKT_VERZEICHNIS
- Die andere unter PROJEKT_VERZEICHNIS\app
 
mrBrown

mrBrown

- Eine unter PROJEKT_VERZEICHNIS -> die für das Projekt
- Die andere unter PROJEKT_VERZEICHNIS\app -> die für die App
 
J

jmar83

Danke, dann bin ich an sich schon mal an der richtigen Stelle, im app-Ordner ist ausreichend.
 
J

jmar83

"implementation" mit "compile" (wird zwar korrekt durchgestrichen da "deprecated") auszutauschen nutzt auch nix:

Code:
Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method compile() for arguments [directory 'libs'] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
...muss wohl wieder zurück in die J2EE-Welt, popelige Smartphone-Apps zu entwickeln ist wohl nix für "kernige Hacker" mittleren Alters! ;-) (Eher was für junge Hipster-Informatiker, denen das neuste Smartphone wichtiger als ein richtiger Computer/PC ist...;-) LOL...🤣)
 
J

jmar83

Na ja, man könnte die Libraries auch entpacken und als Quelltext reinnehmen, an der gleichen Stelle wie das eigentliche Programm ist. (Zumindest solange diese als Quelltext verfügbar sind, was bei mir aktuell ja der Fall ist.)
 
J

jmar83

Na ja, sonst werde halt einen Bug einreichen, spätestens dort wird man mir dann erklären dass es wohl (?) keiner ist und wie man das Problem bewerkstelligt...
 
J

jmar83

Trotzdem vielen Dank euch allen, mal schauen was sich ergibt.

Problem soweit gelöst, Thread kann geschlossen werden.
 
mrBrown

mrBrown

"implementation" mit "compile" (wird zwar korrekt durchgestrichen da "deprecated") auszutauschen nutzt auch nix:

Code:
Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method compile() for arguments [directory 'libs'] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
Zeig mal die die ganze build.gradle (am besten beide), da ist wahrscheinlich irgendwo ein Fehler drin.

...muss wohl wieder zurück in die J2EE-Welt, popelige Smartphone-Apps zu entwickeln ist wohl nix für "kernige Hacker" mittleren Alters! ;-) (Eher was für junge Hipster-Informatiker, denen das neuste Smartphone wichtiger als ein richtiger Computer/PC ist...;-) LOL...🤣)
Man muss halt mit professionellen Tools klar kommen. LOL. nichts daran is Android-spezifisch. LOL.
 
Thema: 

Wie fügt man bei Android Studio .jar-Libraries zu einem Android-Java-Projekt hinzu?

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben