Ich baue eine Android-App, die eine Abhängigkeit von einer benutzerdefinierten Bibliothek hat, und Gradle ist nur bereit, meine benutzerdefinierte Bibliothek aufzunehmen, wenn ich eine Projektabhängigkeit verwende, nicht wenn ich eine Dateiabhängigkeit verwende, um die JAR-Datei der Bibliothek aufzunehmen. Ich baue sowohl meine App als auch die Bibliothek mit dem API levee 19 SDK.
fehlgeschlagen dependencies
Abschnitt von build.gradle
:
Wenn ich den obigen dependencies
-Abschnitt benutze, ist keiner der Klassen in MyLibrary.jar in der Build-APK-Datei enthalten, wie durch das Extrahieren von classes.dex und das Ausführen von dexdump verifiziert wird. Ich habe auch überprüft, dass alle Klassen in der JAR-Datei vorhanden sind, die ich verwende.
Wenn ich den folgenden Abschnitt dependencies
verwende, dann sind alle Klassen in MyLibrary in der apk-Datei enthalten:
Ich benutze Android Studio 0.4.0, Gradle 1.9, und ich denke das Gradle Plugin 0.7.1.
Was ist hier los? Ich würde wirklich gerne meine App mit der API-Ebene 18 SDK bauen, um die Kompatibilität zu testen, aber ich kann nicht funktionieren, es sei denn, ich kann nur die JAR-Datei für meine Bibliothek verwenden.
Okay, das war meine Schuld. Das build.gradle meiner Bibliothek wurde so konfiguriert, dass nur die Quelldateien in die JAR-Ausgabedatei aufgenommen wurden. Das Folgende ist falscher Gradle-Code und wird Ihnen die gleichen Probleme bereiten wie ich.
%Vor%Diese Antwort zeigt, wie Sie die Erstellung der JAR-Datei beheben können. Es ist hässlich, aber es scheint zu funktionieren.
Jar-Task enthält keine Abhängigkeiten im endgültigen Jar-Artefakt.
Von Gradle-Dokumentation zu jar task:
Die jar-Task erstellt eine JAR-Datei mit den Klassendateien und Ressourcen des Projekts.
Es wird davon ausgegangen, dass, da Sie jar
für Ihr Projekt erstellen, alle Abhängigkeiten zur Laufzeit bereitgestellt werden. Im Gegensatz zu war
, wo normalerweise alle Abhängigkeiten im endgültigen Artefakt enthalten sind.
Wenn Sie "fat jar" erstellen müssen, in dem die Abhängigkeiten enthalten sind, dann schauen Sie in bestimmte Plugins, zum Beispiel grdle -Fatjar-Plugin .
Es ist ein bisschen weit hergeholt, aber wenn Sie Android Studio 0.4.0 nicht verwenden und gerade die jar-Datei hinzugefügt haben, reinigen Sie Ihr Projekt und erstellen Sie es von Grund auf neu. Wir haben diesen Fehler gesehen: Ссылка , in dem Bibliotheken nicht enthalten sind, ohne den Browser zu entfernen Projekt, obwohl sich dieser Fehler auf eine Abhängigkeit bezieht, die von Maven heruntergeladen wurde, und keine lokale JAR-Datei (was ein wichtiger Unterschied sein kann). Dies wurde in Android Studio 0.4.0 (genauer gesagt im Gradle-Plugin 0.7.0) behoben.
Tags und Links java android gradle android-studio