Comment utiliser l'héritage du client HTTP Apache sur Android Guimauve?

Fond

Sur Android Guimauve, Google a complètement supprimé le soutien de client HTTP Apache (lien ici) parce qu'il n'ont pas de bonnes performances par rapport aux autres alternatives.

Cela pourrait aussi être la cause pour de nombreuses applications de s'écraser sur Android Guimauve.

Le problème

Google vous permet toujours d'utiliser cette API, pas comme un construit dans un, en ajoutant cette ligne à la gradle fichier:

useLibrary 'org.apache.http.legacy'

Donc, c'est ce que j'ai fait:

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

Et:

android {
    compileSdkVersion 'android-MNC'
    buildToolsVersion "23.0.0 rc3"
    useLibrary 'org.apache.http.legacy'

    defaultConfig {
        applicationId "com.example.user.androidmtest"
        minSdkVersion 'MNC'
        targetSdkVersion 'MNC'
        versionCode 1
        versionName "1.0"
    }

Quand je l'ai essayé, il a compilé correctement (pas d'erreurs montré, et j'ai pu courir la preuve-de-concept de l'app, comme il n'a pas de code spécial), mais quand j'ai essayé d'utiliser certains des classes que je connais qui font partie de l'ancienne API (comme "HttpClient" de la classe), je vois qu'il ne m'autorise pas à le faire.

Je sais qu'il n'est pas recommandé d'utiliser cette solution, mais nous devons l'application est prête à y travailler au moins temporairement, jusqu'à ce que nous travailler à 100% sur toutes les choses qui devraient changer pour Android de la Guimauve, et nous ne voulons pas de surprises dans la forme de la plante.

Voici une capture d'écran:

Comment utiliser l'héritage du client HTTP Apache sur Android Guimauve?

La question

Pourquoi faut-il se produire? Ai-je l'utiliser correctement?


EDIT: indiqué sur ce problème ici:

https://code.google.com/p/android/issues/detail?id=181474

  • par compilé beaux-tu veux dire gradle synchronisés amende ou êtes-vous d'obtenir une ClassNotFoundException au moment de l'exécution?
  • Pouvez-vous poster quelques capture d'écran d'android studioat
  • Je veux dire que, jusqu'à la fois que j'ai écrit classes qui sont censés être pris en charge, il peut être compilé&exécuter correctement (car rien n'est à utiliser). Il ne peut pas être tout ClassNotFoundException, parce que je ne les utilise pas encore. Seulement quand j'essaie d'utiliser des classes qui sont censés être là, je ne peux pas. Il ne m'autorise pas à le faire et il n'offre pas me les importations nécessaires.
  • Capture d'écran de ce à quoi exactement ? En essayant de mettre de l'importation par la force, il n'ont pas été reconnus. et à l'aide d'une classe qui existe là-bas aussi. De toute façon, j'ai mis à jour la question afin de montrer la situation actuelle, ce qui est tout à fait minime...
  • Vérifiez si vous utilisez bien la dernière version bêta de gradle. dépendances { classpath 'com.android.outils.construire:gradle:1.3.0' }, ce Qui semble comme si quelque chose est manquant après la version (c'est à dire 'bêta' ou quelque chose). À l'aide de la dernière version bêta résolu pour moi
  • Êtes-vous sûr que c'est pas définitif? La récente mise à jour a dit que c'est disponible: tools.android.com/recent/... "Inclure Andoid Gradle 1.3.0 en mode hors connexion Gradle référentiel de plug-in" . N'est-ce pas dire que c'est définitif?
  • Hmm. Il dit que la version Release candidate 4, donc je suppose que ce n'est pas un GA charge encore. Mais ce que j'ai utilisé pour obtenir ce travail a été com.android.outils.construire:gradle:1.3.0-beta2. S'il vous plaît poster une mise à jour si vous comprendre ce qui n'allait pas, nous allons recourir à beaucoup de laid hacks tout le temps
  • Essayé le "1.3.0-beta2" . Toujours les mêmes résultats.
  • Oh. La poisse. Chose étrange s'est passé tout à l'heure, quand j'ai changé le kit de développement pour 'M' et créer des outils pour la dernière, Gradle version de la déclaration de revenus à la stable..
  • Ok, voici ce que j'ai (configuration complète) - pastebin.com/Hx456HFh Il travail maintenant, pour moi, espérons que cela aide quelqu'un
  • à l'aide de votre code, il est dit que le plugin est trop vieux, donc je l'ai changé pour 1.3.0 . De toute façon, ça ne fonctionne pas, parce que dès que j'écris "HttpClient s;" dans le code, il ne m'autorise pas à en importer.
  • coPLaS répondre a fonctionné pour moi, donc il doit être marqué comme réponse correcte
  • Désolé. Je suis nouvelle dans le développement mobile. Je suis à l'aide de HTTPClient dans mon application. Ça veut dire que même si je garde mon targetsdkversion 22 et exécuter l'application sur l'Android à la guimauve, il va se planter ?
  • Vous pouvez essayer l'émulateur... je pense qu'il va se planter.
  • Pour clarifier ce que useLibrary est en train de faire: Apache HttpClient est caché dans android-23, mais n'est pas réellement supprimé. Sinon, beaucoup d'applications qui ciblent les plates-formes antérieures se bloquer sur M. l'Ajout de useLibrary sert à ajouter ces classes héritées à la botte du classpath, essentiellement de révéler ces classes au moment de la compilation (et au moment de l'exécution). WenChao de commentaire ci-dessous montre que les classes sont ajoutées à la botte classpath.