webentwicklung-frage-antwort-db.com.de

Vorausgesetzt, die Gradle-Abhängigkeit ist AAR nicht JAR

Ich habe ein Problem, bei dem ich versuche, eine Bibliothek mit dem Namen ParseLoginUI in mein Projekt aufzunehmen. 

Das Problem ist, dass es das bereitgestellte Tag verwendet, anstatt zu kompilieren. Ich glaube, dass das bereitgestellte Tag bedeutet, dass das Projekt diese Abhängigkeit liefern muss, damit die Bibliothek funktioniert, anstatt dass diese Bibliothek die Bibliotheken selbst kompiliert.

In meiner Android-Bibliothek verweist das Facebook-SDK also so.

 provided 'com.facebook.Android:facebook-Android-sdk:4.0.1'

Dann kompiliere ich in meinem mobile/build.gradle, dem mein Hauptmodul, die Facebook-SDKs so.

compile 'com.facebook.Android:facebook-Android-sdk:4.0.1'

Ich habe die Anleitung zum Installieren dieser Bibliothek befolgt und soll dies auch tun. Hier ist die Warnung, die ich bekomme, die mich am Kompilieren hindert, das von der ParseLoginUI/build.gradle-Datei (der Datei, die sie bereitstellt) geworfen wird.

Warning:Project ParseLoginUI: provided dependencies can only be jars. com.facebook.Android:facebook-Android-sdk:aar:4.0.1 is an Android Library.

Die Dokumentation für diese Bibliothek enthält ein Update, das wie folgt lautet:

Wenn Sie Gradle 1.1.0 oder höher verwenden, kann Auftreten. "Warnung: Project ParseLoginUI: Die angegebenen Abhängigkeiten können nur jars sein. Com.facebook.Android:facebook-Android-sdk:aar : 4.0.1 ist eine Android Bibliothek ". Es ist eine offene Ausgabe des Android Gradle Build Tools. Derzeit Verwendet der Workround Gradle 1.0.0.

Fair genug, aber ich möchte mein Gradle nicht herunterstufen (derzeit läuft Version 1.2.3), um dieses Problem zu lösen. Es muss einen Weg geben, um dies oder einen besseren Weg zu tun.

Meine Frage

Wie kann ich das Facebook SDK sowohl in das Bibliotheksmodul als auch in mein Hauptmodul aufnehmen?

21
StuStirling

sie haben bereits erwähnt, dass es sich bei Gradle um ein offenes Problem handelt. Wenn Sie ParseLoginUI als Bibliotheksmodul verwenden. Ändern Sie einfach die Datei build.gradle in ParseLoginUI selbst.

    provided 'com.facebook.Android:facebook-Android-sdk:4.0.1'
                              to
    compile 'com.facebook.Android:facebook-Android-sdk:4.0.1'
7
sowmia

Versuchen Sie dies: http://www.labouisse.com/how-to/2014/07/28/gradle-provided-scope-and-intellij/

Er ahmt grundsätzlich die bereitgestellte Implementierung nach.

4
Rotemmiz

Gemäß diesem Problem sollte es möglich sein, das Gradle-Plugin 1.3.0-beta3 zu verwenden. Möglicherweise müssen Sie Ihre Build-Tools auf Version 23.0.0 rc1 oder höher aktualisieren.

2
EpicPandaForce

Nach dem Versuch habe ich die Lösung gefunden…

AAR bedeutet in erster Linie Android-Archivbibliothek. Dies ist kein JAR. Ich habe etwas gesucht, das facebook-Android-sdk-4.0.1.jar heißt, aber kein Glück.

Der Trick besteht darin, Facebook-Code herunterzuladen und als Modul hinzuzufügen. Dies funktioniert perfekt und Sie können Gradle 1.2.3 mit ParseLoginUI verwenden.

Gehen Sie hier: https://developers.facebook.com/docs/Android/downloads

Download: https://developers.facebook.com/resources/facebook-Android-sdk-4.0.1.Zip Dekomprimieren Sie es.

