自2018年10月18日起,高德开发者论坛除车机板块外,其他板块将停止发帖与维护,如您有使用问题请 提交工单 联系我们,感谢您的理解。

查看: 17351|回复: 104

[应用案例] couldn't find "libgdinamapv4sdk752.so" 和 UnstatisFieldLinkedError

[复制链接]
最佳答案
334 

8

主题

2587

帖子

5772

积分

超级版主

Rank: 8Rank: 8

积分
5772
发表于 2016-3-30 16:29:47 | 显示全部楼层 |阅读模式
发表帖子
API/SDK版本号: 3.2.1
产品:
手机型号:
使用接口:
本帖最后由 郑翔宇er 于 2016-12-15 12:24 编辑

在升级到SDK3.x之后出现了,找不到so的问题, couldn'tfind "libgdinamapv4sdk752.so"

提供一个简单粗暴的方式查看,是不是有这个问题
找到出问题的APK.
1.如demo.apk
2.修改后缀为demo.zip
3.解压zip
4.查看libs目录
如果里面有处理armeabi以外的文件夹,那么小心了有可能有问题
比如下面这种 就是有问题的
DingTalk20161215121833.png



1. 工程中没有放置so文件
java.lang.UnsatisfiedLinkError:dalvik.system.PathClassLoader[DexPathList[[zip file"/data/app/com.example.projectforbbs-2/base.apk"],nativeLibraryDirectories=[/data/app/com.example.projectforbbs-2/lib/arm,/vendor/lib, /system/lib]]] couldn't find "libgdinamapv4sdk752.so"
                                                                              at java.lang.Runtime.loadLibrary(Runtime.java:367)
                                                                             atjava.lang.System.loadLibrary(System.java:1076)
                                                                              at com.autonavi.amap.mapcore.MapCore.<clinit>(MapCore.java:60)
                                                                              atcom.amap.api.mapcore.AMapDelegateImp.<init>(AMapDelegateImp.java:298)
                                                                              at com.amap.api.mapcore.j.<init>(AMapGLSurfaceView.java:26)
                                                                              at com.amap.api.mapcore.j.<init>(AMapGLSurfaceView.java:20)
                                                                              atcom.amap.api.mapcore.at.a(MapFragmentDelegateImp.java:129)
                                                                              at com.amap.api.maps.MapView.onCreate(MapView.java:121)
                                                                               atcom.example.projectforbbs.basic.BasicMapActivity.onCreate(BasicMapActivity.java:65)

很多同学看到这个错误的时候都比较惊讶,应该它报错是说MapView.onCreate有问题,自己的程序啥都没执行,就出问题,就想肯定是sdk有问题。然而并不是这样,仔细看一下错误,报的是
nativeLibraryDirectories=[/data/app/com.example.projectforbbs-2/lib/arm,/vendor/lib, /system/lib]]] couldn't find "libgdinamapv4sdk752.so
找不到so文件,正常so文件是放在libs下面的和jar包放在一起,看一下工程
1.png
发现问题了,根本没有so文件。
2.png
加上so文件就可以完美运行了。


2.so文件对应错误
下面也有一种情况会报上述问题,但是sojar包都是有的,看一下图
3.png

这也是一个很明显的错误,使用的是3.2.1jar对应so名称应该是gdinamapv4sdk752 .so截图里面是304so应该是2.7sdk对应的版本,所以才会包这个错。
PS:如果把so名称修改了,同样的也是会报找不到的


3.平台不一样
先来看一下3.2.1SDK情况
4.png
对比2.7.0看一下
5.png

3.2.12.7.0少两个文件夹,armeabi-v7ax86,这个是引起众多问题的罪魁祸首,不过不用担心,分分钟解决它。


x86平台举个例子,如果在x86的平台上,要运行sdk怎么办,3.2.1没有x86so,很多同学想了一个办法,
把armeabi文件夹下面的so文件复制到x86下面;
②把x86文件夹空着,什么也不放;
那么恭喜你,运行了之后会获得找不到so的错误;

解决办法是这样,只保留armeabi文件夹,其他的统统删掉,因为大多数x86平台的手机都会兼容armeabi的版本。
但是会发现就算这样做了在模拟器上面依旧装不上,那是因为模拟器没有兼容,但是他可以替换平台。如果是genymotion的话,需要安装一个转换为arm的插件。

PS:在以后的版本中其他平台各自的包也会逐步给出来的

4.Android Studio 上不行,eclipse可以
如果使用的是Android Studio,还有一个地方需要注意一下,ASAndroid Studio)和eclipse不一样,eclipseso文件放到libs目录下就可以了,但是AS的话,还需要自己处理一下。
app/build.gradle中进行如下配置,注意不是根目录的那个
6.png
sourceSets {
       main {
           jniLibs.srcDirs = ['libs']
       }
                  //…
}
这样配置之后,AS工程里面打开,就会看见一个jniLibs
7.png
如果不想配置,可以在app/src/main/这个目录下创建一个jniLibs文件夹把so文件放进去

