Ich habe mit dem neuen Android-Build-System experimentiert und bin auf ein kleines Problem gestoßen. Ich habe mein eigenes aar-Paket von ActionBarSherlock zusammengestellt, das ich 'actionbarsherlock.aar' genannt habe. Was ich versuche, ist, dieses aar tatsächlich zu verwenden, um meine endgültige APK zu erstellen. Wenn ich die gesamte ActionBarSherlock-Bibliothek als Android-Bibliotheksmodul mit Kompilierungsprojekt (': actionbarsherlock') in mein Hauptprojekt einbinde, kann ich problemlos erfolgreich erstellen.
Mein Problem ist jedoch, dass ich diese Abhängigkeit MANUELL als aar-Dateipaket bereitstellen möchte, nur wenn ich eine JAR verwenden würde, kann ich anscheinend nicht herausfinden, wie ich sie richtig in mein Projekt aufnehmen kann. Ich habe versucht, die Kompilierungskonfiguration zu verwenden, aber dies scheint nicht zu funktionieren. Ich bekomme beim Kompilieren immer wieder kein Symbol, das mir sagt, dass die classes.jar aus dem aar-Paket nicht in den Klassenpfad aufgenommen wird.
Kennt jemand die Syntax, um ein aar-Paket manuell als Datei einzuschließen?
build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
dependencies {
compile files('libs/actionbarsherlock.aar')
}
android {
compileSdkVersion 15
buildToolsVersion "17.0"
}
BEARBEITEN: Die Antwort lautet also, dass es derzeit nicht unterstützt wird. Hier ist das Problem, wenn Sie es verfolgen möchten.
EDIT: Da dies derzeit noch nicht direkt unterstützt wird, scheint die beste Alternative die vorgeschlagene Lösung von @RanWakshlak zu sein
BEARBEITEN: Auch einfacher mit der von @VipulShah vorgeschlagenen Syntax
quelle
Antworten:
Befolgen Sie die folgenden Schritte, um es zum Laufen zu bringen (ich habe es bis Android Studio 2.2 getestet).
Nehmen wir an, Sie haben eine AAR-Datei im libs-Ordner gespeichert. (Angenommen, der Dateiname ist
cards.aar
)Geben Sie dann in der App
build.gradle
Folgendes an und klicken Sie auf Projekt mit Gradle-Dateien synchronisieren. Öffnen Sie build.gradle auf Projektebene und fügen Sie esflatDir{dirs 'libs'}
wie unten beschrieben hinzuÖffnen Sie jetzt die Datei build.grdle auf App-Ebene und fügen Sie die
.aar
Datei hinzuWenn alles gut geht, werden Sie sehen, dass der Bibliothekseintrag in build -> exploded-aar erfolgt
Beachten Sie außerdem, dass Sie beim Importieren einer .aar-Datei aus einem anderen Projekt mit Abhängigkeiten diese ebenfalls in Ihr build.gradle aufnehmen müssen.
quelle
compile
Abhängigkeit zwei Abhängigkeiten hinzufügendebugCompile(name:'cards-debug', ext:'aar')
undreleaseCompile(name:'cards-release', ext:'aar')
allprojects {...}
geht zur Gradle-Datei auf der Ebene "Projekt", und der zweite Teil mitdependencies {...}
sollte zur Gradle-Datei auf der Ebene "App" gehen.quelle
Alt+B
Projekt anschließend sauber machen und neu erstellen. Android Studio, warum Sie schmerzhaft sind! Ich möchte NetBeans IDE als Android Developer Platform habenaar
Ihrem Projekt nur eine Bibliothek hinzufügen möchtenSie können auf eine aar-Datei aus einem Repository verweisen. Ein Maven ist eine Option, aber es gibt eine einfachere Lösung: Legen Sie die aar-Datei in Ihrem libs-Verzeichnis ab und fügen Sie ein Verzeichnis-Repository hinzu.
Verweisen Sie dann auf die Bibliothek im Abschnitt "Abhängigkeit":
Weitere Informationen finden Sie im Min'an-Blogbeitrag .
quelle
implementation
usw. enthält. Dies ist das Kopieren und Einfügen der Lösung. Viele neue Upvotes gehen ein, weil das Android Build Gradle Plugin 4.0.0 jetzt einen Fehler auslöst, anstatt fehlerhafte .aar-Pfade zu ignorierenDer folgende Ansatz funktioniert mit dem neuesten Android Studio (> v0.8.x):
Speichern Sie die
aar
Datei unter App - Modulslibs
Ordner (zB:<project>/<app>/libs/myaar.aar
)Fügen Sie das Folgende zu build.gradle Ihres Modulordners "app" hinzu (nicht zu Ihrem Projektstamm build.gradle). Beachten Sie den Namen in der Kompilierungszeile, es ist myaar @ aar, nicht myaar.aar.
Klicken
Tools -> Android -> Sync Project with Gradle Files
quelle
vor (Standard)
einfach
'*.aar'
ininclude
Array hinzufügen .es funktioniert gut unter Android Studio 3.x.
Wenn Sie eine Bibliothek ignorieren möchten? mag das.
quelle
implementation fileTree(include: ['*.?ar'], dir: 'libs')
Ich habe es gerade geschafft!
Kopieren Sie die Datei mylib-0.1.aar in den Ordner libs /
Fügen Sie diese Zeilen am Ende von build.gradle hinzu (sollte App sein, kein Projekt):
So weit, ist es gut. Hier kommt der wichtigste Punkt:
Gradle muss für Abhängigkeiten auf das Netzwerk zugreifen, es sei denn, der Offline-Modus ist aktiviert.
Stellen Sie sicher, dass Sie die Offline-Arbeit über das Kontrollkästchen in Projektstrukturen / Gradle aktiviert haben
-- ODER --
Konfigurieren Sie die Proxy-Einstellungen, um auf das Netzwerk zuzugreifen.
Um die Proxy-Einstellungen zu konfigurieren, müssen Sie die Datei gradle.properties des Projekts ändern und http und https wie folgt separat konfigurieren:
Hoffe das funktioniert.
quelle
Derzeit wird das Verweisen auf eine lokale .aar-Datei nicht unterstützt (wie von Xavier Ducrochet bestätigt).
Stattdessen können Sie ein lokales Maven-Repository einrichten (viel einfacher als es sich anhört) und von dort aus auf die .aar-Datei verweisen.
Ich habe einen Blogpost geschrieben, in dem beschrieben wird, wie es hier funktioniert:
http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds
quelle
Sie können
aar
mit nur wenigen Codezeilen mehrere Abhängigkeiten hinzufügen .Lokales
flatDir
Repository hinzufügen:In jeden
aar
inlibs
Verzeichniscompile
Abhängigkeit Konfiguration:quelle
libs
Ordner.Leider hat keine der Lösungen hier für mich funktioniert (ich bekomme ungelöste Abhängigkeiten). Was letztendlich funktioniert hat und meiner Meinung nach der einfachste Weg ist: Markieren Sie den Projektnamen in Android Studio und dann Datei -> Neues Modul -> JAR- oder AAR-Paket importieren. Gutschrift geht an die Lösung in diesem Beitrag
quelle
Es gibt zwei Möglichkeiten:
Der erste Weg
Create New Module
Fenster vonFile -> New -> New Module
Wählen Sie das
Import .JAR/.AAR Package
Element aus und klicken Sie auf dieNext
SchaltflächeFügen Sie der
build.gradle
Datei, die zu Ihremapp
Modul gehört, eine Abhängigkeit hinzu .Das ist alles.
Der zweite Weg
Erstellen Sie einen Ordner im
libs
Verzeichnis, zaars
.Legen Sie Ihre aar lib in den aars-Ordner.
Fügen Sie das Code-Snippet hinzu
in Ihre
build.gradle
Datei gehört zum App-Modul.build.gradle
Datei, die zu Ihremapp
Modul gehört, eine Abhängigkeit hinzu .Das ist alles.
Wenn Sie Chinesisch lesen können, können Sie den Blog AR 是 AAR 文件 以及 如何 在 Android 开发 中 使用 überprüfen
quelle
Mit Android Studio 3.4 und Gradle 5 können Sie dies einfach so tun
quelle
UPDATE ANDROID STUDIO 3.4
quelle
Ich habe auch dieses Problem gehabt. Dieser Problembericht : https://code.google.com/p/android/issues/detail?id=55863 scheint darauf hinzudeuten, dass ein direkter Verweis auf die .AAR-Datei nicht unterstützt wird.
Möglicherweise besteht die Alternative vorerst darin, die Actionbarsherlock-Bibliothek als Gradle-Bibliothek im übergeordneten Verzeichnis Ihres Projekts zu definieren und entsprechend zu referenzieren.
Die Syntax wird hier definiert: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library
quelle
Ich habe diese Problemumgehung im Android Issue Tracker gefunden: https://code.google.com/p/android/issues/detail?id=55863#c21
Der Trick (kein Fix) besteht darin, Ihre .aar-Dateien in einem Teilprojekt zu isolieren und Ihre Bibliotheken als Artefakte hinzuzufügen:
Weitere Informationen: Umgang mit transitiven Abhängigkeiten für lokale Artefakte
quelle
compile project(':mobile')
in android / app / build.gradle,configurations.maybeCreate("default")
in android / mobile / build.gradle,include ':mobile'
in android / settings.gradleIn meinem Fall habe ich einige Abhängigkeiten in meiner Bibliothek, und als ich eine
aar
daraus erstellte, bin ich aufgrund fehlender Abhängigkeiten fehlgeschlagen. Daher besteht meine Lösung darin, alle Abhängigkeiten aus meiner Bibliothek mit einerarr
Datei hinzuzufügen .Meine Projektebene
build.gradle
sieht also so aus:build.gradle(modile app)
damit:und Bibliothek
build.gradle
:quelle
Ich habe hier alle Lösungen ausprobiert, aber keine funktioniert. Dann habe ich
.aar
festgestellt, dass ich einen Fehler gemacht habe. Ich habe den Ordner in den falschen Ordner gelegt, wie Sie unten sehen können. Ich dachte, ich sollte ihn in den Stammordner legen, also habe ich dort einenlibs
Ordner erstellt (1 im Bild) ), aber im App-Ordner gibt es bereits einenlibs
, den Sie an zweiter Stelle setzenlibs
sollten. Hoffen Sie , dass dies denjenigen hilft, die das gleiche Problem wie ich haben :quelle
Die Standardmethode zum Importieren von AAR-Dateien in eine Anwendung finden Sie unter https://developer.android.com/studio/projects/android-library.html#AddDependency
Klicken Sie auf Datei> Neu> Neues Modul. Klicken Sie auf .JAR / .AAR-Paket importieren und dann auf Weiter. Geben Sie den Speicherort der kompilierten AAR- oder JAR-Datei ein und klicken Sie auf Fertig stellen.
Bitte beziehen Sie sich auf den obigen Link für die nächsten Schritte.
quelle
Nur um die Antwort zu vereinfachen
Wenn die .aar-Datei lokal vorhanden ist, schließen Sie sie
compile project(':project_directory')
in die Abhängigkeiten von build.gradle Ihres Projekts ein.Wenn eine Remote-Datei auf Remote vorhanden ist, schließen Sie sie
compile 'com.*********.sdk:project_directory:0.0.1@aar'
in die Abhängigkeiten von build.gradle Ihres Projekts ein.quelle
In meinem Fall arbeiten Sie einfach, wenn ich "Projekt" zum Kompilieren hinzufüge:
quelle
Sie können so etwas tun:
Legen Sie Ihre lokalen Bibliotheken (mit der Erweiterung: .jar, .aar, ...) in den Ordner 'libs' (oder in einen anderen, wenn Sie möchten).
Fügen Sie in build.gradle (App-Ebene) diese Zeile zu Abhängigkeiten hinzu
ImplementierungsdateiTree (include: ['* .jar', '* .aar'], dir: 'libs')
quelle