2017-01-02 3 views
2

Ich habe eine Android-Anwendung (läuft auf Android Studio). Es besteht aus 2 Modulen: - Es gibt ein Low-Level-Pure-Java-Modul (nennen wir es Modul A). - Darüber hinaus gibt es das Modul B, das die Android-Anwendung ist. Für einige Verarbeitungen wird moduleA verwendet.Android Studio: Link von externen JAR in einem Multi-Modul-Projekt

Das funktioniert gut.

Ich brauche jetzt das Modul A, um eine externe Bibliothek aufzurufen. Ich habe die JAR-Datei heruntergeladen und in den Ordner moduleA/libs gestellt. Dieser libs-Ordner wird in der großen Abhängigkeit von moduleA referenziert, so dass die Kompilierung in Ordnung ist. Allerdings gibt es eine Ausnahme zur Laufzeit:

FATAL AUSNAHME Verursacht durch: java.lang.ClassNotFoundException: Nicht Klasse „XXXX“ auf Pfad: DexPathList

ich gesehen habe, dass die APK nicht enthalten die JAR-Datei, so ist es normal, dass diese Ausnahme auftritt.

Wenn ich die gleiche JAR-Datei in moduleB/libs kopiere, dann funktioniert es gut, aber ich habe die JAR-Datei zweimal im Projekt! Was ist die saubere Lösung, um damit umzugehen? Ich denke, dass es mit Gradle gelöst werden kann, aber ich weiß nicht wie.

Vielen Dank Olivier

+1

Konvertieren von jar-Bibliothek zu aar ist Abhilfe: https://discuss.gradle.org/t/including-a-java-project-into-an-android-library-project-does-not-include-transitive-file Abhängigkeiten/2442/8 –

Antwort

0

Ich habe dieses Problem beheben kann. Hier geht es um Gradle Lesen hat mir sehr geholfen: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Creating-a-Library-Project

Hier ist, was ich getan habe: Statt in moduleA/libs Ordner die JAR-Datei des Setzens, habe ich die JAR-Datei in Android Studio importiert, indem Sie auf das Projekt, klicken dann Rechtsklick -> Neu -> Modul. Ich klickte dann auf "Import .JAR/.AAR Paket". Dies erstellt ein Modul, das die JAR-Datei + ein Gravel-Skript enthält.

Dann in gradle Skript moduleA, ich habe hinzugefügt dies in den Abhängigkeiten: Kompilierung Projekt (Pfad: ': name_of_the_jar_file')

I umgebaut alle und es funktioniert. Die JAR-Datei ist jetzt in der APK vorhanden und es gibt keinen Absturz mehr zur Laufzeit.

Verwandte Themen