我遇到一个问题,我试图在我的项目中包含一个名为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。
而不是
-
从这里克隆ParseLoginUI
-
将ParseLoginUI作为一个模块导入,并将其包含在渐变中
compile project(':ParseLoginUI') compile 'com.facebook.android:facebook-android-sdk:4.0.1'
希望这能帮助
我在书法(github.com/chrisjenx/书法)和2.3.3级时遇到了这个问题。我将存储库从jcenter()更改为mavenCentral(),现在一切都好了!