C'est la bibliothèque que j'utilise: https://github.com/clickntap/VimeoAndroid avec Apache http client bibliothèque android
Je suis en train d'utiliser la bibliothèque pour une application Android. Mon appareil de test est Kitkat (4.4.4).
Voilà ma config gradle:
compileSdkVersion 25
buildToolsVersion "25.0.3"
useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "my.app.package"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0.0-alpha"
}
Voilà comment j'ai ajouté la bibliothèque:
compile 'com.clickntap:vimeo:1.10'
Mais je reçois l'erreur suivante sur Vimeo.addVideo()
:
java.lang.NoClassDefFoundError: org.apache.http.impl.client.HttpClientBuilder
et avertissements:
WARNING: Dependency org.apache.httpcomponents:httpclient:4.3.6 is ignored for debug as it may be conflicting with the internal version provided by Android.
WARNING: Dependency org.json:json:20140107 is ignored for debug as it may be conflicting with the internal version provided by Android.
donc j'ai cherché un peu et trouvé que je pouvais faire quelque chose comme ceci:
compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
compile('com.clickntap:vimeo:1.10') {
exclude group: 'org.apache.httpcomponents'
exclude group: 'org.json'
}
Mais maintenant que je reçois cette erreur encore Vimeo.addVideo()
et ne peut pas trouver une solution:
java.lang.NoSuchMethodError: org.apache.http.entity.FileEntity.<init>
S'il vous plaît aider :(
Merci,
PS est ici la trace de la pile pour le 1er scénario:
Caused by: java.lang.NoClassDefFoundError: org.apache.http.impl.client.HttpClientBuilder
at com.clickntap.vimeo.Vimeo.apiRequest(Vimeo.java:218)
at com.clickntap.vimeo.Vimeo.beginUploadVideo(Vimeo.java:122)
at com.clickntap.vimeo.Vimeo.addVideo(Vimeo.java:138)
at my.app.package.VimeoActivity$6.subscribe(VimeoActivity.java:163) // my activity
at io.reactivex.internal.operators.single.SingleCreate.subscribeActual(SingleCreate.java:39)
at io.reactivex.Single.subscribe(Single.java:2702)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:451)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Et voici pour le 2ème scénario, où le httpclient-android
est inclus:
Caused by: java.lang.NoSuchMethodError: org.apache.http.entity.FileEntity.<init>
at com.clickntap.vimeo.Vimeo.apiRequest(Vimeo.java:247)
at com.clickntap.vimeo.Vimeo.uploadVideo(Vimeo.java:126)
at com.clickntap.vimeo.Vimeo.addVideo(Vimeo.java:140)
at my.app.package.VimeoActivity$6.subscribe(VimeoActivity.java:163) // my activity
at io.reactivex.internal.operators.single.SingleCreate.subscribeActual(SingleCreate.java:39)
at io.reactivex.Single.subscribe(Single.java:2702)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:451)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Vérifiez la section 'Apache HTTP Client Removal' sur cette page https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html. Je suppose que ça va aider cette situation. – shiftpsh
avez-vous le choix dans les bibliothèques? Je n'utiliserais pas cette librairie uniquement parce qu'elle ne me permet pas d'échanger le httpclient sous-jacent (ça vous oblige à utiliser apache ... d'où votre problème) – Jon
merci, j'ai fini par créer ma propre bibliothèque de téléchargement Android après le vimeo api spécifications – Mon