Android Pデバイスでアプリを実行すると、次のようなエラーが表示されます。
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
ライブラリをどのように使用すればよいですかorg.Apache.http.legacy
in Android P?
Android Pの動作の変更 を読み、いくつかのメッセージを受け取ります。
Apache HTTPクライアントの非推奨Android 6.0では、Apache HTTPクライアントのサポートを削除しました。Android Pで始まると、そのライブラリはbootclasspathから削除され、デフォルトでアプリで利用できます。
Apache HTTPクライアントを引き続き使用するには、Android P以上をターゲットとするアプリが、AndroidManifest.xmlに以下を追加する必要があります:
<uses-library Android:name = "org.Apache.http.legacy" Android:required = "false" />
注:APIレベルが24未満のデバイスではorg.Apache.http.legacyライブラリを使用できないため、Android:required = "false"属性は、SDKが23以下のアプリに必須です。 (これらのデバイスでは、Apache HTTPクラスがbootclasspathで利用可能です。)
Android 9.0 Pieで完全にorg.Apache.http.legacyを実行するには、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>
そして、AndroidManifest.xmlに2つのタグタグを追加します
Android:networkSecurityConfig = "@ xml/network_security_config"
Android:name = "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>
また、アプリのビルドグラドルにuseLibrary 'org.Apache.http.legacy'
を追加します
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'
}