Gradle 无法与“无法找到可选库”同步
Posted
技术标签:
【中文标题】Gradle 无法与“无法找到可选库”同步【英文标题】:Gradle failed to sync with 'unable to find optional library' 【发布时间】:2015-11-25 10:52:20 【问题描述】:我不得不重新安装我的系统,今天当我尝试与 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'
From the google docs:
要继续使用 Apache HTTP API,您必须首先声明 build.gradle 文件中的以下编译时依赖项:
android useLibrary 'org.apache.http.legacy'
我尝试了this thread 中提到的建议,但它们不起作用。与 android studio 1.5 和 2 预览版结果相同。
我该如何解决这个问题?
编辑:到目前为止我尝试过的事情:
将 gradle 类路径版本更改为 1.3.0、1.3.1、1.5.0。
将 compileSdkVersion
和 targetSdkVersion
更改为 22。还有 23.0.1、23.0.0、22.0.1 的 buildToolsVersion。
【问题讨论】:
buildToolsVersion '23.0.1'
使用这个,用于测试用例
@IntelliJAmiya 与该版本的buildToolsVersion
相同的错误。
唯一对我有用的解决方案来自这个线程Why Warning:Unable to find optional library: org.apache.http.legacy occurs
我收到了与org.apache.http.legacy
library 的双重/多重声明相同的错误消息。
【参考方案1】:
*** 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 目录并同步您的项目
【讨论】:
是的,然后它说要添加我在帖子中提到的编译时依赖项。 所以改用 HttpUrlConnection,Apache HTTP 客户端死了 将其添加到库中并同步您的项目...这可能会起作用 我会接受这一点,因为我设法使它工作的唯一方法是包含罐子。顺便说一句,我不得不删除违规行。谢谢约翰! 那么如果你将jar添加到“lib”文件夹,那么就不需要将“useLibrary”添加到gradle脚本中。【参考方案2】:经过大量工作后,此解决方案对我有用 . ** Studio\Android\sdk\platforms** 在此处删除您的 android-23 并再次从 sdk manager 更新 api 23。** . 它会解决你的问题。
【讨论】:
我想知道这不是公认的答案,它确实是正确的解决方案,我尝试了很多来找到解决这个问题的方法,我使用了互联网上写的所有方法,这是唯一的解决方案解决了我同样的问题【参考方案3】:就我而言,它不起作用,因为我在<sdk-path>\platforms\android-23\optional\
中缺少optional.json
,目录具有以下内容:
[
"name": "org.apache.http.legacy",
"jar": "org.apache.http.legacy.jar",
"manifest": false
]
创建具有上述内容的新 JSON 文件解决了我的问题。
【讨论】:
就我而言,我有包含所有内容的文件夹 android-23,文件夹 ...\optional\ 有 jar,但没有文件 'optional.json' 。正如@notsopopularguy 所说,我刚刚创建了它,并刷新了AS。工作完美。【参考方案4】:您需要在 Android Stuido 项目的 app/libs 文件夹中添加 org.apache.http.legacy.jar
jar 文件。
Jar Location - `<SDK 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 "<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'
【讨论】:
【参考方案5】:更新您的项目 gradle 文件以使用 gradle 版本 1.3.1。
classpath 'com.android.tools.build:gradle:1.3.1'
还可以尝试添加 codehuse 存储库。
repositories
mavenCentral()
maven
url 'http://repository.codehaus.org'
【讨论】:
已经试过了,不行。我还尝试了最新版本1.5.0
我相信它仍然无法正常工作。【参考方案6】:
在我的情况下,问题实际上发生了,因为我没有在该计算机上安装正确的 SDK。导航到.../Android/Sdk/platforms/android-23
我可以看到该文件夹是空的。通过 SDK 管理器添加 SDK 23 解决了问题并允许我进行编译。
您应该手动检查您安装的 SDK 版本是否与 build.gradle 文件中 compileSdkVersion
下指定的版本相同。
【讨论】:
【参考方案7】:为了节省时间,2 个解决方案对我来说是最好的和最有效的。
解决方案 1:
打开您的 android sdk 管理器并重新安装 API 23(删除并重新安装)。
解决方案 2:
下载这个包含optional.json
文件的文件
提取 optional.json 并将其移动到:
C:\Users\\AppData\Local\Android\sdk\platforms\android-23\可选
【讨论】:
【参考方案8】:如果上面的解决方案不起作用,那么试试这个方法
我最近遇到了这个问题,它是由路径长度限制引起的,我认为它最多 256 个字符。
重新定位您的项目,构建将成功。
【讨论】:
【参考方案9】:-
将“sdk\platforms\android-23\optional\org.apache.http.legacy.jar”复制到您的应用模块库目录,然后添加为库;
如果启用proguard,请编辑“proguard-rules.pro”保留相关类,否则会出现异常。
【讨论】:
以上是关于Gradle 无法与“无法找到可选库”同步的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 项目无法与 Gradle 文件同步
Android studio gradle 与 firebase 同步错误:响应 204:No Content 没有内容