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



我遇到一个问题,我试图在我的项目中包含一个名为ParseLoginUI的库。

问题是它使用了提供的标记而不是编译。我相信提供的标记意味着项目需要提供这种依赖关系,以便库工作,而不是这个库自己编译库。

所以在我的Android库中,它引用了Facebook SDK

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

然后在我的mobile/build.gradle中,这是我的主要模块,我像这样编译了Facebook SDK

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.

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

如果你使用的是1.1.0级或以上,你可能会遇到"警告:项目ParseLognUI:提供的依赖项只能是jar。安卓系统:安卓系统sdk:aar:4.0.1是安卓系统Library"。这是一个开放的android gradle构建工具。目前工作轮使用的是gradle 1.0.0。

很公平,但我不想仅仅为了解决这个问题而降低我的等级(目前运行的是v1.2.3)。必须有一种方法或更好的方法来解决这个问题。

我的问题

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

您已经提到这是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。您可能需要将构建工具更新到23.0.0 rc1或更高版本。

经过反复尝试,我找到了解决方案…

首先,AAR的意思是android归档库,它不是JAR。我搜索了一个叫facebook-android-sdk-4.0.1.jar的东西,但没有找到。

诀窍是下载facebook代码并将其作为模块添加。做到这一点,效果非常好,您可以将等级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 的引用

按文件、新建、导入模块。

选择一个名为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引用正确添加到您的模块中。(我手动编写了它们,这似乎是我解析引用中的一个错误,可能是一个路径或符号,不知道。使用android studio的用户界面可以解决问题吗?)。顺便说一句,你可以在ParseLoginUI中使用parse的一个版本,在你的项目中使用另一个更新的版本(我没有在facebook版本中测试它)。

这是我的ParseLoginUI渐变文件中的内容:

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

这就是我的应用程序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’)

注意:我使用的是Gradle版本2.4和android插件版本1.2.3。在文件、项目结构、项目中选择。

祝你好运。

您可以尝试以下语法:

提供(名称:",文本:"ar")

确保你的主构建.gradle有你想要提供的aar包的路径或maven repo。

而不是

  1. 从这里克隆ParseLoginUI

  2. 将ParseLoginUI作为一个模块导入,并将其包含在渐变中

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

希望这能帮助

我在书法(github.com/chrisjenx/书法)和2.3.3级时遇到了这个问题。我将存储库从jcenter()更改为mavenCentral(),现在一切都好了!

最新更新