您的位置:首页 > 编程语言 > Java开发

AndroidStudio导入Eclipse生成的adt项目报unsatisfiedlinkerror错误

2015-10-24 16:16 459 查看
现在Android开发Google官方是推荐用AndroidStudio的,但是还是有很多项目是Eclipse下的项目,

在把Eclipse生成的项目挪到AndroidStudio里面来还是花了些功夫的。

幸运的是现在Eclipse可以导出gradle文件了,也就是说Eclipse可以一键转换成AndroidStudio项目。

不过这中间还是会有一些坑的。

我最近在做集成第三方sdk的时候,就遇到了问题,步骤如下:

首先第三方sdk是个Eclipse项目而非AndroidStudio项目,所以第一步导出gradle文件。

右击项目文件夹选择Export,选择Android下面的Generate Gradle build files



一直Next下去,选择要导出的项目,最后点击finish即可生成相应的gradle文件了。

由于这个sdk项目是作为lib module导入到AndroidStudio project里面的,

所以最好是把生成gradle文件之后的挪到AndroidStudio Project文件夹下。这样在gradle里面添加lib module比较方便,路径好写。

SMSSDK和app主module处在一个Project文件夹下。

接下来就要开始打开AndroidStudio导入sdk项目了,点击File-New Module选择Import Eclipse ADT Project,如图



最后确定SDK路径点击Finish就没问题了。

导入之后,gradle编译也没问题,可是一到运行的时候却发现报unsatisfiedlinkerror错误。

上网查了下,这个错误是编译jni的so库找不到导致的,SDK里面是有调用so库的,检查了下ndk路径也没有配错,so库文件也都没有缺失,app的build.gradle文件也添加了对sdk module的引用。



代码里面调用SDK里面的API也没有编译错误。后来我分析也许是SMSSDK的module里面的build.gradle文件里没有引用so文件。

看了SMSSDK的build.gradle改了一下



在sourceSets里面添加了jniLibs.srcDirs = ['libs']  明确标明了SMSSDK的jniLibs路径,接下来运行OK,问题解决。

总结,对于AndroidStudio里面的so库引用问题,如果出现unsatisfiedlinkerror错误,那么一般就是gradle的文件里面jniLibs的文件路径没有配置正确,配置正确的话,问题应该会迎刃而解的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: