首页 / 浏览问题 / 移动GIS / 问题详情
安卓端初始化崩溃
21EXP 2021年08月27日

使用的超图版本为10.1.2

安卓targetSdkVersion 30

调用Environment.initialization(this);崩溃,报错信息为: 

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tcch.sm3d/com.tcch.sm3d.MainActivity}: java.lang.NullPointerException: Attempt to get length of null array

相关截图如下:

image


image

1个回答

您好,麻烦确认以下几点:
1.是否设置ndk,在build.grandle文件中设置ndk为so文件的文件夹名称.如“:

ndk {
    abiFilters "armeabi-v7a"
}
2.是否设置libs,如:
sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}
3.build.grandle文件中设置的targetSDKVersion版本是多少,建议设置为28及以下
9,232EXP 2021年08月27日

我把你们的示例项目Mobile GIS项目修改了一下,打开内置的二维地图数据可以正常运行。

然后我另写了加载一个三维场景的activity,运行报错,崩溃信息还是提示崩溃位置为

Environment.initialization(this);这一行

其他信息为:

2021-08-27 16:00:21.611 8296-8296/? W/System.err: java.io.FileNotFoundException: /sys/class/net/eth0/address: open failed: EACCES (Permission denied)
2021-08-27 16:00:21.613 8296-8296/? W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:492)
2021-08-27 16:00:21.613 8296-8296/? W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:160)
2021-08-27 16:00:21.613 8296-8296/? W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:115)
2021-08-27 16:00:21.613 8296-8296/? W/System.err:     at java.io.FileReader.<init>(FileReader.java:58)
2021-08-27 16:00:21.613 8296-8296/? W/System.err:     at com.supermap.data.Environment.loadFileAsString(Environment.java:939)
2021-08-27 16:00:21.613 8296-8296/? W/System.err:     at com.supermap.data.Environment.getMacAddress(Environment.java:928)
2021-08-27 16:00:21.613 8296-8296/? W/System.err:     at com.supermap.data.Environment.checkDevice_New(Environment.java:793)
2021-08-27 16:00:21.613 8296-8296/? W/System.err:     at com.supermap.data.Environment.initialization(Environment.java:621)
2021-08-27 16:00:21.613 8296-8296/? W/System.err:     at com.supermap.imobile.myapplication.SceneActivity.onCreate(SceneActivity.java:20)

看报错信息是因为没有权限导致的,看下程序是否有手机的内存读写权限
肯定有权限,二维地图都可以加载出来
你可以在三维场景的活动里面获取一一下手机的文件夹看是否能正常获取
现在报的错变了:

2021-08-27 16:41:45.313 27078-27078/com.supermap.imobile.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.supermap.imobile.myapplication, PID: 27078
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.supermap.imobile.myapplication/com.supermap.imobile.myapplication.SceneActivity}: java.lang.IllegalStateException: getScene()
场景获取失败,你看下你的scenecontrol在布局中是否有写,并且在活动初始化成功了。你可以看下我们三维的示范程序
这当然写了,这是安卓基本知识。报的错又不是空指针
您那边在加载场景的时候是在场景控件初始化成功的时候加载的数据吗?可以试试不加载数据会不会报错
试了一下,地球出来了。那这是什么问题?为什么不加在数据就没事呢

因为场景没有初始化完成你就加载数据了,就会报错。你可以在初始化完成的回调里面去加载,sceneControlInitedComplete(SceneControlInitedCallBackListenner listenner)

嗯,知道了。谢谢
...