我遇到了一个问题,我试图在我的项目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?
答案 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)
答案 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)
而不是那个,
从here
将ParseLoginUI导入为模块并将其包含在gradle
中compile project(':ParseLoginUI')
compile 'com.facebook.android:facebook-android-sdk:4.0.1'
希望这有帮助
答案 6 :(得分:0)
我有书法(github.com/chrisjenx/Calligraphy)和gradle 2.3.3这个问题。 我将存储库从jcenter()更改为mavenCentral(),现在没问题了!