Lorsque j'exécute mon application sur Android P appareils, j'obtiens une erreur comme celle-ci:
Java.lang.RuntimeException: Unable to instantiate application com.le.Android.client.LeApplication: Java.lang.ClassNotFoundException: Didn't find class "com.le.Android.client.LeApplication" on path: DexPathList[[Zip file "/system/framework/org.Apache.http.legacy.boot.jar", Zip file "/data/app/com.le.Android.client-uvQkO641-__8Z_p2oT0t7g==/base.apk"],nativeLibraryDirectories=[/data/app/com.le.Android.client-uvQkO641-__8Z_p2oT0t7g==/lib/arm, /data/app/com.le.Android.client-uvQkO641-__8Z_p2oT0t7g==/base.apk!/lib/armeabi, /system/lib, /vendor/lib]]
at Android.app.LoadedApk.makeApplication(LoadedApk.Java:1009)
at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:5836)
at Android.app.ActivityThread.access$1000(ActivityThread.Java:198)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1637)
at Android.os.Handler.dispatchMessage(Handler.Java:106)
at Android.os.Looper.loop(Looper.Java:164)
at Android.app.ActivityThread.main(ActivityThread.Java:6649)
at Java.lang.reflect.Method.invoke(Native Method)
at com.Android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.Java:493)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:826)
Caused by: Java.lang.ClassNotFoundException: Didn't find class "com.le.Android.client.LeApplication" on path: DexPathList[[Zip file "/system/framework/org.Apache.http.legacy.boot.jar", Zip file "/data/app/com.le.Android.client-uvQkO641-__8Z_p2oT0t7g==/base.apk"],nativeLibraryDirectories=[/data/app/com.le.Android.client-uvQkO641-__8Z_p2oT0t7g==/lib/arm, /data/app/com.le.Android.client-uvQkO641-__8Z_p2oT0t7g==/base.apk!/lib/armeabi, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:125)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:379)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:312)
at Android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.Java:50)
at Android.app.Instrumentation.newApplication(Instrumentation.Java:1120)
at Android.app.LoadedApk.makeApplication(LoadedApk.Java:1001)
... 9 more
Comment dois-je utiliser la bibliothèque org.Apache.http.legacy
dans Android P?
J'ai lu le changements de comportement d'Android P , et je reçois des messages:
Obsolescence du client Apache HTTP Avec Android 6.0, nous avons supprimé la prise en charge du client Apache HTTP. À partir de Android P, cette bibliothèque est supprimée du bootclasspath et n'est pas disponible par défaut pour les applications.
Pour continuer à utiliser le client HTTP Apache, les applications qui ciblent Android P et au-dessus doivent ajouter ce qui suit à leur AndroidManifest.xml:
<uses-library Android: name = "org.Apache.http.legacy" Android: required = "false" />
Remarque: l'attribut Android: required = "false" est requis pour les applications qui ont un SDK minimum de 23 ou moins, car sur les appareils avec des niveaux d'API inférieurs à 24, la bibliothèque org.Apache.http.legacy n'est pas disponible. (Sur ces appareils, les classes Apache HTTP sont disponibles sur le bootclasspath.)
Pour exécuter parfaitement org.Apache.http.legacy dans Android 9.0 Pie, créez un fichier xml res/xml/network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
Et ajoutez 2 balises tag dans votre AndroidManifest.xml
Android: networkSecurityConfig = "@ xml/network_security_config"
Android: nom = "org.Apache.http.legacy"
<?xml version="1.0" encoding="utf-8"?>
<manifest......>
<application Android:networkSecurityConfig="@xml/network_security_config">
<activity..../>
......
......
<uses-library
Android:name="org.Apache.http.legacy"
Android:required="false"/>
</application>
Ajoutez également useLibrary 'org.Apache.http.legacy'
dans votre gradle de construction d'application
Android {
compileSdkVersion 28
defaultConfig {
applicationId "your application id"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
useLibrary 'org.Apache.http.legacy'
}