【发布时间】:2017-01-10 16:53:30
【问题描述】:
我必须将第 3 方库集成到我的 Android Studio 项目中,而且效果很好,没有任何问题。
它要求将以下配置添加到项目's build.gradle(示例配置如下)
allprojects {
repositories {
jcenter()
maven {
url "http://link/location"
}
}
}
然后给app.gradle添加依赖如下
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:support-v4:24.1.1'
compile 'com.android.support:cardview-v7:24.1.1'
compile 'xxx.xx:xxx:1.11.0:@aar'
}
但我在这里的要求是创建一个库模块(在项目中),其中包含这个第 3 方库集成。
想法是将包含少量公共方法(其中使用此第 3 方库方法)的我的库分发给其他人,以便与他们的应用程序集成。
正如我之前提到的,要使用这个 3rd 方库,我需要使用他们自己的 Maven 存储库并要求将设置放在 Projects build.gradle 中。但是因为我想在我的库模块中扭曲所有内容,所以我刚刚测试了将 repository 位添加到 Library Module's build.gradle 中。但这会产生编译错误。
repositories {
jcenter()
maven {
url "http://link/location"
}
}
我的问题是我能实现我想要做的事情吗?如果是这样,我在这里缺少什么。谢谢
编辑
简要说明我想要做什么。
此第 3 方库在标准 jcenter 或 mavenCentral 存储库中不可用。相反,它驻留在自己的 Maven 存储库服务器上。这就是为什么当需要集成时,它要求在根级别(项目)build.gradle 中指定服务器位置,如下所示。然后我可以添加依赖...
allprojects {
repositories {
jcenter()
maven {
url "http://link/location"
}
}
}
但由于我想在库模块中完成此集成,因此尝试将上述存储库位置添加到我的库模块中的 gradle.build 中。
所以我可以访问这些类,但编译我的库项目的主应用程序说无法解析第 3 方库位置中的库。其实主应用程序不应该想知道,只要我的库模块知道它......
【问题讨论】:
-
好吧,如果您没有
compile 'xxx.xx:xxx:1.11.0:@aar',您希望您的库模块如何访问来自compile 'xxx.xx:xxx:1.11.0:@aar'的代码?这不是唯一的,因为 AAR 位于不同的存储库中 - 如果您想使用某个库,您需要能够访问该库的代码,通常通过compile语句。 -
感谢 CommonsWare,我基本上可以访问该 3rd 方库中的类并使用它们。但是当尝试在手机中安装时提供参考错误。想知道这是否是因为我没有在 root build.gradle 中指定 Maven LINK,而是在 Library 模块中指定。我在这里无法理解的是,理论上这是我想要做的事情是否可能。
-
我还在库模块的 build.gradle 下的依赖项块中添加了“xxx.xx:xxx:1.11.0:@aar”。
-
“理论上这是我想要做的事情是否可能” - 目前还不清楚你想要做什么。如果您的问题是“App A 是否可以针对库 B 编译,而库 B 可以针对库 C 进行编译?”,那么答案是“是”。
-
感谢 CommonsWare,请检查我的问题中的 EDITS 部分。
标签: android maven android-studio gradle android-gradle-plugin