在Android Studio中,我正在尝试编译一个使用Android库的Android应用程序模块 该库包含一个Bugsense的jar文件(由gradle自动包含)。
虽然库模块编译正确,但应用程序模块失败,因为它正在查找库模块中使用的Bugsense jar文件。
我有一个允许项目编译的解决方法。通过在项目中包含Bugsense依赖项,一切正常。
我的问题是:如何在不重复Bugsense依赖的情况下编译项目?
这是我的库项目的build.gradle文件。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android-library'
repositories {
mavenCentral()
maven { url 'http://www.bugsense.com/gradle/' }
}
android {
compileSdkVersion 15
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 15
targetSdkVersion 15
}
}
dependencies {
compile 'com.bugsense.trace:bugsense:3.6'
}
库项目名为“util”
以下是应用程序的build.gradle的android部分
android {
compileSdkVersion 15
buildToolsVersion '19.0.0'
defaultConfig {
minSdkVersion 15
targetSdkVersion 15
}
dependencies {
compile project(':util')
}
}
当我编译它时,我收到以下错误:
* What went wrong:
A problem occurred configuring project ':br'.
> Failed to notify project evaluation listener.
> Could not resolve all dependencies for configuration ':br:_DebugCompile'.
> Could not find com.bugsense.trace:bugsense:3.6.
Required by:
dss:br:unspecified > dss:util:unspecified
我可以通过将Bugsense添加到应用程序的build.gradle文件的存储库部分来进行编译工作。以下是我添加到应用程序项目的build.gradle文件中的代码。
repositories {
mavenCentral()
maven { url 'http://www.bugsense.com/gradle/' }
}
请记住,上面的代码位于应用程序项目和库的build.gradle中。
如何避免将Bugsense依赖项添加到应用程序和库项目中?
更新
我正在使用Gradle 1.8
我正在使用“gradle clean assembleDebug”命令行编译
以下是应用程序项目的完整build.gradle文件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
//maven { url 'http://www.bugsense.com/gradle/' }
}
android {
compileSdkVersion 15
buildToolsVersion '19.0.0'
defaultConfig {
minSdkVersion 15
targetSdkVersion 15
testPackageName "com.myapp.test"
}
dependencies {
compile project(':common')
compile project(':util')
}
}
dependencies {
instrumentTestCompile 'com.jayway.android.robotium:robotium-solo:4.3'
instrumentTestCompile 'com.squareup:fest-android:1.0.+'
instrumentTestCompile 'com.squareup.spoon:spoon-client:1.0.+'
instrumentTestCompile 'com.google.guava:guava:15.0'
}
configurations { spoon }
dependencies { spoon 'com.squareup.spoon:spoon-runner:1.0.5' }
答案 0 :(得分:2)
这是预期的行为。仅考虑当前已解析其配置的项目的存储库声明,即使涉及传递依赖项也是如此。通常,存储库在根项目的allprojects { .. }
或subprojects { ... }
块中声明,在这种情况下,此问题永远不会发生。
PS:dependencies { .. }
需要超出android { ... }
区块。