2019-04-25 11:11:49 App Version: 1.0.7_7 OS Version: 9_28 Vendor: OPPO Model: PCAM00 CPU ABI: armeabi-v7a
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/params/BasicHttpParams; at
com.esri.core.internal.io.handler.c.<clinit>(SourceFile:218) at com.esri.core.internal.io.handler.c.a(SourceFile:189)
at com.esri.core.internal.RuntimeHelper.c(SourceFile:104) at
com.esri.core.internal.RuntimeHelper.initialize(SourceFile:51) at com.esri.android.map.Layer.<clinit>(SourceFile:61)
at com.nxztsckj.nkygq.activity.MapActivity.<init>(MapActivity.java:106) at java.lang.Class.newInstance(Native
Method) at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:69) at
android.support.v4.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:43) at
android.app.Instrumentation.newActivity(Instrumentation.java:1216) at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3039) at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3289) at
android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at
android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at
android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread
$H.handleMessage(ActivityThread.java:2012) at android.os.Handler.dispatchMessage(Handler.java:106) at
android.os.Looper.loop(Looper.java:227) at android.app.ActivityThread.main(ActivityThread.java:7182) at
java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run
(RuntimeInit.java:575) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:903) Caused by:
java.lang.ClassNotFoundException: Didn't find class "org.apache.http.params.BasicHttpParams" on path: DexPathList[[zip
file "/data/app/com.nxztsckj.nkygq-FS0hncwWgZWy7z6IreitxA==/base.apk"],nativeLibraryDirectories=
[/data/app/com.nxztsckj.nkygq-FS0hncwWgZWy7z6IreitxA==/lib/arm, /data/app/com.nxztsckj.nkygq-
FS0hncwWgZWy7z6IreitxA==/base.apk!/lib/armeabi-v7a, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass
(BaseDexClassLoader.java:134) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at
java.lang.ClassLoader.loadClass(ClassLoader.java:312) ... 22 more
以上就是报错信息,经过一番折腾,问题大致锁定为android9.0以上手机均会出现以上问题,问题大致就是找不到 Lorg/apache/http/params/BasicHttpParams这个东西,最后没办法开始度娘,但是答案均令人不满意,最后将将几片文章结合到一起解决了问题,大致的意思就是android9.0以上对httpclient这个做了限制,不让用这种方式去访问
首先需要适配9.0的http请求报错信息
1.xml中建一个文件,名字自己取,内容如下
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true" /> </network-security-config>
2.在AndroidManifest.xml
application中加上
android:networkSecurityConfig="@xml/network_security_config"
3.在
application包裹内加上
<uses-library android:name="org.apache.http.legacy" android:required="false" />
android { useLibrary 'org.apache.http.legacy' }
4.尽量不要用httpclient,多用HttpUrlConnection
5.最根本的做法是使用https进行接口访问,毕竟涉及数据的安全性。当然了,这需要服务器的支持。还有第三方sdk,也需要使用https。