Android Gradle未能与';找不到可选库';
我不得不重新安装我的系统,今天我在Android Studio中尝试与gradle同步时出现以下错误:Android Gradle未能与';找不到可选库';,android,android-studio,gradle,build.gradle,Android,Android Studio,Gradle,Build.gradle,我不得不重新安装我的系统,今天我在Android Studio中尝试与gradle同步时出现以下错误: Warning: Unable to find optional library: org.apache.http.legacy 我的gradle项目是: buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.b
Warning: Unable to find optional library: org.apache.http.legacy
我的gradle项目是:
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'
}
:
要继续使用ApacheHTTPAPI,必须首先声明
build.gradle文件中的以下编译时依赖项:
android {
useLibrary 'org.apache.http.legacy'
}
我试过书中提到的建议,但都不管用。android studio 1.5和2预览版的结果相同
我怎样才能解决这个问题
编辑:到目前为止我尝试过的事情:
compileSdkVersion
和targetSdkVersion
更改为22。还有23.0.1、23.0.0、22.0.1版本的BuildTools顶级build.gradle-/build.gradle
buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
}
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
useLibrary 'org.apache.http.legacy'
...
}
特定于模块的build.gradle-/app/build.gradle
buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
}
}
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目录,并同步您的项目更新您的项目gradle文件以使用gradle版本1.3.1
classpath 'com.android.tools.build:gradle:1.3.1'
还可以尝试添加codehause回购
repositories {
mavenCentral()
maven{
url 'http://repository.codehaus.org'
}
}
如果上述解决方案不起作用,请尝试这种方法 我最近遇到了这个问题,它是由路径长度限制引起的,我认为它最多256个字符
重新定位您的项目,构建就会成功。在我的情况下,问题实际上发生了,因为我没有在该计算机上安装正确的SDK。导航到
../Android/Sdk/platforms/Android-23
我可以看到文件夹是空的。通过SDK管理器添加SDK 23修复了这个问题,并允许我编译
您应该手动检查是否安装了与build.gradle文件中的
compileSdkVersion
下指定的相同版本的SDK。在我的情况下,它不起作用,因为我在\platforms\android-23\optional\
目录中缺少optional.json
,目录包含以下内容:
[
{
"name": "org.apache.http.legacy",
"jar": "org.apache.http.legacy.jar",
"manifest": false
}
]
用上述内容创建一个新的JSON文件解决了我的问题
经过大量的工作,这个解决方案对我来说很有效 . **Studio\Android\sdk\Platform**在这里删除您的Android-23,并从sdk管理器中再次更新api 23。** .
这将解决您的问题。为了节省时间,两种解决方案对我来说是最好的 解决方案1: 打开android sdk管理器并重新安装API 23(删除并重新安装) 解决方案2: 下载此文件,其中包含
optional.json
文件
提取optional.json并将其移动到:
C:\Users\\AppData\Local\Android\sdk\platforms\Android-23\optional
您需要在Android Stuido项目的app/libs文件夹中添加
org.apache.http.legacy.jar
jar文件
Jar Location - `<SDK LOCATION>\android-sdk\platforms\android-23\optional`
是的,然后它说要添加一个编译时依赖项,我在我的帖子中提到过。所以改用HttpUrlConnection,Apache HTTP客户端是死的,在libs中添加它并同步您的项目……这可能会起作用,我会接受,因为我唯一能使它起作用的方法就是包含jar。顺便说一句,我不得不删除这条令人不快的线。谢谢你,约翰!然后,如果您将jar添加到“lib”文件夹中,则无需将“useLibrary”添加到gradle脚本中。已经尝试过,但不起作用。我还尝试了最新版本,我相信它是
1.5.0
,但仍然不起作用。buildToolsVersion'23.0.1'
使用这个,用于测试case@IntelliJAmiya这个版本的buildToolsVersion
也有同样的错误。唯一对我有效的解决方案是从这个线程中,我得到了相同的错误消息,并对org.apache.http.legacy
库进行了双重/多重声明。我想知道这怎么不是公认的答案,它确实是正确的解决方案,我尝试了很多方法来解决这个问题,我使用了互联网上写的所有方法,这是唯一解决我同样问题的方法在我的例子中,我有一个包含所有内容的android-23文件夹,文件夹…\optional\有jar,但没有“optional.json”文件。正如@notsopopularguy所说的,我刚刚创建了它,并刷新了它。工作得很好。