5.明明只保留了armeabi文件夹还是报错这种情况也是有的,绝大多数原因都是打包脚本在作怪,特别是android studio很容易出问题
比如工程里面只保留了armeabi但是应用了一个第三方的AAR,它里面有其他平台,我也删不掉了咋办。打包的时候打出来自然就会有其他平台了。


这时候可以参考99楼的做法,在gradle中配置一下只打包armeabi的就可了


android{
            splits {
            abi {
                enable true
                reset()
                include 'armeabi'//只打包armeabi平台的,就算有其他文件夹也不管
//                include 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'x86', 'x86_64'
            }
        }


PS:如果是自己写得打包脚本,还望稍微检查一下 ~

PS:3.2.064位的手机上有问题,3.2.0.1便是修复这个问题发布的版本。

以上就是目前遇到的情况,欢迎补充!



libs.png
回复

使用道具 举报

最佳答案
0 

6

主题

37

帖子

138

积分

新手上路

Rank: 1

积分
138
发表于 2016-11-16 19:02:00 | 显示全部楼层
最新版的,全量下载的SDK和so库(只有arm),一运行就报错,能不能长点心,自己测一下再发布出来啊!
回复 支持 1 反对 1

使用道具 举报

最佳答案
0 

4

主题

13

帖子

92

积分

新手上路

Rank: 1

积分
92
发表于 2016-12-12 18:50:54 | 显示全部楼层
擒贼先擒王哥 发表于 2016-11-22 20:20
所有的库项目,等等,只保留arm的文件夹,就可以了。所有的手机都默认兼容arm模式。 ...

正解,在android app的build.gradle文件中配置只保留armeabi即可:
       android{
            splits {
            // Split apks on build target ABI, view all options for the splits here:
            // http://tools.android.com/tech-do ... er-guide/apk-splits
            abi {
                enable true
                reset()
                include 'armeabi'
//                include 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'x86', 'x86_64'
            }
        }
}
回复 支持 1 反对 0

使用道具 举报

最佳答案
0 

2

主题

8

帖子

41

积分

新手上路

Rank: 1

积分
41
发表于 2016-5-6 13:44:22 | 显示全部楼层
哎,同样的问题啊。不知道你们说的删掉x86文件夹是说这个文件夹根本不能存在还是怎么的?我的项目里面有集成其他的libs ,哪些libs 是有包含x86等,但是用的aar 文件,怎么删除那些x86 的东西。
回复 支持 0 反对 1

使用道具 举报

最佳答案
177 

0

主题

1169

帖子

2900

积分

超级版主

Rank: 8Rank: 8

积分
2900
发表于 2016-3-30 17:42:31 | 显示全部楼层
我说是谁写的高级贴,不仅图文并茂还有章节段落
回复 支持 反对

使用道具 举报

最佳答案
334 

8

主题

2587

帖子

5772

积分

超级版主

Rank: 8Rank: 8

积分
5772
 楼主| 发表于 2016-3-31 09:28:49 | 显示全部楼层
my/ 发表于 2016-3-30 17:42
我说是谁写的高级贴,不仅图文并茂还有章节段落

回复 支持 反对

使用道具 举报

最佳答案
0 

35

主题

126

帖子

499

积分

中级会员

Rank: 3Rank: 3

积分
499
发表于 2016-3-31 15:12:07 | 显示全部楼层
厉害!
回复

使用道具 举报

最佳答案
0 

1

主题

4

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2016-3-31 18:42:08 | 显示全部楼层
照这方法还是报错啊
回复 支持 反对

使用道具 举报

最佳答案
0 

1

主题

4

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2016-3-31 18:42:56 | 显示全部楼层
怎么解决
回复

使用道具 举报

最佳答案
334 

8

主题

2587

帖子

5772

积分

超级版主

Rank: 8Rank: 8

积分
5772
 楼主| 发表于 2016-3-31 19:45:53 | 显示全部楼层

是Android Studio还是eclipse啊 报的具体错误又是什么呢
回复 支持 反对

使用道具 举报

最佳答案
0 

5

主题

14

帖子

39

积分

新手上路

Rank: 1

积分
39
发表于 2016-4-1 09:30:46 | 显示全部楼层
没有解决
回复

使用道具 举报

最佳答案
334 

8

主题

2587

帖子

5772

积分

超级版主

Rank: 8Rank: 8

积分
5772
 楼主| 发表于 2016-4-1 10:15:29 | 显示全部楼层

是Android Studio还是eclipse啊 报的具体错误又是什么呢,有可能是我没有考虑到的情况
回复 支持 反对

使用道具 举报

最佳答案
0 

5

主题

14

帖子

39

积分

新手上路

Rank: 1

积分
39
发表于 2016-4-1 11:44:48 | 显示全部楼层
04-01 11:41:51.432: E/AndroidRuntime(6316): java.lang.UnsatisfiedLinkError: Couldn't load gdinamapv4sdk752ex from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.abb.android-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.abb.android-2, /vendor/lib, /system/lib]]]: findLibrary returned null
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|高德开发者论坛

Copyright ©2014 高德开发者论坛.All Rights Reserved |京ICP证070711号

意见反馈 常见问题 服务条款 联系我们
快速回复 返回顶部 返回列表