Wie füge ich ein Bibliotheksprojekt (z. B. Sherlock ABS) zu Android Studio hinzu?
(Nicht zum alten ADT Eclipse-basierten Bundle, sondern zum neuen Android Studio .)
Update für Android Studio 1.0
Seitdem Android Studio 1.0 veröffentlicht wurde (und viele Versionen zwischen v1.0 und einer der ersten aus der Zeit meiner vorherigen Antwort), haben sich einige Dinge geändert.
Meine Beschreibung konzentriert sich auf das manuelle Hinzufügen eines externen Bibliotheksprojekts über Gradle-Dateien (zum besseren Verständnis des Prozesses). Wenn Sie eine Bibliothek über Android Studio Creator hinzufügen möchten, überprüfen Sie einfach die Antwort unten mit visueller Anleitung (es gibt einige Unterschiede zwischen Android Studio 1.0 und denen von Screenshots, aber der Prozess ist sehr ähnlich).
Bevor Sie Ihrem Projekt manuell eine Bibliothek hinzufügen, sollten Sie die externe Abhängigkeit hinzufügen. Es wird Ihre Projektstruktur nicht beeinträchtigen. Nahezu jede bekannte Android Bibliothek ist in einem Maven Repository verfügbar und die Installation benötigt nur eine Codezeile in der app/build.gradle
Datei:
dependencies {
compile 'com.jakewharton:butterknife:6.0.0'
}
Hinzufügen der Bibliothek
Hier ist der vollständige Prozess des Hinzufügens einer externen Android Bibliothek zu unserem Projekt:
HelloWorld/ app/ - build.gradle // local Gradle configuration (for app only) ... - build.gradle // Global Gradle configuration (for whole project) - settings.gradle - gradle.properties ...
HelloWorld/
) einen neuen Ordner: /libs
, in dem wir unsere externen Bibliotheken ablegen (dieser Schritt ist nicht erforderlich - nur zur Aufrechterhaltung einer saubereren Projektstruktur)./libs
ein. In diesem Beispiel habe ich PagerSlidingTabStrip Bibliothek verwendet (einfach Zip von GitHub herunterladen, Bibliotheksverzeichnis in „PagerSlidingTabStrip" umbenennen und kopieren). Hier ist die neue Struktur unseres Projekts:HelloWorld/ app/ - build.gradle // Local Gradle configuration (for app only) ... libs/ PagerSlidingTabStrip/ - build.gradle // Local Gradle configuration (for library only) - build.gradle // Global Gradle configuration (for whole project) - settings.gradle - gradle.properties ...
Bearbeiten Sie settings.gradle, indem Sie Ihre Bibliothek zu include
hinzufügen. Wenn Sie wie ich einen benutzerdefinierten Pfad verwenden, müssen Sie auch das Projektverzeichnis für unsere Bibliothek definieren. Eine ganze settings.gradle sollte wie folgt aussehen:
include ':app', ':PagerSlidingTabStrip'
project(':PagerSlidingTabStrip').projectDir = new File('libs/PagerSlidingTabStrip')
5.1 Wenn der Fehler "Standardkonfiguration" auftritt, versuchen Sie dies anstelle von Schritt 5.
include ':app'
include ':libs:PagerSlidingTabStrip'
Fügen Sie in app/build.gradle
unser Bibliotheksprojekt als Abhängigkeit hinzu:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.Android.support:appcompat-v7:21.0.3'
compile project(":PagerSlidingTabStrip")
}
6.1. Wenn Sie Schritt 5.1 gefolgt sind, dann folgen Sie diesem anstelle von 6,
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.Android.support:appcompat-v7:21.0.3'
compile project(":libs:PagerSlidingTabStrip")
}
Wenn Ihr Bibliotheksprojekt keine build.gradle
-Datei hat, müssen Sie diese manuell erstellen. Hier ist ein Beispiel für diese Datei:
apply plugin: 'com.Android.library'
dependencies {
compile 'com.Android.support:support-v4:21.0.3'
}
Android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
Java.srcDirs = ['src']
res.srcDirs = ['res']
}
}
}
Darüber hinaus können Sie eine globale Konfiguration für Ihr Projekt erstellen, die SDK-Versionen und Build-Tools-Versionen für jedes Modul enthält, um die Konsistenz zu gewährleisten. Bearbeiten Sie einfach die Datei gradle.properties
und fügen Sie Zeilen hinzu:
Android_BUILD_MIN_SDK_VERSION=14
Android_BUILD_TARGET_SDK_VERSION=21
Android_BUILD_TOOLS_VERSION=21.1.3
Android_BUILD_SDK_VERSION=21
Jetzt können Sie es in Ihren build.gradle
-Dateien (in App- und Bibliotheksmodulen) wie folgt verwenden:
//...
Android {
compileSdkVersion Integer.parseInt(project.Android_BUILD_SDK_VERSION)
buildToolsVersion project.Android_BUILD_TOOLS_VERSION
defaultConfig {
minSdkVersion Integer.parseInt(project.Android_BUILD_MIN_SDK_VERSION)
targetSdkVersion Integer.parseInt(project.Android_BUILD_TARGET_SDK_VERSION)
}
}
//...
Das ist alles. Klicken Sie einfach auf "Synchronisieren Sie das Projekt mit dem Gradle" -Symbol . Ihre Bibliothek sollte in Ihrem Projekt verfügbar sein.
Google I/O 2013 - Das neue Android SDK-Build-System ist eine großartige Präsentation zum Erstellen von Android Apps mit Gradle Build System: Wie Xavier Ducrohet sagte:
In Android Studio dreht sich alles um das Bearbeiten, Debuggen und Profilieren. Es geht nicht mehr darum zu bauen.
Am Anfang mag es ein bisschen verwirrend sein (besonders für diejenigen, die mit Eclipse arbeiten und die Ameise noch nie gesehen haben - wie ich;)), aber am Ende bietet Gradle uns einige großartige Möglichkeiten und das auch es lohnt sich, dieses Build-System zu lernen.
Hier ist die visuelle Anleitung:
pdate für Android Studio 0.8.2:
Gehen Sie in Android Studio 0.8.2 zu Projektstruktur -> unter Module drücken Sie einfach die Plus-Taste und wählen Sie Vorhandenes Projekt importieren und actionbarsherlock
importieren. Synchronisieren Sie dann Ihre Gradle-Dateien.
Wenn Sie auf den Fehler stoßen
Fehler: Die SDK Build Tools-Version (xx.x.x) ist zu niedrig. Das erforderliche Minimum ist yy.y.y
öffnen Sie einfach die Datei build.gradle
im Verzeichnis actionbarsherlock
und aktualisieren Sie die Datei buildToolsVersion
auf die vorgeschlagene.
Android {
compileSdkVersion 19
buildToolsVersion 'yy.y.y'
Menü Datei -> Projektstruktur ... :
Modul -> Modul importieren
Wählen Sie nach dem Importieren des Bibliotheksmoduls Ihr Projektmodul aus und fügen Sie die Abhängigkeit hinzu:
Und dann wählen Sie das importierte Modul :
Verwenden Sie das Menü Datei -> Projektstruktur -> Module.
Ich habe heute damit angefangen. Es ist ein bisschen anders.
Für Sherlock möchten Sie möglicherweise das Testverzeichnis löschen oder die Datei junit.jar
zum Klassenpfad hinzufügen.
Um die Bibliothek mit gradle zu importieren, müssen Sie sie möglicherweise zum Abschnitt dependencies
Ihres build.gradle
(des Moduls) hinzufügen.
Z.B.
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.Android.support:appcompat-v7:22.1.0'
compile 'com.actionbarsherlock:actionbarsherlock:[email protected]'
}
Android Studio ändert sich.
Es gibt einen Abschnitt mit dem Namen "Moduleinstellungen öffnen", wenn Sie mit der rechten Maustaste auf einen Modulordner im Projektabschnitt von Android Studio klicken (ich verwende die Version 0.2.10).
Ich würde Abhängigkeiten, Android Bibliotheken und Multi-Projekt-Setup notwendige Lektüre in Betracht ziehen. Bitte nehmen Sie sich dafür ein paar Minuten Zeit.
Lesen Sie insbesondere im Fall eines Nicht-JAR-Bibliotheksprojekts den folgenden Ausschnitt aus der obigen Quelle:
Gradle-Projekte können auch von anderen Gradle-Projekten abhängen, wenn Sie ein Multiprojekt-Setup verwenden. Bei einer Einrichtung mit mehreren Projekten werden normalerweise alle Projekte als Unterordner eines bestimmten Stammprojekts angelegt.
Zum Beispiel auf folgende Struktur gegeben:
MyProject/
+ app/
+ libraries/
+ lib1/
+ lib2/
Wir können 3 Projekte identifizieren. Gradle wird sie mit folgendem Namen referenzieren:
:app
:libraries:lib1
:libraries:lib2
Jedes Projekt verfügt über ein eigenes build.gradle, das angibt, wie es erstellt wird. Darüber hinaus befindet sich im Stammverzeichnis eine Datei namens settings.gradle, in der die Projekte deklariert werden. Dies ergibt die folgende Struktur:
MyProject/
| settings.gradle
+ app/
| build.gradle
+ libraries/
+ lib1/
| build.gradle
+ lib2/
| build.gradle
Der Inhalt von settings.gradle ist sehr einfach:
include ':app', ':libraries:lib1', ':libraries:lib2'
Dies definiert, welcher Ordner tatsächlich ein Gradle-Projekt ist.
Das: app-Projekt hängt wahrscheinlich von den Bibliotheken ab. Dazu müssen die folgenden Abhängigkeiten deklariert werden:
dependencies {
compile project(':libraries:lib1')
}
Bitte beachten Sie, dass die Android Studio-GUI kaum oder gar nicht verwendet wurde, um dies zu erreichen.
Ich verwende derzeit Git-Submodule , um die verschachtelte Bibliothek mit der tatsächlichen Bibliothek Git Repo zu verknüpfen, um ein Abhängigkeits-Chaos zu vermeiden.
Ich habe gerade einen einfacheren Weg gefunden (anstatt direkt in die .gradle-Dateien zu schreiben).
Dies ist für Android Studio 1.1.0.
Menü Datei -> Neues Modul ...:
Klicken Sie auf "Vorhandenes Projekt importieren".
Wählen Sie die gewünschte Bibliothek und das gewünschte Modul aus.
Klicken Sie auf Fertig stellen. Android Studio importiert die Bibliothek in Ihr Projekt. Es werden gradle Dateien synchronisiert.
Fügen Sie das importierte Modul zu den Abhängigkeiten Ihres Projekts hinzu.
Klicken Sie mit der rechten Maustaste auf den App-Ordner -> Moduleinstellungen öffnen -> gehen Sie zur Registerkarte Abhängigkeiten -> klicken Sie auf die Schaltfläche '+' -> klicken Sie auf Modulabhängigkeit.
Das Bibliotheksmodul wird dann zu den Abhängigkeiten des Projekts hinzugefügt.
???
Profitieren
Der einfachste Weg, ein externes Bibliotheksprojekt einzubinden, ist (zum Beispiel eine Facebook-Bibliothek einzubinden, die ein Verzeichnis höher im Abhängigkeitsordner gespeichert ist):
In settings.gradle hinzufügen
include ':facebook'
project(':facebook').projectDir = new File(settingsDir, '../dependencies/FacebookSDK')
Fügen Sie im Abschnitt Abhängigkeiten von build.gradle hinzu
compile project ('facebook')
Alles, was Sie tun müssen, ist das Projekt mit gradle-Dateien zu synchronisieren.
Eine einfache Möglichkeit, eine JAR-Datei als Bibliothek zu Ihrem Android Studio-Projekt hinzuzufügen:
a) Kopieren Sie Ihre * .jar-Dateien
b) Fügen Sie in das Verzeichnis libs unter Ihren Projekten Folgendes ein:
c) Zu build.gradle hinzufügen:
dependencies {
...
compile files('libs/ScanAPIAndroid.jar', 'libs/ScanAPIFactoryAndroid.jar', .., ..)
}
b) Wenn Ihr Projekt aus dem Beispiel com.example.MYProject und den Bibliotheken com.example.ScanAPI den gleichen Namespace wie com.example hat, überprüft Android Studio Ihren Build und erstellt alle erforderlichen Dateien Änderungen in Ihrem Projekt. Danach können Sie diese Einstellungen im Menü Datei -> Projektstruktur überprüfen. .
c) Wenn Ihr Projekt und Ihre Bibliotheken einen anderen Namespace haben Sie müssen mit der rechten Maustaste auf die Bibliothek klicken und die Option "Als Bibliothek hinzufügen" auswählen und den gewünschten Typ auswählen.
Denken Sie daran, dass die Option "Projektstruktur" in "build.gradle" in der aktuellen Version von Android Studio (0.2.3) keine automatischen Änderungen vornimmt. Möglicherweise wird diese Funktion in den nächsten Versionen verfügbar sein.
Die entsprechende build.gradle-Datei wird dann automatisch aktualisiert.
Öffnen Sie Ihre build.gradle-Datei und fügen Sie dem Abhängigkeitsabschluss eine neue Erstellungsregel hinzu. Wenn Sie beispielsweise Google Play Services hinzufügen möchten, sieht der Abschnitt mit den Abhängigkeiten Ihres Projekts folgendermaßen aus:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.Android.gms:play-services:6.5.+'
}
Im Projektfenster Control + Klicken Sie auf das Modul, zu dem Sie die Abhängigkeit hinzufügen möchten, und wählen Sie Moduleinstellungen öffnen.
Wählen Sie die Registerkarte Abhängigkeiten, gefolgt von der Schaltfläche + in der linken unteren Ecke. Sie können aus der folgenden Liste von Optionen auswählen:
Anschließend können Sie weitere Informationen zu der Abhängigkeit eingeben, die Sie Ihrem Projekt hinzufügen möchten. Wenn Sie beispielsweise Bibliotheksabhängigkeit auswählen, zeigt Android Studio eine Liste der Bibliotheken an, aus denen Sie auswählen können.
Nachdem Sie Ihre Abhängigkeit hinzugefügt haben, überprüfen Sie die build.gradle-Datei auf Modulebene. Es sollte automatisch aktualisiert werden, um die neue Abhängigkeit aufzunehmen.
Gehen Sie in dem Projekt, in dem Sie ein externes Bibliotheksprojekt hinzufügen möchten, zum Menü Datei -> Neu -> * Neues Modul importieren **, navigieren Sie zu dem Bibliotheksprojekt, das Sie Ihrem Projekt hinzufügen möchten, und wählen Sie "Bibliothek" -Modul in Ihrem Projekt hinzufügen. Sie erhalten settings.gradle in Ihren Projekten, neben der App, der enthaltenen Bibliothek, in etwa wie folgt:
include ':app', ':library'
Fügen Sie in build.gradle (Module: app) im Abschnitt "Abhängigkeiten" Folgendes hinzu:
Projekt kompilieren (': Bibliothek'
Erstellen Sie das Projekt neu und fertig.
* Sie können beliebig viele Bibliotheken (Module) hinzufügen. In diesem Fall haben Sie in settings.gradle:
include ':app', ':lib1', ':lib2', ...
Und in build.gradle benötigen Sie:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// Some other dependencies...
compile project(':lib1')
compile project(':lib2')
...
}
Wenn Sie Zugriff auf die Ressourcen eines Bibliotheksprojekts benötigen (wie bei ABS), stellen Sie sicher, dass Sie das Bibliotheksprojekt/Modul als "Modulabhängigkeit" anstelle einer "Bibliothek" hinzufügen.
Sie können dies leicht tun. Gehe zum Menü Datei -> Neu -> Modul importieren ... :
Suchen Sie nach dem Verzeichnis, in dem sich das Modul befindet. Klicken Sie auf Fertig stellen:
Gehen Sie zu Projektstruktur und fügen Sie Modulabhängigkeit hinzu:
Hinweis: Wenn Sie einen SDK-Fehler erhalten, aktualisieren Sie diesen.
Das Bearbeiten von Bibliotheksabhängigkeiten über die GUI ist nicht ratsam, da dadurch diese Änderungen nicht in Ihre build.gradle-Datei geschrieben werden. Ihr Projekt wird also nicht über die Befehlszeile erstellt. Wir sollten die build.gradle-Datei wie folgt direkt bearbeiten.
Zum Beispiel auf folgende Struktur gegeben:
Mein Projekt/
Wir können drei Projekte identifizieren. Gradle wird sie mit den folgenden Namen referenzieren:
Das: app-Projekt hängt wahrscheinlich von den Bibliotheken ab. Dazu müssen die folgenden Abhängigkeiten deklariert werden:
dependencies {
compile project(':libraries:lib1')
}
Zur Antwort hinzufügen: Wenn in IDE kein Fehler angezeigt wird, Sie jedoch versuchen zu kompilieren, erhalten Sie Folgendes:
No resource found that matches the given name 'Theme.Sherlock.Light'
Ihr Bibliotheksprojekt ist wahrscheinlich als Anwendungsprojekt kompiliert. Um dies zu ändern, gehen Sie zu:
Menü Datei -> Projektstruktur -> Facetten -> [Bibliotheksname] -> Aktivieren Sie "Bibliotheksmodul".
First Way Dies funktioniert für MacBook.
Wählen Sie zuerst Ihre builder.gradle-Datei aus, wie im folgenden Bildschirm dargestellt:
Fügen Sie Abhängigkeiten wie auf dem ausgewählten Bildschirm hinzu:
Wählen Sie das Synchronisierungsprojekt.
Wenn Sie eine Fehlermeldung wie "Projekt mit Pfad ': Signatur-Pad' konnte nicht in Projekt ': App' gefunden werden" erhalten, verwenden Sie bitte den zweiten Weg:
Menü wählen Datei -> Neu -> Modul importieren ... :
Nachdem Sie auf Modul importieren geklickt haben,
geben Sie den Pfad der Bibliothek wie meinen MacBook-Pfad an:
Klicken Sie auf Fertig stellen . Nun ist Ihre Bibliothek hinzugefügt.
Nach dem Importieren des ABS-Moduls (aus Datei> Projektstruktur) und Vergewissern, dass Android 2.2 und Support Library v4 als Abhängigkeiten vorliegen, wurde bei Ihnen als @Alex immer noch die folgende Fehlermeldung angezeigt
Error retrieving parent for item: No resource found that matches the given name 'Theme.Sherlock.Light.DarkActionBar'
Ich habe das neu importierte Modul als Abhängigkeit zu meinem Haupt-App-Modul hinzugefügt, und das hat das Problem behoben.
Fügen Sie einfach den Bibliotheksnamen zum Abhängigkeitsblock der build.gradle -Datei Ihrer App hinzu.
dependencies {
// ...
implementation 'com.example:some-library:1.0.0'
}
Beachten Sie, dass Sie jetzt implementation
anstelle von compile
verwenden sollten. Dies ist neu in Android Studio 3.0. Siehe diese Frage & Antwort für eine Erklärung des Unterschieds.
Um dieses Problem zu beheben, müssen Sie lediglich den abs-Ressourcenpfad wie folgt zu Ihrer Projekterstellungsdatei hinzufügen:
sourceSets {
main {
res.srcDirs = ['src/main/res','../../ActionBarSherlock/actionbarsherlock/res']
}
}
Also kompiliere ich wieder fehlerfrei.
Wenn Sie Android Studio .0.4.0 haben, können Sie einen neuen Ordner in Ihrem Erstellungspfad YourApp/libraries
erstellen. Kopieren Sie die JAR-Datei. Klicken Sie dort mit der rechten Maustaste darauf und wählen Sie "Als Bibliothek hinzufügen". Jetzt hast du ein Popup. Wählen Sie einfach Ihr Verzeichnis und drücken Sie OK, und das wars.
https://www.dropbox.com/s/1e3eteu3h0pmkf7/Android%20studio%20_doc.doc?dl= ist der Dropbox-Link zum Hinzufügen einer JAR-Datei und eines Bibliotheksprojekts in der neuesten Version von Android Studio 1.0.1.
Bitte beachten Sie die Dokumentation mit Screenshots. Es ist sehr einfach für einen neuen Benutzer.
Importieren Sie einfach das Bibliotheksprojekt Android als Modul und in Build.gradle.
Plugin anwenden: 'com.Android.library'
Danach folgen Sie diesen Schritten:
Öffnen Sie die Build Gradle-Modul-App-Datei und fügen Sie Ihre Abhängigkeit hinzu. Wenn Sie die Bibliothek herunterladen, müssen Sie sie nur importieren und als Gradle erstellen.
Andernfalls fügen Sie Repositorys in der Side-Gradle-Modul-App hinzu:
repositories {
maven { url 'http://clinker.47deg.com/nexus/content/groups/public' }
}
Die ersten Repositorys laden die Bibliothek für Sie herunter.
Und kompiliere die heruntergeladene Bibliothek:
compile ('com.fortysevendeg.swipelistview:swipelistview:[email protected]') {
transitive = true
}
Wenn Sie eine Bibliothek erstellen, müssen Sie nur das Projekt als neues Modul importieren.
Grundsätzlich können Sie Ihre JAR-Dateien auf drei verschiedene Arten einbinden. Die letzte ist die Remote-Bibliothek, die https://bintray.com/ jcenter online repository verwendet. Wenn Sie dies jedoch auf eine der beiden anderen Arten tun, wird die JAR-Datei physisch in Ihr Projekt aufgenommen. Bitte lesen Sie diesen Link https://stackoverflow.com/a/35369267/5475941 für weitere Informationen. In diesem Beitrag habe ich erklärt, wie Sie Ihre JAR-Datei in Android studio importieren und auf alle möglichen Arten.
Zusammenfassend lässt sich sagen, dass diese Dateien heruntergeladen werden und sich physisch im Projekt befinden, wenn dies der Fall ist (lokale Adresse):
Wenn es sich jedoch um eine solche Internetadresse handelt, handelt es sich um Remote-Bibliotheken (bintray.com jcenter part), die remote verwendet werden:
Ich hoffe, es hilft.
Ich habe die Lösung gefunden. Es ist so einfach. Folgen Sie froger_mcs Anweisungen .
Stellen Sie sicher, dass Sie den Ordner src in Projektstruktur -> Module (Quellen) als Quellordner festlegen.
Ich hatte eine andere Ursache für das Problem:
repositories {
mavenCentral()
}
ändere mavenCentral () in jcenter () und füge hinzu
allprojects {
repositories {
jcenter()
}
}
Für Android Studio:
Klicken Sie auf Build.gradle (Modul: App) .
Und für hinzufügen
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile files('libs/commons-io-2.4.jar')
}
und erstellen Sie in Ihrem Verzeichnis "app" ein Verzeichnis "libs". Fügen Sie die Datei yourfile.jar hinzu:
Kompilieren Sie abschließend die Gradle-Dateien:
Wechseln Sie in Android Studio in den App-Ordner und öffnen Sie die Datei build.gradle. Hier sehen Sie Abhängigkeiten {}. Darin können Sie das Bibliotheksprojekt hinzufügen und synchronisieren. Nachdem Sie die Bibliothek synchronisiert haben, wird sie Ihrem Projekt hinzugefügt, und Sie können ihre Funktionen und Klassen in Ihrem Projekt verwenden.
Ich bin auch auf dasselbe Problem gestoßen, als ich die folgenden Dinge getan habe.
Ich importiere das Bibliotheksprojekt in mein AndroidStudio IDE als Modul über das Menü Datei -> Modulmenüs importieren
Dann ging ich zu meinem Hauptmodul, in dem ich das Bibliotheksprojekt als abhängiges Projekt haben möchte
Klicken Sie mit der rechten Maustaste auf das Hauptmodul (in meinem Fall heißt es app) -> Moduleinstellung öffnen -> Registerkarte Abhängigkeiten aufrufen -> Schaltfläche + anklicken (Sie erhalten es auf der rechten Seite des Fensters) -> Modulabhängigkeit anklicken -> Bibliotheksprojekt aus Liste auswählen
Übernehmen Sie die Änderungen und klicken Sie auf OK Taste.
Es hat bei mir funktioniert. Ich hoffe, es wird auch anderen helfen.