Apache HTTP client avec sdk 23 et proguard

Maintenant, de nombreuses bibliothèques requièrent comstackSdkVersion 23. Mais cette version ne contient pas apache et certaines anciennes bibliothèques utilisaient http http. Pour utiliser apache avec 23 j’ai trouvé la solution, où dit à propos d’append org.apache.http.legacy à grudle.
useLibrary 'org.apache.http.legacy'

ce travail. Mais pas avec proguard. J’utilise proguard pour minify apk size, je n’utilise pas l’obscurcissement, seulement minifyEnabled true dans ‘proguard-rules.txt’ Je n’ai qu’une chaîne:
-dontobfuscate
Et quand je construis apk AndroidStudio affiche des erreurs, car certaines bibliothèques utilisaient Apache. J’ai essayé d’append des classes de maintien à proguard mais cela ne fonctionne pas. chaque fois que j’ai des erreurs sur Apache.

 -keep class org.apache.http.** { *; } -dontwarn org.apache.http.** -keep class android.net.http.** { *; } -dontwarn android.net.http.** -keep class android.support.v7.** { *; } -keep class android.support.v4.** { *; } 

Remarque: lorsque proguard est désactivé ( minifyEnabled défini sur false ), alors apk build et succès professionnel. Ceci est une erreur de la console de studio Android:

 :app:proguardRelease Warning: com.vk.sdk.api.httpClient.VKHttpOperation: can't find referenced method 'org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest)' in program class com.vk.sdk.api.httpClient.VKHttpClient Warning: org.acra.ErrorReporter: can't find referenced method 'void setLatestEventInfo(android.content.Context,java.lang.CharSequence,java.lang.CharSequence,android.app.PendingIntent)' in library class android.app.Notification 

et plus

 Warning: com.mopub.mobileads.VastVideoViewController: can't find referenced class org.apache.http.client.methods.HttpUriRequest Warning: com.mopub.mobileads.VastVideoViewController: can't find referenced class org.apache.http.client.methods.HttpGet Warning: com.mopub.mobileads.factories.HttpClientFactory: can't find referenced class org.apache.http.params.BasicHttpParams Warning: com.mopub.mobileads.factories.HttpClientFactory: can't find referenced class org.apache.http.params.BasicHttpParams Warning: com.mopub.mobileads.factories.HttpClientFactory: can't find referenced class org.apache.http.impl.client.DefaultHttpClient Warning: com.mopub.mobileads.factories.HttpClientFactory: can't find referenced class org.apache.http.impl.client.DefaultHttpClient Warning: com.mopub.mobileads.factories.HttpClientFactory: can't find referenced class org.apache.http.impl.client.DefaultHttpClient Warning: com.mopub.mobileads.factories.HttpClientFactory: can't find referenced class org.apache.http.impl.client.DefaultHttpClient Warning: com.mopub.mobileads.factories.HttpClientFactory: can't find referenced class org.apache.http.impl.client.DefaultHttpClient Warning: com.mopub.mobileads.util.HttpClients: can't find referenced class org.apache.http.client.HttpClient Warning: com.mopub.mobileads.util.HttpClients: can't find referenced class org.apache.http.client.HttpClient Warning: com.mopub.mobileads.util.HttpClients$1: can't find referenced class org.apache.http.client.HttpClient Warning: com.mopub.mobileads.util.HttpClients$1: can't find referenced class org.apache.http.client.HttpClient Warning: com.mopub.mobileads.util.HttpClients$1: can't find referenced class org.apache.http.conn.ClientConnectionManager Warning: com.mopub.mobileads.util.HttpClients$1: can't find referenced class org.apache.http.conn.ClientConnectionManager Warning: com.mopub.mobileads.util.HttpClients$1: can't find referenced class org.apache.http.client.HttpClient Warning: com.mopub.mobileads.util.HttpClients$1: can't find referenced class org.apache.http.client.HttpClient Warning: com.mopub.mobileads.util.vast.VastXmlManagerAggregator: can't find referenced class android.net.http.AndroidHttpClient 

Je viens d’avoir le même problème, et résolu par:

  • mettre à jour les outils de compilation du SDK Android à 23.0. 1

  • mettre à jour MoPub à 3.13.0

Vous avez un problème similaire avec google-play-services_lib . Résolu dans Eclipse en ajoutant cette ligne à proguard-project.txt:

 -libraryjars "\platforms\android-23\optional\org.apache.http.legacy.jar" 

Même problème avec la méthode setLatestEventInfo , elle a été déconseillée et supprimée au niveau 23. Cette fois, il n’y a plus de setLatestEventInfo hérité. Encore une fois, une autre ligne:

 -libraryjars "\platforms\android-22\android.jar" 

Avec cette référence, la première pour Apache est probablement superflue – je n’ai plus besoin que du premier, depuis la mise à jour de google-play-services_lib vers la version 8.2.98 (bien que récente, toujours des références apache).