Gradle无法与"无法找到可选库"同步

Dan*_*iel 17 android gradle android-studio build.gradle

我不得不重新安装我的系统,今天当我尝试与gradle同步时,我在Android Studio中收到此错误:

Warning: Unable to find optional library: org.apache.http.legacy
Run Code Online (Sandbox Code Playgroud)

我的项目是:

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

allprojects {
    repositories {
        mavenCentral()
    }
}
Run Code Online (Sandbox Code Playgroud)

我的模块是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'
}
Run Code Online (Sandbox Code Playgroud)

来自谷歌文档:

要继续使用Apache HTTP API,必须首先在build.gradle文件中声明以下编译时依赖项:

android {
    useLibrary 'org.apache.http.legacy'
}
Run Code Online (Sandbox Code Playgroud)

我试过在这个帖子中提到的建议,但它们不起作用.与android studio 1.5和2预览相同的结果.

我怎样才能解决这个问题?

编辑:到目前为止我尝试过的事情:

  1. 将gradle类路径版本更改为1.3.0,1.3.1,1.5.0.

  2. 更改compileSdkVersiontargetSdkVersion从23.0.1,23.0.0,22.0.1至22同样的buildToolsVersion.

joh*_*o07 14

顶级build.gradle - /build.gradle

buildscript {
...
dependencies {
    classpath 'com.android.tools.build:gradle:1.3.1'
}
}
Run Code Online (Sandbox Code Playgroud)

特定于模块的build.gradle - /app/build.gradle

android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
useLibrary 'org.apache.http.legacy'
...
}
Run Code Online (Sandbox Code Playgroud)

Android/Sdk/platforms/android-23/optional文件夹中的org.apache.http.legacy.jar添加到app/libs目录并同步项目

  • 我尝试过,但不幸的是仍然是同样的错误. (5认同)
  • 我会接受这个,因为我设法让它发挥作用的唯一方法是包括jar.顺便说一句,我不得不删除违规行.谢谢约翰! (2认同)
  • 然后,如果将jar添加到"lib"文件夹,则无需将"useLibrary"添加到gradle脚本. (2认同)

Nae*_*him 9

经过大量的工作,这个解决方案对我有用.**Studio\Android\sdk\platforms**这里再删除你的android-23和sdk manager更新api 23.**.它会解决你的问题.


not*_*guy 8

在我的情况下,它没有optional.json<sdk-path>\platforms\android-23\optional\,因为我在目录中缺少以下内容:

[
  {
    "name": "org.apache.http.legacy",
    "jar": "org.apache.http.legacy.jar",
    "manifest": false
  }
]
Run Code Online (Sandbox Code Playgroud)

使用上面的内容创建一个新的JSON文件解决了我的问题.