Android开发Bug记录及解决方法(三)———GIS相关

此博文长期更新,欢迎各位GIS开发大神在评论区补充!

  1. 出错sdk:Arcgis 10.2.9
    报错信息:Error:Execution failed for task ':app:processDebugManifest'
    出错原因:在对一个老项目进行更新时,在build.gradle中对旧版本esri的依赖直接进行了替换,原有依赖下载的文件未删除,两个插件的uses-features一致,导致在Manifest中重复进而引发此问题;
    解决方法:可以参考这篇博客,讲解的很完善,如果还不能解决,可以检查一下minSdkVersion,一些老项目的最低版本号可能满足不了一些新的插件的需求

  2. 出错sdk: superMap IMobile v8.1.1
    报错信息: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.wshunli.zzupipe-1/base.apk"
    出错原因:FlyManager对象不能在onCreate()方法上方中申明,即不能定义为整个类范围内可用的变量
    解决方法:需要使用的时候再具体方法中声明(如点击事件中);

  3. 出错sdk:Arcgis 10.2.9
    报错信息:java.lang.RuntimeException:Unable to start activity ComponentInfo{com.wshunli.zzupipe/com.wshunli.zzupipe.MainActivity}: java.lang.RuntimeException: Internal error exception - Unable to determine the geometry field name.
    出错原因:地理数据库(.geodatabase)中存在中文属性名,属性名不可以是中文,但属性值可以是中文;
    解决方法:属性名改为英文即可;

  4. 出错sdk:Arcgis 10.2.9
    报错信息:com.android.builder.merge.DuplicateRelativeFileException: More than one file was found with OS independent path 'com/esri/core/tasks/na/res/campus/pt-BR.json'
    出错原因:依赖重复了,可能是手动添加了一次,又用gradle添加了一次
    解决方案:方案一:找到重复的文件,就是引号中的内容,这里是’com/esri/core/tasks/na/res/campus/pt-BR.json’,进而去检查这个文件所对应的依赖是否重复,如果是则删除一个;
    方案二:直接在build.gradle(Module: app)里面,加上一句:
    引号中就是你报错的文件完整文件名

packagingOptions {
	exclude 'com/esri/core/tasks/na/res/campus/pt-BR.json'
}
  1. 出错sdk:Arcgis 10.2.9
    报错信息:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.esri.arcgis.android.samples.offlineeditor/com.esri.arcgis.android.samples.offlineeditor.OfflineEditorActivity}: android.view.InflateException: Binary XML file line #10: Error inflating class com.esri.android.map.MapView
    出错原因:迷之出错,项目之前运行完全正常,后来就来一次对架构进行升级后引发错误,恢复为升级前仍然报错,推断是因为Gradle的锅,对于外部依赖没有刷新;
    解决方案:如果是之前完全正常的项目突然报错,那么删除APP,重新部署,如果解决不了就Rebuild项目,再不行的话就移除依赖重新添加依赖,最后还解决不了就只能重建项目了;

  2. 出错sdk:SuperMap IMobile 8C for Android
    开发场景:当时使用SuperMap SDK进行三维开发,想通过重复定位获取用户实时位置进而实时同步用户周围三维场景实现一种增强现实的效果;
    异常描述:通过定位回调获取用户经纬坐标并以此创建Camera对象,但在测试过程中,出现屏幕中场景完全丢失,只剩黑白边界和疑似底图的部分再刷新;
    核心代码如下:

//定位回调,这里使用的是高德地图sdk
public AMapLocationListener mLocationListener = new AMapLocationListener() {
        @Override
        public void onLocationChanged(AMapLocation amapLocation) {
            if (!isOPen(getApplicationContext())) {
                Toast toast = Toast.makeText(getApplicationContext(), getString(R.string.hasNoGps), Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.CENTER, 0, 0);
                toast.show();
            } else {
                if (amapLocation != null) {
                    if (amapLocation.getErrorCode() == 0) {
                        //定位成功回调信息,设置相关消息
                        amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
                        double currentLat = amapLocation.getLatitude();//获取纬度
                        double currentLon = amapLocation.getLongitude();//获取经度
                        //场景跟随用户移动
                        Scene scene = mSceneControl.getScene();
                        Camera camera = new Camera(currentLon, currentLat, 0,
                                AltitudeMode.RELATIVE_TO_GROUND,0, scene.getCamera().getTilt());//相对地表模式
                        scene.setCamera(camera);
                        scene.refresh();
                        Log.i("currentLocation", "currentLat : " + currentLat + " currentLon : " + currentLon);
                        amapLocation.getAccuracy();//获取精度信息
                    } else {
                        //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
                        Log.e("AmapError", "location Error, ErrCode:"
                                + amapLocation.getErrorCode() + ", errInfo:"
                                + amapLocation.getErrorInfo());
                    }
                }
            }
        }
    };

异常分析:根据log信息得出用户经纬度和相机经纬度并无问题,在手动测试时发现移动端相机高度与桌面端卡顿加载情况不同,最终得出是相机高度设置问题,移动端相机高度设定不能过低,经多次测试得出(当然也和我手机性能较差有关)高度设定在20m以上时不会卡顿。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值