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

时间:2015-06-26 14:53:19

标签: android parse-platform gradle android-gradle build.gradle

我遇到了一个问题,我试图在我的项目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   文库&#34 ;.这是一个开放的android gradle构建工具问题。目前   workround使用gradle 1.0.0。

足够公平,但我不想降级我的gradle(目前正在运行v1.2.3)只是为了解决这个问题。必须有一种解决方法或更好的方法。

我的问题

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

7 个答案:

答案 0 :(得分:7)

您已经提到过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'

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

根据this issue,应该可以使用Gradle插件1.3.0-beta3。您可能需要将构建工具更新为版本23.0.0 rc1或更高版本。

答案 3 :(得分:2)

尝试和错误后,我找到了解决方案......

首先,AAR意味着Android归档库,它不是JAR。 我搜索了一个名为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中移除gradle对Parse

的引用

按FILE,NEW,IMPORT MODULE。

选择一个名为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 studio玩了几个小时后,我在我的案例中工作。 如果你明白了,请告诉我。 如果您有引用问题(我有),请使用FILE,PROJECT STRUCTURE将jar引用正确添加到模块中。 (我手动编写它们似乎是我的解析引用中的一个错误,可能是一个路径或符号,不知道。使用android studio的用户界面这样做会解决问题)。 顺便说一下,你可以在ParseLoginUI中使用一个解析版本,在你的项目中使用另一个更新版本(我没有测试facebook版本)。

这是我在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。在文件,项目结构,项目中选择。

祝你好运。

答案 4 :(得分:1)

您可以尝试以下语法:

提供(姓名:"",分机:' aar')

确保您的main build.gradle具有您想要提供的aar包的路径或maven repo。

答案 5 :(得分:0)

而不是那个,

  1. here

  2. 克隆ParseLoginUI
  3. 将ParseLoginUI导入为模块并将其包含在gradle

    compile project(':ParseLoginUI')
    compile 'com.facebook.android:facebook-android-sdk:4.0.1'
    
  4. 希望这有帮助

答案 6 :(得分:0)

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