541 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

61voto

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

45voto

m0skit0 Punkte 23904

Mit Android Studio 3.4 und Gradle 5 können Sie es einfach so machen

dependencies {
    implementation files('libs/actionbarsherlock.aar')
}

22voto

Artiom Chilaru Punkte 11327

Aktuell wird das Verweisen auf eine lokale .aar-Datei nicht unterstützt (wie von Xavier Ducrochet bestätigt)

Was Sie stattdessen tun können, ist ein lokales Maven-Repository einzurichten (viel einfacher als es klingt) und die .aar von dort aus zu referenzieren.

Ich habe einen Blogbeitrag verfasst, der zeigt, wie es funktioniert hier:

http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds

21voto

shusheng007 Punkte 389

Es gibt 2 Möglichkeiten:

Der erste Weg

  1. Öffnen Sie Ihr Android Studio und navigieren Sie zum Neues Modul erstellen Fenster über Datei -> Neu -> Neues Modul

Gib hier eine Bildbeschreibung ein

  1. Wählen Sie den .JAR/.AAR-Paket importieren Eintrag aus und klicken Sie auf die Schaltfläche Weiter

  2. Fügen Sie eine Abhängigkeit in die build.gradle Datei ein, die zu Ihrem App Modul gehört.

    dependencies {
        ...
        implementation project(path: ':Ihr aar lib name')
    }

Das ist alles.

Der zweite Weg

  1. Erstellen Sie einen Ordner im libs Verzeichnis, wie z.B. aars.

  2. Legen Sie Ihre aar lib in den aars Ordner.

  3. Fügen Sie den Code-Schnipsel hinzu

    repositories { flatDir { dirs 'libs/aars' } }

in Ihre build.gradle Datei, die zum App-Modul gehört.

  1. Fügen Sie eine Abhängigkeit in die build.gradle Datei ein, die zu Ihrem App Modul gehört.

    dependencies { ... implementation (name:'Ihr aar lib name', ext:'aar') }

Das ist alles.

Wenn Sie Chinesisch lesen können, können Sie den Blog AARAndroid überprüfen

21voto

Orhun D. Punkte 559

Ich habe es gerade geschafft!

  1. Kopiere die Datei mylib-0.1.aar in den Ordner libs/

  2. Füge diese Zeilen am Ende der Datei build.gradle hinzu (sollte app sein, nicht project):

    repositories {
       flatDir {
           dirs 'libs'
       }
    }
    dependencies {
        compile 'com.example.lib:mylib:0.1@aar'
    }
  3. Bis hierhin läuft alles gut. Hier kommt der wichtigste Punkt:

Gradle benötigt zum Abrufen der Abhängigkeiten Zugriff auf das Netzwerk, sofern der Offline-Modus nicht aktiviert ist.

Stelle sicher, dass du Offline arbeiten über das Kontrollkästchen in Project Structures/Gradle aktiviert hast

-- ODER --

Konfiguriere die Proxy-Einstellungen, um Zugriff auf das Netzwerk zu erhalten.

Um die Proxy-Einstellungen zu konfigurieren, musst du die Datei gradle.properties des Projekts bearbeiten, http und https getrennt wie folgt konfigurieren:

systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=user
systemProp.http.proxyPassword=pass
systemProp.http.nonProxyHosts=localhost
systemProp.http.auth.ntlm.domain=example 

systemProp.https.proxyHost=proxy.example.com
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=user
systemProp.https.proxyPassword=pass
systemProp.https.nonProxyHosts=localhost
systemProp.https.auth.ntlm.domain=example 

Hoffentlich funktioniert das.

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