522 Stimmen

Wie man manuell ein externes AAR-Paket unter Verwendung von Gradle für Android einbindet

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 kompiliert, das ich 'actionbarsherlock.aar' genannt habe. Was ich versuche zu tun, ist eigentlich, dieses aar zu verwenden, um meine endgültige APK zu erstellen. Wenn ich die gesamte ActionBarSherlock-Bibliothek als Android-Bibliotheksmodul zu meinem Hauptprojekt hinzufüge, indem ich 'compile project (':actionbarsherlock')' verwende, kann ich erfolgreich ohne Probleme kompilieren.

Aber mein Problem ist, dass ich diese Abhängigkeit als aar-Paket MANUELL bereitstellen möchte, genauso wie bei einem JAR, dann kann ich anscheinend nicht herausfinden, wie ich es richtig in mein Projekt einbeziehen kann. Ich habe versucht, die Kompilierungskonfiguration zu verwenden, aber das scheint nicht zu funktionieren. Ich erhalte während der Kompilierung immer "cannot find symbol", was mir sagt, dass die classes.jar aus dem aar-Paket nicht in den Klassenpfad einbezogen wird.

Weiß jemand, wie die Syntax ist, um ein aar-Paket manuell als Datei einzubinden?

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"
}

EDIT: Die Antwort lautet, dass dies derzeit nicht unterstützt wird. Hier ist das Problem, wenn Sie es verfolgen möchten.

EDIT: Derzeit, da dies immer noch nicht direkt unterstützt wird, scheint die beste Alternative die vorgeschlagene Lösung von @RanWakshlak zu sein

EDIT: Auch einfacher durch die Verwendung der Syntax, die von @VipulShah vorgeschlagen wurde

778voto

Vipul Punkte 31756

Bitte befolgen Sie die unten stehenden Schritte, um es zum Laufen zu bringen (ich habe es bis Android Studio 2.2 getestet).

Sagen wir, Sie haben eine .aar-Datei im libs-Ordner (z.B. cards.aar).

Dann spezifizieren Sie in der build.gradle der App folgendes und klicken Sie auf Sync Project with Gradle files.

Öffnen Sie die Projekt-Ebene des build.gradle- und fügen Sie flatDir {dirs("libs")} wie folgt hinzu:

allprojects {
    repositories {
        jcenter()

        flatDir {
            dirs("libs")
        }
    }
}

Öffnen Sie die App-Ebene des build.gradle-Datei und fügen Sie die .aar-Datei hinzu:

dependencies {
    implementation(name:'cards', ext:'aar')
}

Wenn Sie Kotlin verwenden und eine build.gradle.kts-Datei haben:

dependencies {
    implementation(name = "cards", ext = "aar")
}

Wenn alles gut geht, sehen Sie, dass der Bibliothekseintrag in build -> exploded-aar erstellt wurde.

Beachten Sie auch, dass wenn Sie eine .aar-Datei aus einem anderen Projekt importieren, das Abhängigkeiten hat, müssen Sie diese auch in Ihr build.gradle `hinzufügen.`

274voto

Oliver Kranz Punkte 3613
  1. Klicken Sie mit der rechten Maustaste auf Ihr Projekt und wählen Sie "Moduleinstellungen öffnen".

Moduleinstellungen öffnen

  1. Klicken Sie auf die Schaltfläche "+" oben links im Fenster, um ein neues Modul hinzuzufügen.

Neues Modul hinzufügen

  1. Wählen Sie "Import .JAR or .AAR Package" aus und klicken Sie auf die Schaltfläche "Weiter".

AAR importieren

  1. Suchen Sie die AAR-Datei mit der Auslassungsschaltfläche "..." neben dem Feld "Dateiname".

AAR-Datei finden

  1. Wählen Sie das Modul der App aus und klicken Sie auf den Bereich Abhängigkeiten, um das neue Modul als Abhängigkeit hinzuzufügen.

Abhängigkeiten-Bereich

  1. Verwenden Sie die Schaltfläche "+" des Abhängigkeiten-Bildschirms und wählen Sie "Modulabhängigkeit" aus.

Modulabhängigkeit hinzufügen

  1. Wählen Sie das Modul aus und klicken Sie auf "OK".

Modul auswählen

EDIT: Modulabhängigkeit im Screenshot 6 wurde in Android Studio 4.1 entfernt. Als Alternative fügen Sie die Modulabhängigkeit zur build.gradle hinzu.

dependencies {
    implementation project(':your_module')
}

EDIT: Das Benutzerinterface und der Arbeitsablauf wurden in Android Studio 4.2 stark verändert. Der Prozess zum Hinzufügen einer Abhängigkeit wird jetzt sehr gut in einer offiziellen Dokumentation erklärt: Abhängigkeiten mit dem Projektstruktur-Dialog hinzufügen

133voto

Ran Wakshlak Punkte 1734

Sie können eine aar-Datei aus einem Repository referenzieren. Ein maven ist eine Option, aber es gibt eine einfachere Lösung: Legen Sie die aar-Datei in Ihr libs-Verzeichnis und fügen Sie ein Verzeichnis-Repository hinzu.

    repositories {
      mavenCentral()
      flatDir {
        dirs 'libs'
      }
    }

Dann verweisen Sie in der Abhängigkeitssektion auf die Bibliothek:

  dependencies {
        implementation 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}

Sie können den Min'an Blog-Beitrag für weitere Informationen überprüfen.

77voto

Changhoon Punkte 3326

Vorher (Standard)

implementation fileTree(include: ['*.jar'], dir: 'libs')

füge einfach '*.aar' im include Array hinzu.

implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')

Es funktioniert gut in Android Studio 3.x.

Wenn du bestimmte Bibliotheken ignorieren möchtest, mach es so.

implementation fileTree(include: ['*.jar', '*.aar'], exclude: 'test_aar*', dir: 'libs')
debugImplementation files('libs/test_aar-debug.aar')
releaseImplementation files('libs/test_aar-release.aar')

59voto

ashoke Punkte 6431

Der unten stehende Ansatz funktioniert mit Android Studio v0.8.x:

  • Speichern Sie die aar Datei im Ordner libs des App-Moduls (z. B.: //libs/myaar.aar)

  • Fügen Sie den folgenden Code zur build.gradle-Datei Ihres "app"-Moduls hinzu (nicht zur build.gradle-Datei Ihres Projekt-Stammverzeichnisses). Achten Sie darauf, dass der Name in der Compile-Zeile myaar@aar und nicht myaar.aar lautet.

     dependencies {
         compile 'package.name.of.your.aar:myaar@aar'
     }
    
     repositories{
         flatDir{
             dirs 'libs'
         }
     }
  • Klicken Sie auf Tools -> Android -> Sync Project with Gradle Files

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