Mir ist diese Frage bekannt: Hinzufügen lokaler .aar-Dateien zu meinem Gradle-Build, aber die Lösung funktioniert bei mir nicht.
Ich habe versucht, diese Anweisung zur obersten Ebene meiner build.gradle
Datei hinzuzufügen :
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
Ich habe die slidingmenu.aar
Datei auch in /libs
den dependencies
Abschnitt eingefügt und darauf verwiesen : compile 'com.slidingmenu.lib:slidingmenu:1.0.0@aar'
aber es hat überhaupt nicht funktioniert.
Ich habe es auch versucht, compile files('libs/slidingmenu.aar')
aber ohne Glück.
Was vermisse ich? Irgendwelche Ideen?
PS Android Studio 0.8.2
android
android-studio
android-gradle-plugin
build.gradle
aar
Alexey Dmitriev
quelle
quelle
Antworten:
Aufbauend auf Josiahs Antwort, hier ist, wie ich es zum Laufen gebracht habe.
Befolgen Sie seine Anweisungen (unter Bearbeiten) ( Datei -> Neu-> Neues Modul -> .JAR / .AAR importieren) und importieren Sie Ihr .AAR.
Fügen Sie dann in Ihrem Projekt build.gradle (nicht die oberste Ebene, die unter 'App') Folgendes hinzu (im Abschnitt Abhängigkeiten):
dependencies { compile project(':Name-Of-Your-Project') }
Hinweis Der Name Ihres Projekts sollte mit dem Namen des Ordners übereinstimmen, der nach dem Import der AAR-Datei hinzugefügt wurde (auf derselben Ebene wie
app/.idea
unter dem Ordner der obersten Ebene). Oder anders ausgedrückt ...Dies funktionierte bei mir mit Android Studio 0.8.0. Vergessen Sie nicht, gradle zu synchronisieren (über die Symbolleistenschaltfläche oder unter Datei-> Synchronisieren ), nachdem Sie dies getan haben.
(Danke an Josiah, dass er mich in die richtige Richtung gebracht hat)
(Hinweis: Vorher habe ich versucht, es dem libs-Ordner hinzuzufügen und zu versuchen, die oberste Ebene
build.gradle
und die App-Ebene zu manipulierenbuild.gradle
, aber nichts davon funktionierte für meine AAR-Dateien - JARs funktionieren einwandfrei, aber nicht für die AAR-Dateien.)quelle
Error:(25, 0) Required keys [path] are missing from map {name=mylibrary-debug}.
Wenn ichcompile project(name:'mylibrary-debug')
.. Was vermisse ich?compile project(':Name-Of-Your-Project')
ich durchName-Of-Your-Project
den Namen meiner .aar-Datei ersetzt (ohne die.aar
Erweiterung). Und es hat funktioniert.Update : Wie bereits bei @ amram99 erwähnt, wurde das Problem mit der Veröffentlichung von Android Studio v1.3 behoben.
Getestet und verifiziert mit den folgenden Spezifikationen
Was funktioniert jetzt?
Jetzt können Sie eine lokale AAR-Datei über die Option Datei> Neu> Neues Modul> .JAR / .AAR-Paket importieren in Android Studio v1.3 importieren
Die folgende Antwort gilt jedoch unabhängig von den Änderungen in Android Studio, da diese auf Gradle-Skripten basiert.
Alte Antwort: In einem kürzlich veröffentlichten Update haben die Mitarbeiter von Android die Aufnahme lokaler AAR-Dateien über die Menüoption "Neues Modul hinzufügen" von Android Studio aufgehoben. Überprüfen Sie die Ausgabe hier aufgeführt. Unabhängig von allem, was in die IDE-Funktionsliste ein- und ausgeht, funktioniert die folgende Methode, wenn Sie mit lokalen AAR-Dateien arbeiten. (Heute getestet):
Legen Sie die aar-Datei im libs-Verzeichnis ab (erstellen Sie sie bei Bedarf) und fügen Sie den folgenden Code in Ihr build.gradle ein:
dependencies { compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar') } repositories{ flatDir{ dirs 'libs' } }
quelle
repositories
Teil geht in einen anderen,build.gradle
um zu arbeiten - den globalen. Derdependencies
Teil geht in das Modulbuild.gradle
. Deshalb habe ich den Fehler bekommen.Bearbeiten: Die korrekte Möglichkeit (derzeit), eine lokale AAR-Datei als Build-Abhängigkeit zu verwenden, besteht darin, den Modulimport-Assistenten (Datei | Neues Modul | .JAR- oder .AAR-Paket importieren) zu verwenden, der die .aar automatisch als Bibliotheksmodul hinzufügt in Ihrem Projekt.
Alte Antwort
Versuche dies:
allprojects { repositories { jcenter() flatDir { dirs 'libs' } } } ... compile(name:'slidingmenu', ext:'aar')
quelle
flatDir { dirs 'libs' }
im OP erwähnten Block mit AS 8.13 / Gradle 2.1Ich habe dies auf Android Studio 2.1 funktioniert. Ich habe ein Modul namens "Native_Ads", das von mehreren Projekten gemeinsam genutzt wird.
Zuerst habe ich in meinem Native_ads-Modul ein Verzeichnis mit dem Namen 'aars' erstellt und dann die aar-Datei dort abgelegt.
Verzeichnisaufbau:
libs/ aars/ <-- newly created src/ build.gradle etc
Dann ändern sich die anderen:
Gradle-Datei der obersten Ebene:
allprojects { repositories { jcenter() // For module with aar file in it flatDir { dirs project(':Native_Ads').file('aars') } } }
Build.gradle-Datei des App-Moduls: - Keine Änderungen
Settings.gradle-Datei (um das Modul einzuschließen):
include ':app' include 'Native_Ads' project(':Native_Ads').projectDir = new File(rootProject.projectDir, '../path/to/Native_Ads')
Gradle-Datei für das Native_Ads-Modul:
repositories { jcenter() flatDir { dirs 'aars' } } dependencies { compile(name:'aar_file_name_without_aar_extension', ext:'aar') }
Das ist es. Reinigen und bauen.
quelle
Am einfachsten ist es jetzt, es als Modul hinzuzufügen
Dadurch wird ein neues Modul erstellt, das die aar-Datei enthält. Sie müssen dieses Modul anschließend nur noch als Abhängigkeit einfügen
quelle
next
Schaltfläche imCreate New Module
Dialogfeld nach Auswahl von Importieren ausgegraut istJAR/AAR Package
?.aar
Datei in einem Projektverzeichnis befindet. Ich habe sie einfach.aar
auf meinem Desktop abgelegt und erneut versucht, und es funktioniert, danke für Ihre Lösung!so you just need to include that module as a dependency afterwards
- wie machst du das?include
in dersettings.gradle
genug sein sollte. Ich habe es zum Laufen gebracht. Vielen Dank!Dies ist meine Struktur und wie ich das löse:
Auf build.gradle
von Project / app / myModulesFolder / myLibXYZ
Ich habe folgendes gesagt:
repositories { flatDir { dirs 'libs', '../../libs' } } compile (name: 'mylib-1.0.0', ext: 'aar')
Fertig und funktioniert einwandfrei. Mein Submodul XYZ hängt von einer Bibliothek des Hauptmoduls ab.
quelle
Sie können es so machen. Es muss im Maven-Format vorliegen:
repositories { maven { url uri('folderName')} }
Und dann muss Ihr AAR in eine Ordnerstruktur für eine Gruppen-ID "com.example" gehen:
folderName/ com/ example/ verion/ myaar-version.aar
Dann als Abhängigkeit referenzieren:
compile 'com.example:myaar:version@aar'
Wo
version
ist die Version Ihrer aar-Datei (dh 3.0 usw.)quelle
Für alle, die dieses Problem ab Android Studio 1.4 haben, habe ich es zum Laufen gebracht, indem ich ein Modul innerhalb des Projekts erstellt habe, das zwei Dinge enthält.
build.gradle mit folgenden Inhalten:
configurations.create("default")
artifacts.add("default", file('facebook-android-sdk-4.7.0.aar'))
die aar-Datei (in diesem Beispiel 'facebook-android-sdk-4.7.0.aar')
Fügen Sie dann die neue Bibliothek als Modulabhängigkeit hinzu. Jetzt können Sie einen erstellten AAR verwenden, ohne die Quellen in das Projekt einzubeziehen.
Dank an Facebook für diesen Hack. Ich habe die Lösung gefunden, als ich das Android SDK in ein Projekt integriert habe.
quelle
apply plugin: 'com.android.application'
zuapply plugin: 'com.android.library'
In meinem Fall hat keine der oben genannten Antworten funktioniert! da hatte ich verschiedene productFlavors nur hinzugefügt
repositories{ flatDir{ dirs 'libs' } }
funktioniert nicht! Am Ende habe ich den genauen Speicherort des libs- Verzeichnisses angegeben:
repositories{ flatDir{ dirs 'src/main/libs' }
}}
Ich denke, man sollte flatDirs wie dieses einführen, wenn es in build.gradle verschiedene productFlavors gibt
quelle
In meinem Fall habe ich einfach die aar-Datei in libs abgelegt und hinzugefügt
dependencies { ... api fileTree(dir: 'libs', include: ['*.aar']) ... }
in build.gradle und es funktioniert. Ich denke, dass es mit der standardmäßig generierten Abhängigkeit ähnlich ist:
implementation fileTree(dir: 'libs', include: ['*.jar'])
quelle
Diese Zeile enthält alle
aar
undjar
Dateien aus demlibs
Ordner:implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs/')
quelle
Diese Lösung funktioniert mit Android Studio 4.0.1.
Abgesehen davon, dass Sie ein neues Modul erstellen, wie in der obigen Lösung vorgeschlagen, können Sie diese Lösung ausprobieren.
Wenn Ihre Anwendung mehrere Module enthält und Sie nur einem der Module aar hinzufügen möchten, ist diese Lösung hilfreich.
In Ihrem Root-Projekt build.gradle
hinzufügen
repositories { flatDir { dirs 'libs' }}
Dann in dem Modul, in dem Sie die .aar-Datei lokal hinzufügen möchten. Fügen Sie einfach die folgenden Codezeilen hinzu.
dependencies { api fileTree(include: ['*.aar'], dir: 'libs') implementation files('libs/<yourAarName>.aar')
}}
Viel Spaß beim Codieren :)
quelle
Fügen Sie unten im Implementierungsprojekt für App Gradle-Dateien hinzu (Pfad: ': Projektname')
quelle
Wenn Sie Kotlin Gradle DSL bereits verwenden, ist die Alternative dazu:
Hier ist meine Projektstruktur
|-root |----- app |--------- libs // I choose to store the aar here |-------------- my-libs-01.aar |-------------- my-libs-02.jar |--------- build.gradle.kts // app module gradle |----- common-libs // another aar folder/directory |----------------- common-libs-01.aar |----------------- common-libs-02.jar |----- build.gradle.kts // root gradle
Meine
app/build.gradle.kts
fileTree
// android related config above omitted... dependencies { // you can do this to include everything in the both directory // Inside ./root/common-libs & ./root/app/libs implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar")))) implementation(fileTree(mapOf("dir" to "../common-libs", "include" to listOf("*.jar", "*.aar")))) }
flatDirs
// android related config above omitted... repositories { flatDir { dirs = mutableSetOf(File("libs"), File("../common-libs") } } dependencies { implementation(group = "", name = "my-libs-01", ext = "aar") implementation(group = "", name = "my-libs-02", ext = "jar") implementation(group = "", name = "common-libs-01", ext = "aar") implementation(group = "", name = "common-libs-02", ext = "jar") }
Das
group
wurde aufgrund seiner obligatorischen (nicht optional / hat Standardwert) in Kotlin benötigtimplementation
, siehe unten:// Filename: ReleaseImplementationConfigurationAccessors.kt package org.gradle.kotlin.dsl fun DependencyHandler.`releaseImplementation`( group: String, name: String, version: String? = null, configuration: String? = null, classifier: String? = null, ext: String? = null, dependencyConfiguration: Action<ExternalModuleDependency>? = null )
Haftungsausschluss: Der Unterschied zwischen
flatDirs
Nr. 1 und Nr. 2, ich weiß immer noch nicht viel. Vielleicht möchten Sie diese Antwort bearbeiten / kommentieren.Verweise:
quelle
Diese Lösung funktioniert mit Android Studio 4.0.1.
Abgesehen davon, dass Sie ein neues Modul erstellen, wie in der obigen Lösung vorgeschlagen, können Sie diese Lösung ausprobieren.
Wenn Ihre Anwendung mehrere Module enthält und Sie nur einem der Module aar hinzufügen möchten, ist diese Lösung hilfreich.
In Ihrem Root-Projekt build.gradle
hinzufügen
repositories { mavenCentral() flatDir { dirs 'libs' }
Dann in dem Modul, in dem Sie die .aar-Datei lokal hinzufügen möchten. Fügen Sie einfach die folgenden Codezeilen hinzu.
dependencies { api fileTree(include: ['*.aar'], dir: 'libs') implementation files('libs/<yourAarName>.aar')
}}
Viel Spaß beim Codieren :)
quelle