Gehen Sie zu Ihrem eigenen Projekt. - Entfernen Sie in Ihrem ParseLoginUI-Gradel den Verweis auf Parse

Drücken Sie FILE, NEW und IMPORT MODULE.

Wählen Sie einen Ordner mit dem Namen facebook aus, der sich in der unkomprimierten Zip-Datei befindet.

Rufen Sie dieses Modul auf facebook-Android-sdk-4.0.1.

Fügen Sie nun in Ihrem Parseloginui eine Abhängigkeit zu diesem Modul hinzu, indem Sie Folgendes verwenden:

compile project(':facebook-Android-sdk-4.0.1’)

Sie müssen auch eine Datei aus der heruntergeladenen Zip-Datei in den neuen Modulordner kopieren. Die Datei lautet gradle.properties. Die, die hat:

Android_BUILD_MIN_SDK_VERSION=9

Android_BUILD_TARGET_SDK_VERSION=21

Android_BUILD_TOOLS_VERSION=21.1.2

Android_BUILD_SDK_VERSION=21

Das ist alles.

Drücken Sie SYNCHRONIZE und drücken Sie die Daumen.

Ich habe in meinem Fall nach mehreren Stunden mit Gradle und Android Studio gearbeitet. Lassen Sie es mich wissen. Wenn Sie Referenzprobleme haben (ich hatte), verwenden Sie FILE, PROJECT STRUCTURE zum Hinzufügen Das Jar verweist korrekt auf Ihre Module. (Ich habe sie manuell geschrieben, und es scheint, als wäre dies ein Fehler in meinen Parsenreferenzen gewesen, wahrscheinlich ein Pfad oder ein Symbol. Weiß nicht. Tun Sie das über die Benutzeroberfläche von Android Studio behebt das Problem). Übrigens, Sie können eine Version von parse in ParseLoginUI und eine neuere Version in Ihrem Projekt verwenden (ich habe das nicht für die facebook-Version getestet).

Folgendes habe ich in meiner ParseLoginUI-Gradle-Datei:

compile 'com.parse.bolts:bolts-Android:1.2.0'

compile 'com.Android.support:support-v4:22.0.0'

compile project(':facebook-Android-sdk-4.0.1')

compile files('libs/Parse-1.9.1.jar')

compile files('libs/ParseFacebookUtilsV4-1.9.1.jar')

Und das habe ich in meiner App gradle:

compile 'com.google.Android.gms:play-services:7.5.0'

compile project(':facebook-Android-sdk-4.0.1')

compile 'com.parse.bolts:bolts-Android:1.2.0'

compile files('libs/Parse-1.9.2/Parse-1.9.2.jar')

compile files('libs/Parse-1.9.2/ParseFacebookUtilsV4-1.9.2.jar')

compile project(':ParseLoginUI’)

Hinweis: Ich verwende die Gradle-Version 2.4 und die Android-Plugin-Version 1.2.3. Wählen Sie dies in DATEI, PROJEKTSTRUKTUR, PROJEKT.

Viel Glück.

2
Ricardo

Sie können diese Syntax ausprobieren:

angegeben (Name: "", ext: 'aar')

Stellen Sie sicher, dass Ihr Hauptbuild.gradle den Pfad oder das Maven-Repo zum gewünschten AAR-Paket enthält.

1
bduhbya

Ich hatte dieses Problem mit Kalligraphie (github.com/chrisjenx/Calligraphy) und Gradle 2.3.3. Ich habe das Repository von jcenter () in mavenCentral () geändert und jetzt ist es in Ordnung!

0
Golnar

stattdessen,

  1. ParseLoginUI von hier klonen

  2. Importieren Sie ParseLoginUI als Modul und fügen Sie diese in Gradle ein 

    compile project(':ParseLoginUI')
    compile 'com.facebook.Android:facebook-Android-sdk:4.0.1'
    

Hoffe das hilft

0