提供的Gradle依赖是AAR而不是JAR

我有一个问题,我想在我的项目中包含一个名为ParseLoginUI的库。

问题是它使用提供的标签而不是编译。 我相信所提供的标签意味着项目需要提供这种依赖性,以便库工作,而不是这个库编译库本身。

所以在我的Android库中,像这样引用了Facebook SDK。

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

然后在我的主要模块mobile / build.gradle中编译Facebook sdks。

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

我一直在按照指导安装这个库,这就是你如何做到这一点。 这里是我得到的警告,阻止我从ParseLoginUI/build.gradle文件(提供它的)抛出的编译。

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

这个库的文档有一个修复它是:

如果您使用的是Gradle 1.1.0或更高版本,您可能会遇到“警告:Project ParseLoginUI:提供的依赖项只能是jar。com.facebook.android:facebook-android-sdk:aar:4.0.1是一个Android库”。 这是一个Android的gradle构build工具的开放问题。 目前workround使用gradle 1.0.0。

公平的,但我不想降级我的gradle(目前运行v1.2.3)只是为了解决这个问题。 一定有办法,或者更好的办法。

我的问题

如何在库模块和主模块中包含Facebook SDK?

Solutions Collecting From Web of "提供的Gradle依赖是AAR而不是JAR"

你已经提到这是Gradle中的一个公开问题。 如果您使用ParseLoginUI作为库模块。 只需在ParseLoginUI中更改build.gradle文件即可。

  provided 'com.facebook.android:facebook-android-sdk:4.0.1' to compile 'com.facebook.android:facebook-android-sdk:4.0.1' 

试试这个: http : //www.labouisse.com/how-to/2014/07/28/gradle-provided-scope-and-intellij/

他基本上模仿提供的实现。

根据这个问题 ,应该可以使用Gradle插件1.3.0-beta3 。 您可能需要将构build工具更新到版本23.0.0 rc1或更高版本。

经过尝试和错误,我find了解决scheme…

首先,AAR是指android的归档库,它不是JAR。 我search了一个叫做facebook-android-sdk-4.0.1.jar ,但没有运气。

诀窍是下载Facebook代码,并将其添加为模块。 这样做,完美地工作,你可以使用Gradle 1.2.3与ParseLoginUI。

去这里: https : //developers.facebook.com/docs/android/downloads

下载: https : //developers.facebook.com/resources/facebook-android-sdk-4.0.1.zip解压缩。

去你自己的项目。 – 在你的ParseLoginUI中移除对Parse的引用

按FILE,NEW,IMPORT MODULE。

select一个名为Facebook的文件夹,这个文件夹位于您未压缩的zip文件中。

调用模块facebook-android-sdk-4.0.1.

现在添加你的parseloginui依赖到该模块,使用:

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

您还必须从您下载的zip文件复制文件到新的模块文件夹,该文件是gradle.properties。 那个有:

 ANDROID_BUILD_MIN_SDK_VERSION=9 ANDROID_BUILD_TARGET_SDK_VERSION=21 ANDROID_BUILD_TOOLS_VERSION=21.1.2 ANDROID_BUILD_SDK_VERSION=21 

就这样。

按SYNCHRONIZE并交叉手指。

经过几个小时的Gradle和Android工作室的工作,我在我的案例中工作。 让我知道,如果你明白了。 如果你有参考问题(我有),使用FILE,PROJECT STRUCTURE正确添加jar引用到你的模块。 (我写他们手动,它似乎是我的parsing引用错误,可能是一个path或符号,不知道。使用android studio的用户界面将解决这个问题)。 顺便说一下,你可以在ParseLoginUI中使用一个parsing版本,在你的项目中使用另一个更新版本(我没有testingfacebook版本)。

这是我在我的ParseLoginUI gradle文件中:

 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') 

这就是我在我的应用程序中所拥有的:

 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') 

注:我使用Gradle版本2.4和Android插件版本1.2.3。 在FILE,PROJECT STRUCTURE,PROJECT中确定。

祝你好运。

你可以试试这个语法:

提供(名称:“”,分机:'aar')

确保你的主build.gradle有你想要提供的aar包的path或maven回购。

相反,

  1. 从这里克隆ParseLoginUI

  2. 将ParseLoginUI作为模块导入,并将其包含在Gradle中

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

希望这可以帮助

我有这个问题与书法(github.com/chrisjenx/Calligraphy)和gradle 2.3.3。 我将库从jcenter()更改为mavenCentral(),现在可以了!