Daniel Daniel - 16 days ago 6
Android Question

Gradle failed to sync with 'unable to find optional library'

I had to reinstall my system and today I get this error in Android Studio when I try to sync with gradle:

Warning: Unable to find optional library: org.apache.http.legacy


My project gradle is:

buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
}
}

allprojects {
repositories {
mavenCentral()
}
}


And my module gradle:

apply plugin: 'android'

android {
useLibrary 'org.apache.http.legacy'

compileSdkVersion 23
buildToolsVersion '23.0.2'
defaultConfig {
minSdkVersion 16
targetSdkVersion 23
}
buildTypes {
release {
}
}
productFlavors {
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:appcompat-v7:23.1.1'
}


From the google docs:


To continue using the Apache HTTP APIs, you must first declare the
following compile-time dependency in your build.gradle file:

android {
useLibrary 'org.apache.http.legacy'
}



I tried the suggestions mention in this thread but they don't work. Same result with android studio 1.5 and 2 preview.

How can I fix this?

Edit: Things I've tried so far:


  1. Change gradle classpath versions to 1.3.0, 1.3.1, 1.5.0.

  2. Change the
    compileSdkVersion
    and
    targetSdkVersion
    to 22. Also the buildToolsVersion from 23.0.1, 23.0.0, 22.0.1.


Answer

Top level build.gradle - /build.gradle

buildscript {
...
dependencies {
    classpath 'com.android.tools.build:gradle:1.3.1'
}
}

Module specific build.gradle - /app/build.gradle

android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
useLibrary 'org.apache.http.legacy'
...
}

Add org.apache.http.legacy.jar which is in Android/Sdk/platforms/android-23/optional folder to app/libs directory and sync your project