2015-10-05 4 views
2

У меня есть вспомогательный класс, который запрашивает функции, и один из методов, который я использую, следующий. неorg.apache.http.NameValuePair больше не доступен с compileSdkVersion 23

private String buildQueryString(String url, List<NameValuePair> params) throws IOException { 
    StringBuilder sb = new StringBuilder(); 
    if (params == null) return url; 

    for (NameValuePair param : params) { 
     sb.append(urlEncode(param.getName())); 
     sb.append("="); 
     sb.append(urlEncode(param.getValue())); 
     sb.append("&"); 
    } 

    return url + "?" + sb.substring(0, sb.length() - 1); 
} 

Если я обновлю свою Gradle к compileSdkVersion 23, импорт org.apache.http.NameValuePair больше не существует. Мне было любопытно узнать, что такое замена? Заранее спасибо!

EDIT -posting gradle- Кроме того, я использую Gradle-2,4

buildscript { 
    repositories { 
     maven { url 'https://maven.fabric.io/public' } 
     maven { url 'https://zendesk.artifactoryonline.com/zendesk/repo' } 
    } 

    dependencies { 
     classpath 'io.fabric.tools:gradle:1.+' 
    } 
} 
apply plugin: 'com.android.application' 
apply plugin: 'io.fabric' 

repositories { 
    maven { url 'https://maven.fabric.io/public' } 
} 

android { 
    signingConfigs { 
     debug { 
      storeFile file('keystore/debug/debug.keystore') 
     } 
    } 

    compileSdkVersion 23 
    buildToolsVersion "21.1.2" 
    useLibrary 'org.apache.http.legacy' 

    // jenkins setup 
    def versionPropsFile = file('version.properties') 
    def code = 1; 
    if (versionPropsFile.canRead() && versionPropsFile.exists()) { 
     def Properties versionProps = new Properties() 

     versionProps.load(new FileInputStream(versionPropsFile)) 
     List<String> runTasks = gradle.startParameter.getTaskNames(); 
     def value = 0 
     for (String item : runTasks) { 
      if (item.contains("assembleRelease")) { 
       value = 1; 
      } 
     } 
     code = Integer.parseInt(versionProps['VERSION_CODE']).intValue() + value 
     versionProps['VERSION_CODE'] = code.toString() 
     versionProps.store(versionPropsFile.newWriter(), null) 
    } else { 
     throw new GradleException("Could not read version.properties!") 
    } 

    // construct version name 
    def versionMajor = 2 
    def versionMinor = 3 
    def versionPatch = 9 

    defaultConfig { 
     minSdkVersion 16 
     targetSdkVersion 22 
     versionName "${versionMajor}.${versionMinor}.${versionPatch}" 
     versionCode code 
     signingConfig signingConfigs.debug 

     // enabling multidex support 
     multiDexEnabled true 
    } 

    buildTypes { 
     stage { 
       <content removed> 
     } 
     debug { 
       <content removed> 
     } 
     release { 
       <content removed> 
     } 
    } 
    packagingOptions { 
     exclude 'META-INF/LICENSE.txt' 
    } 


dependencies { 
    <bunch of dependencies> 
    compile 'com.android.support:support-v4:23.0.1' 
} 

ответ

6

Добавить это на build.gradle

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

org.apache библиотека устарела из апи 22, и это было устранены на API 23.

изменения buildToolsVersion '21.1.2' с buildToolsVersion '23.0.1'

Или вы должны добавить это в ваших зависимости:.

compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.cli‌​ent:4.1.2' 

Будьте осторожны, чтобы использовать Gradle 1.3 +

+0

добавив, что в Android вызывает ошибку, «Gradle метод DSL, не найдено:„useLibrary()“. – portfoliobuilder

+0

напишите свой полный файл градиента, пожалуйста, –

+0

Вам нужно изменить buildToolsVersion «21.1.2» с buildToolsVersion '23 .0.1 ' –

3

подробной информации по этому вопросу, есть два способа исправить это для тех, которые сталкиваются с тем же конфликт. Как отметил @Michele, можно использовать useLibrary 'org.apache.http.legacy', но вы также должны помнить об обновлении градиента.

Для API 23:

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

Официальный док :
https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client

Последние новости Android Gradle плагин изменений: http://tools.android.com/tech-docs/new-build-system

Второй способ решения этого является добавление следующих зависимостей

dependencies { 
    compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' 
} 
Смежные вопросы