Gradle无法与“无法find可选库”同步

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

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

我的项目是:

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

我的模块是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' } 

来自谷歌文档 :

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

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

我尝试了在这个post中提到的建议,但它们不起作用。 与android studio 1.5和2预览相同的结果。

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

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

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

  2. compileSdkVersiontargetSdkVersion更改为22.还有来自23.0.1,23.0.0,22.0.1的buildToolsVersion。

Related of "Gradle无法与“无法find可选库”同步"

顶级build.gradle – /build.gradle

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

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

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

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

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

在我的情况下,它没有用,因为我在\platforms\android-23\optional\ ,目录中缺少optional.json ,其中包含以下内容:

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

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

您需要在Android Stuido项目的app / libs文件夹中添加org.apache.http.legacy.jar jar文件。

  Jar Location - `\android-sdk\platforms\android-23\optional` 

要执行此操作,只需右键单击您的项目并选择Show in Explorer然后转到...\app\libs并粘贴到jar文件上方并使用Gradle文件同步项目

Module:app

 android { compileSdkVersion 'Google Inc.:Google APIs:23' buildToolsVersion "24.0.0" defaultConfig { applicationId "" 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' } } } 

更新项目gradle文件以使用gradle版本1.3.1。

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

还尝试添加codehause repo。

 repositories { mavenCentral() maven{ url 'http://repository.codehaus.org' } } 

在我的情况下,问题实际上是因为我没有在该计算机上安装正确的SDK。 导航到.../Android/Sdk/platforms/android-23我可以看到该文件夹​​是空的。 通过SDK管理器添加SDK 23解决了问题并允许我编译。

您应该手动检查您是否在build.gradle文件中的compileSdkVersion下安装了相同版本的SDK。

为了节省时间2解决方案是最好的,适合我。

解决方案1:

打开你的android sdk管理器并重新安装API 23(删除并重新安装)。

解决方案2:

下载包含optional.json文件extract的文件,并将optional.json移动到:

C:\用户\\应用程序数据\本地\ Android的\ SDK \平台\ Android的23 \可选

如果以上解决方案不起作用,那么试试这种方式

我最近遇到了这个问题,它是由路径长度限制引起的,我认为它最多是256个字符。

重新定位您的项目,构建将成功。

  1. 将“ sdk \ platforms \ android-23 \ optional \ org.apache.http.legacy.jar ”复制到您的app模块libs目录,然后添加为库;
  2. 如果您启用了proguard,请编辑“ proguard-rules.pro ”以保持相关的类或exception。