Gradle failed to sync with 'unable to find opt

2019-01-11 23:20发布

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.

9条回答
我想做一个坏孩纸
2楼-- · 2019-01-11 23:32

You need to add org.apache.http.legacy.jar jar file in your Android Stuido project's app/libs folder.

  Jar Location - `<SDK LOCATION>\android-sdk\platforms\android-23\optional`  

To do this, just right click on your project and select Show in Explorer then go to ...\app\libs and paste above jar file and Sync your Project with Gradle File

Module:app

android {
compileSdkVersion 'Google Inc.:Google APIs:23'
buildToolsVersion "24.0.0"
defaultConfig {
    applicationId "<ur_app_id>"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}
查看更多
混吃等死
3楼-- · 2019-01-11 23:41

Update your project gradle file to use gradle version 1.3.1.

classpath 'com.android.tools.build:gradle:1.3.1'

Also try adding codehause repo.

repositories {
        mavenCentral()
        maven{
            url 'http://repository.codehaus.org'
        }
    }
查看更多
SAY GOODBYE
4楼-- · 2019-01-11 23:43

In my case the problem was actually occurring because I didn't have the correct SDK installed on that computer. Navigating to .../Android/Sdk/platforms/android-23 I could see that folder was empty. Adding SDK 23 via the SDK manager fixed the problem and allowed me to compile.

You should manually check that you have the same version of the SDK installed that is specified under compileSdkVersion in your build.gradle file.

查看更多
一夜七次
5楼-- · 2019-01-11 23:47

In my case, it didn't work because I was missing optional.json in <sdk-path>\platforms\android-23\optional\, directory with the following content:

[
  {
    "name": "org.apache.http.legacy",
    "jar": "org.apache.http.legacy.jar",
    "manifest": false
  }
]

Creating a new JSON file with with above content solved the problem for me.

查看更多
家丑人穷心不美
6楼-- · 2019-01-11 23:49
  1. Copy "sdk\platforms\android-23\optional\org.apache.http.legacy.jar" to your app module libs directory, then add as library;
  2. If you enable the proguard, please edit "proguard-rules.pro" to keep related classes or exception will occurred.
查看更多
你好瞎i
7楼-- · 2019-01-11 23:50

After a lot of working this solutions work for me . ** Studio\Android\sdk\platforms** here delete your android-23 and from sdk manager update api 23 again.** . it will solve your issue.

查看更多
登录 后发表回答