2015-11-25 4 views
13

мне пришлось переустановить систему и сегодня я получаю эту ошибку в Android Studio при попытке синхронизации с Gradle:Gradle не удалось синхронизировать с «не удалось найти дополнительную библиотеку»

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' 
} 

From the google docs:

Чтобы продолжить использование API для Apache HTTP, вы должны сначала объявить следующее время компиляции зависимостей в файле build.gradle:

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

Я попытался предложения упомянуть в this thread, но они не работают. Тот же результат с предварительным просмотром студии android studio 1.5 и 2.

Как это исправить?

Edit: Вещи, которые я пробовал до сих пор:

  1. Изменение Gradle версии в пути к классам 1.3.0, 1.3.1, 1.5.0.

  2. Измените compileSdkVersion и targetSdkVersion на 22. Также buildToolsVersion от 23.0.1, 23.0.0, 22.0.1.

+0

'buildToolsVersion '23 .0.1'' использовать это, для проверочного случая –

+1

@IntelliJAmiya та же ошибка с этой версией 'buildToolsVersion'. – Daniel

+0

Единственное решение, которое сработало для меня, - это поток [Why Warning: Невозможно найти дополнительную библиотеку: org.apache.http.legacy происходит] (http://stackoverflow.com/questions/33898857/why-warningunable-to-find-optional-library-org-apache-http-legacy-occurs) –

ответ

11

Верхний уровень 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' 
... 
} 

Добавить org.apache.http. legacy.jar, который находится в Android/Sdk/platform/android-23/optional папка для app/libs каталог и синхронизация вашего проекта

+0

Да, а потом говорится, что нужно добавить зависимость от времени компиляции, о которой я упоминал в своем сообщении. – Daniel

+0

Итак, используйте HttpUrlConnection вместо этого, Apache HTTP-клиент мертв – johnrao07

+0

обновил ответ, это сделает работу – johnrao07

1

Обновите файл градиента проекта, чтобы использовать версию 1.3.1 градиента.

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

Попробуйте добавить код-репо.

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

Уже пробовал, не работает. Я также пробовал последнюю версию, которая является «1.5.0», я считаю, и она по-прежнему не работает. – Daniel

+1

Добавление кода-репо не помогло. – Daniel

0

если выше решение не работает, то попробуйте этот способ

я испытал эту проблему в последнее время, и это вызвано ограничением длины пути я думаю, максимум подмигнули 256 символов.

Перенесите свой проект, и сборка будет успешной.

1

В моем случае проблема возникла из-за того, что на этом компьютере не был установлен правильный SDK.Переход на .../Android/Sdk/platforms/android-23 Я видел, что папка пуста. Добавление SDK 23 с помощью менеджера SDK устранило проблему и разрешило мне скомпилировать.

Необходимо проверить, что у вас установлена ​​одна и та же версия SDK, указанная в compileSdkVersion в файле build.gradle.

8

В моем случае это не сработало, потому что мне не хватает optional.json в <sdk-path>\platforms\android-23\optional\, каталог со следующим содержанием:

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

Создание нового файла в формате JSON с с выше содержание решена проблема для меня.

+0

В моем случае у меня была папка android-23 со всем содержимым, а папка ... \ optional \ имела банку, но не файл «optional.json». Так как @notsopopularguy сказал, я только что создал его и обновил AS. Работал отлично. – Shudy

0
  1. Copy "SDK \ платформа \ андроид-23 \ опция \ org.apache.http.legacy.jar" в ваше приложении каталог модуля ЛИЭСА, а затем добавить в библиотеке;
  2. Если вы включите proguard, отредактируйте «proguard-rules.pro», чтобы сохранить связанные классы или исключение.
7

После много работы эти решения работают для меня . ** Студия \ Android \ sdk \ platform ** здесь удалите ваш android-23 и обновите api 23 менеджера sdk. ** . он решит вашу проблему.

+0

Интересно, как это не принятый ответ, это действительно правильное решение, я много пытался найти решение этой проблемы, и я использовал все методы, написанные в Интернете, это единственное решение, которое решило мою проблему – amal50

1

Чтобы сэкономить время, 2 решения являются лучшими и работают для меня.

Решение 1:

открыть Android Manager SDK и переустанавливать API 23 (удалить и установить заново).

Решение 2:

Скачать этот файл, который содержит файл optional.json экстракт и двигаться optional.json к:

C: \ Users \\ AppData \ Local \ Android \ SDK \ платформы \ андроид-23 \ опционального

+1

решение работало для меня. –

1

Вам нужно добавить файл org.apache.http.legacy.jar баночку в своем проект Android Stuido-х app/libs папка.

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

Чтобы сделать это, просто щелкните правой кнопкой мыши на проекте и выберите Show in Explorer затем перейти к ...\app\libs и вставьте выше банку файл и Синхронизация проекта с 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' 
    } 
} 
} 
Смежные вопросы