Since the last round of updates I have been getting this error. Gradle absolutely, categorically refuses to find the v13 support library. I have tried the following:
I can see the jars in the m2repository folder for it. In fact, I can see all of the alternative versions that I have tried.
Here's my build.gradle's:
buildscript {
repositories {
def androidHome = System.getenv("ANDROID_HOME")
mavenCentral()
maven {
url "$androidHome/extras/android/m2repository/"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
classpath 'org.robolectric.gradle:gradle-android-test-plugin:0.9.4'
}
ext.compileSdkVersion = 19
ext.buildToolsVersion = "19.0.3"
ext.minSdkVersion = 14
ext.targetSdkVersion = 18
ext.buildVersion = 8
ext.codeVersion = 5
}
allprojects {
repositories {
mavenCentral()
}
}
...and then in the main project:
apply plugin: 'android'
apply plugin: 'android-test'
tasks.withType(Compile) {
options.encoding = 'UTF-8'
}
def getVersionCode = { ->
return getDate()
}
def getDate() {
def date = new Date()
return date.getTime().toInteger() + 1000000000
}
def getVersionName = { ->
try {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--tags', '--dirty'
standardOutput = stdout
}
return stdout.toString().trim()
}
catch (ignored) {
return null;
}
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'com.android.support:support-v13:19.0.0'
compile 'com.android.support:support-v4:19.1.0'
compile 'com.fasterxml.jackson.core:jackson-databind:2.3.0'
compile project(':lib-volley')
compile project(':lib-pulltorefresh')
compile project(':lib-player')
androidTestCompile 'org.hamcrest:hamcrest-all:1.3'
androidTestCompile 'org.mockito:mockito-core:1.9.5'
androidTestCompile 'junit:junit:4.11'
androidTestCompile('org.robolectric:robolectric:2.3:jar-with-dependencies') {
exclude module: 'classworlds'
exclude module: 'maven-artifact'
exclude module: 'maven-artifact-manager'
exclude module: 'maven-error-diagnostics'
exclude module: 'maven-model'
exclude module: 'maven-plugin-registry'
exclude module: 'maven-profile'
exclude module: 'maven-project'
exclude module: 'maven-settings'
exclude module: 'nekohtml'
exclude module: 'plexus-container-default'
exclude module: 'plexus-interpolation'
exclude module: 'plexus-utils'
exclude module: 'wagon-file'
exclude module: 'wagon-http-lightweight'
exclude module: 'wagon-http-shared'
exclude module: 'wagon-provider-api'
}
androidTestCompile 'com.squareup:fest-android:1.0.7'
testCompile 'org.hamcrest:hamcrest-all:1.3'
testCompile 'org.mockito:mockito-core:1.9.5'
testCompile 'junit:junit:4.11'
testCompile('org.robolectric:robolectric:2.3:jar-with-dependencies') {
exclude module: 'classworlds'
exclude module: 'maven-artifact'
exclude module: 'maven-artifact-manager'
exclude module: 'maven-error-diagnostics'
exclude module: 'maven-model'
exclude module: 'maven-plugin-registry'
exclude module: 'maven-profile'
exclude module: 'maven-project'
exclude module: 'maven-settings'
exclude module: 'nekohtml'
exclude module: 'plexus-container-default'
exclude module: 'plexus-interpolation'
exclude module: 'plexus-utils'
exclude module: 'wagon-file'
exclude module: 'wagon-http-lightweight'
exclude module: 'wagon-http-shared'
exclude module: 'wagon-provider-api'
}
testCompile 'com.squareup:fest-android:1.0.7'
}
android {
compileSdkVersion rootProject.compileSdkVersion
buildToolsVersion rootProject.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.minSdkVersion
targetSdkVersion rootProject.targetSdkVersion
versionCode getVersionCode()
versionName getVersionName()
}
... # signingConfigs and productFlavors removed
buildTypes {
debug {
packageNameSuffix ".debug"
versionNameSuffix " debug"
debuggable true
jniDebugBuild true
}
trial {
packageNameSuffix ".trial"
versionNameSuffix " trial"
signingConfig signingConfigs.debug
debuggable true
jniDebugBuild true
}
release {
runProguard false
proguardFile 'proguard-android.txt'
proguardFile getDefaultProguardFile('proguard-android.txt')
debuggable false
jniDebugBuild false
signingConfig signingConfigs.release
zipAlign true
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
res.srcDirs = ['res']
}
trial {
assets.srcDirs = ['assets']
}
release {
assets.srcDirs = ['assets-release']
}
debug {
assets.srcDirs = ['assets']
}
androidTest.setRoot('src/test')
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/DEPENDENCIES'
}
lintOptions {
disable 'ValidFragment'
}
}
if (project.hasProperty('keyAlias')) {
android.signingConfigs.release.keyAlias = keyAlias
}
androidTest {
include '**/*Test.class'
}
apply plugin: 'idea'
idea {
module {
testOutputDir = file(rootProject.testOutputDir)
}
}
task copyDependencies(type: Copy) {
description = 'Copy dependencies to a libraries folder. Useful for Eclipse'
ext.libDir = new File(project.projectDir, '/libraries')
println libDir
ext.srclibDir = new File(project.projectDir, '/libs')
println srclibDir
println 'Adding dependencies from lib directory'
copy
{
from srclibDir
into libDir
}
println 'Adding dependencies from compile configuration'
for (file in configurations.compile) {
copy
{
from file
into libDir
}
}
println 'Adding dependencies from releaseCompile configuration'
for (file in configurations.releaseCompile) {
copy
{
from file
into libDir
}
}
println 'Adding dependencies from debugCompile configuration'
for (file in configurations.debugCompile) {
copy
{
from file
into libDir
}
}
println 'Adding dependencies from androidTestCompile configuration'
for (file in configurations.androidTestCompile) {
copy
{
from file
into libDir
}
}
}
Any ideas how to get Gradle to see the v13 library would be greatly appreciated.
Solved it.
The error was occurring inside the copyDependencies task at the start of the for loops. It seems that gradle won't use sdk/extras/m2repository to resolve dependancies. The following should have worked...
repositories {
def androidHome = System.getenv("ANDROID_HOME")
mavenCentral()
maven {
url "$androidHome/extras/android/m2repository/"
}
}
... but didn't. I think there is an issue with gradle not picking up ANDROID_HOME. In the end I copied the whole of android/m2repository into .m2/repository and then used mavenLocal()
in the parent build script instead of trying to access the sdk repository.
Another approach could have been to add exclude module: 'support-v13'
to the robolectric dependancy exclusions, but project needed it elsewhere.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With