1078 Stimmen

Android Studio: jar als Bibliothek hinzufügen?

Ich versuche, das neue Android Studio zu verwenden, aber ich kann es nicht richtig zum Laufen bringen.

Ich benutze die Gson Bibliothek, um JSON-Objekte zu serialisieren/deserialisieren. Aber die Bibliothek ist irgendwie nicht im Build enthalten.

Ich hatte ein neues Projekt erstellt, das nur eine MainActivity . Kopiert gson-2.2.3.jar im Ordner /libs und fügte es als Bibliotheksabhängigkeit hinzu (Rechtsklick->Als Bibliothek hinzufügen). Dies schließt die jar in Android Studio, so dass es von den Quelldateien referenziert werden kann.

Wenn ich versuche, das Projekt auszuführen, lässt es sich nicht kompilieren, also habe ich etwas hinzugefügt:

compile files('libs/gson-2.2.3.jar')

zu den Abhängigkeiten in der .gradle-Datei. Danach wird es korrekt kompiliert, aber wenn ich die Anwendung ausführe, erhalte ich eine ClassDefNotFoundException .

Weiß jemand, was ich falsch mache?

0voto

olyv Punkte 3453

Ich weiß nicht, warum, aber mein Android Studio 0.8.14 spielt verrückt, wenn ich versuche, diese Lösungen mit Gradle zu implementieren. Ich gebe zu, dass ich mich mit diesem großartigen Build-Tool nicht auskenne, aber warum verstümmelt Studio mein Projekt? Ich schaffe es auf diese Weise zu arbeiten: setzen Android-support-v13.jar in 'libs' Verzeichnis, dann F4 auf mein Projekt und fügen Sie Datei-Abhängigkeit, wo ich Android-support-v13.jar zeigte.

0voto

Dirk Punkte 1941

In meinem Fall der hinzugefügten Bibliothek fehlten einige Abhängigkeiten aber leider hat Android Studio (0.8.14) dies als Geheimnis bewahrt.

Es war nicht nötig, irgendetwas manuell zu konfigurieren! Ich fügte einfach die fehlenden Bibliotheken hinzu und verwendete die Standard-Abhängigkeitskonfiguration in der app build.gradle Datei, etwa so

dependencies {
    compile 'com.google.code.gson:gson:2.+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

0voto

Mahozad Punkte 10508

Hier sind verschiedene Möglichkeiten, dies zu tun in Kotlin DSL (build.gradle.kts).
Wir gehen davon aus, dass sich die Bibliotheksdateien in projekt/app/libs/ Verzeichnis.

  • Methode 1

    implementation(
        files(
            "libs/library-1.jar",
            "libs/library-2.jar",
            "$rootDir/foo/my-common-library.jar"
        )
    )
  • Methode 2

    implementation(
        fileTree("libs/") {
            // You can add as many include or exclude calls as you want
            include("*.jar")
            include("another-library.aar") // aar is similar to jar
            exclude("bad-library.jar")
        }
    )
  • Methode 3

    implementation(
        fileTree(
            // Here, instead of repeating include or exclude, assign a list
            "dir" to "libs/",
            "include" to "*.jar",
            "exclude" to listOf("bad-library-1.jar", "bad-library-2.jar")
        )
    )
  • Methode 4

    repositories {
        flatDir {
            dirs("libs/", "lib/")
        }
    }
    
    dependencies {
        // Could also write implementation(":jsoup:1.4.13")
        implementation("org.jsoup:jsoup:1.4.13")
        // NOTE: Add @aar suffix for AAR files
        implementation("ir.mahozad.android:pie-chart:0.7.0@aar")
    }

Sie können verwenden Ameisenmuster en include y exclude Aufrufe wie oben gezeigt.

Véase Gradle-Dokumentationen für weitere Informationen zu diesem Thema.

Dank an ce poste y ce poste für die Bereitstellung hilfreicher Antworten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X