未加载Android aar文件所需的依赖项
我在从maven centeral存储库加载依赖项时遇到问题 我有一个图书馆项目,我的不同客户使用我的图书馆。我的库依赖于GoolgePlayService和appcompat-v7。 最近我开始使用Gradle而不是ant。所以我使用了andoird library插件,并将library.aar文件推到了本地依赖项中。 现在在我的TestApp中,我从本地maven加载了aar文件,但它没有从maven中央存储库加载Dependecy文件 下面是我的build.gradle文件 应用插件:“android库”未加载Android aar文件所需的依赖项,android,dependencies,aar,Android,Dependencies,Aar,我在从maven centeral存储库加载依赖项时遇到问题 我有一个图书馆项目,我的不同客户使用我的图书馆。我的库依赖于GoolgePlayService和appcompat-v7。 最近我开始使用Gradle而不是ant。所以我使用了andoird library插件,并将library.aar文件推到了本地依赖项中。 现在在我的TestApp中,我从本地maven加载了aar文件,但它没有从maven中央存储库加载Dependecy文件 下面是我的build.gradle文件 应用插件:“
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.7.0'
}
}
apply plugin: 'maven'
version = "1.0.0_Build-1"
group = "com.sflibrary"
repositories {
mavenCentral()
}
dependencies {
compile ('com.google.android.gms:play-services:4.0.30') {
exclude module: 'support-v4'
}
compile 'com.android.support:appcompat-v7:+'
compile files('libs/android-support-v4.jar')
compile files('libs/libGoogleAnalyticsServices.jar')
}
android {
buildToolsVersion "17.0.0"
compileSdkVersion 17
defaultConfig {
minSdkVersion 14
targetSdkVersion 17
}
lintOptions {
abortOnError false
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
}
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file://${System.env.HOME}/.m2/repository/")
}
}
}
当我运行“GradleUploadArchives”时,它可以上传到我的本地mavel存储库中,其pom文件如下所示
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sflibrary</groupId>
<artifactId>library</artifactId>
<version>1.0.0_Build-1</version>
<packaging>aar</packaging>
<dependencies>
<dependency>
<groupId>com.google.android.gms</groupId>
<artifactId>play-services</artifactId>
<version>4.0.30</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.android.support</groupId>
<artifactId>appcompat-v7</artifactId>
<version>+</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
我正在犯错误
Error Code:
1
Output:
/opt/usr/dev/gradel/AndroidSDK/TestApp/build/res/all/debug/values/values.xml:1549: error: Error retrieving parent for item: No resource found that matches the given name '@style/Widget.AppCompat.Light.ActionBar.Solid'.
/opt/usr/dev/gradel/AndroidSDK/TestApp/build/res/all/debug/values/values.xml:1552: error: Error: No resource found that matches the given name: attr 'background'.
/opt/usr/dev/gradel/AndroidSDK/TestApp/build/res/all/debug/values/values.xml:1556: error: Error: No resource found that matches the given name: attr 'subtitleTextStyle'.
错误代码:
1.
输出:
/opt/usr/dev/gradel/AndroidSDK/TestApp/build/res/all/debug/values/values.xml:1549:错误:检索项的父项时出错:未找到与给定名称“@style/Widget.AppCompat.Light.ActionBar.Solid”匹配的资源。
/opt/usr/dev/gradel/AndroidSDK/TestApp/build/res/all/debug/values/values.xml:1552:错误:错误:未找到与给定名称匹配的资源:attr“background”。
/opt/usr/dev/gradel/AndroidSDK/TestApp/build/res/all/debug/values/values.xml:1556:错误:错误:找不到与给定名称匹配的资源:attr“subtitleTextStyle”。
但是,如果我在TestApp build.gradle文件依赖项部分中再次指定我的库依赖项,则工作正常。这意味着它将从本地maven存储库加载my library.aar文件,而不是从maven中央存储库加载appcompat-v7
我不知道我在这里犯了什么错误
提前谢谢
Samba Damerla目前,gradle不处理可传递依赖项 有关更多详细信息,请参见此答案: “只有配置为的项目的存储库声明 即使是可传递的,也会考虑当前已解决的问题
依赖关系是有关系的。”在我的例子中,我能够通过以下方式使它工作:
- 将aar文件上载到我们的my Nexus
- 将我的Nexus添加到allprojects:repositories:maven:url
- 在依赖项上指定transitive=true,如:
compile('com.snapfish:library:1.0.0_Build-1@aar'){ transitive=true }
- 如果我使用SNAPSHOT Maven构建,我还必须设置:
configurations.all { // check for updates every build (If a version number ends in -SNAPSHOT it is implicitly changing when looking for it in a maven repository) resolutionStrategy.cacheChangingModulesFor 0, 'seconds' }
configurations.all {
// check for updates every build (If a version number ends in -SNAPSHOT it is implicitly changing when looking for it in a maven repository)
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}