ArcGIS Runtime SDK for Android 10.2.9在线部署报错“Error inflating class com.esri.android.map.MapView“

按照一个大佬的博客(https://www.cnblogs.com/gis-luq/p/4760370.html)的方法进行在线环境部署,其中arcgis runtime for android的maven仓库改为:

 // Our internal artifactory repository
        maven {
            url 'https://esri.jfrog.io/artifactory/arcgis'
        }

添加ArcGIS Android的依赖为:

implementation 'com.esri.arcgis.android:arcgis-android:10.2.9'

其它的代码参考该博客。发现arcgis runtime for android10.2.9 SDK生成的apk在32位的android设备上能跑 ,在64位的android设备上一运行就闪退。

在androidstudio的终端(Terminal)中通过adb shell getprop ro.product.cpu.abi命令可以查看当前android调试设备的cpu。

例如:

Microsoft Windows [版本 10.0.18363.1500]
(c) 2019 Microsoft Corporation。保留所有权利。

D:\test1029>adb shell getprop ro.product.cpu.abi
arm64-v8a

报的错误信息如下:

错误一:

Cause:invalid type code:69

解决思路:

详情参考:http://note.youdao.com/noteshare?id=f26c528e2e617d4386d6192c06e298a7&sub=27744F307D2B4FAF9DAAF308C5C3DE1E

在app模块的build.gradle文件中添加ndk版本即可。例如:

ndkVersion "22.0.7026061"

错误二:

Caused by: android.view.InflateException: Binary XML file line #9 in cn.test.test1029:layout/activity_main: Binary XML file line #9 in cn.test.test1029:layout/activity_main: Error inflating class com.esri.android.map.MapView
     Caused by: android.view.InflateException: Binary XML file line #9 in cn.test.test1029:layout/activity_main: Error inflating class com.esri.android.map.MapView
     Caused by: java.lang.reflect.InvocationTargetException

.................................

“Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/cn.test.test1029-rRh6gKmLekUFqq9TqrVLmw==/base.apk"],nativeLibraryDirectories=[/data/app/cn.test.test1029-rRh6gKmLekUFqq9TqrVLmw==/lib/arm64, /system/lib64, /system/product/lib64, /hw_product/lib64, /system/product/lib64]]] couldn't find "libruntimecore_java.so"”

 解决思路:

这是由于我的android设备的CPU是64位导致的,通过在app模块下的build.gradle文件中添加下述abi过滤解决该报错。

关于Android so库兼容问题,可以参考文末的参考资料。

ndk {
            abiFilters 'armeabi-v7a'
        }

错误三:

但是这时运行app,它又报了另外一个错误,

Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.params.BasicHttpParams" on path: DexPathList[[zip file "/data/app/cn.test.test1029-OkEvlKQ2fophMYWZ1a__Pw==/base.apk"],nativeLibraryDirectories=[/data/app/cn.test.test1029-OkEvlKQ2fophMYWZ1a__Pw==/lib/arm, /data/app/cn.test.test1029-OkEvlKQ2fophMYWZ1a__Pw==/base.apk!/lib/armeabi-v7a, /system/lib, /hw_product/lib]]

解决思路:

在清单文件清单再加一句代码解决。

 <application
      android:usesCleartextTraffic="true">
   <uses-library
                android:name="org.apache.http.legacy"
                android:required="false" />
</application>

最终能够成功运行

最终的代码如下:

https://gitee.com/gislaozhang/test1029

 

参考资料:

https://blog.csdn.net/weixin_30466953/article/details/96171464    关于ArcGIS Android的在x86和x64系统中兼容性的问题与解决方案

https://blog.csdn.net/wang_yong_hui_1234/article/details/100603881   Android so库兼容问题

https://mp.weixin.qq.com/s/jnZpgaRFQT5ULk9tHWMAGg    为何大厂APP如微信、支付宝等只适配了armeabi-v7a/armeabi?

https://www.jianshu.com/p/342689756022     Android9.0 java.lang.ClassNotFoundException: Didn't find class "org.apache.http.params.BasicHttpP...

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值