189 8069 5689

eclipseJNI项目迁移androidstudio相关问题-创新互联

最近在弄项目迁移,eclipse上的项目用到了JNI,需要转移到android studio,本来对JNI就不太懂,这下更麻烦了,遇到各种问题,过程痛苦不堪。不过终于做完了,把遇到问题记录下来,同时也能让遇到相关问题的人参考一下。

目前创新互联已为1000多家的企业提供了网站建设、域名、雅安服务器托管、网站托管、服务器托管、企业网站设计、网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。我们拥有完善的网络基础设施服务,能够为企业或个人提供域名注册雅安服务器托管、企业邮局、网站加速、数据库、云主机等网络基础服务。

首先,我是把eclipse上的文件复制粘贴过来的,其实并不麻烦,主要是JNI,直接粘贴过来是不行的,而且在as上重新生成so文件也是不现实的,因为我jni知识太差了,只能勉强还用eclipse上的so文件,这样的话方便的多,只要把eclipse中的libs文件夹下的,如,armeabi-v7a、armeabi文件夹复制下来,然后在as的main文件夹下创建jniLibs文件夹,然后粘贴进去,就可以了。理论是这样但实际问题才刚刚开始。

问题一:弄过来以后根本不能用,一直报错:java.lang.UnsatisfiedLinkError: No implementation found for XXXXXXXXXXXXX....,意思大概是找不到实现的那个JNI方法(native方法),检测后发现方法没问题,那肯定是so文件的问题。后来经常查阅资料,发现我新项目的包名改了,所以so文件需要重新生成。

解决办法:重新生成so文件,把jni文件中的JNIEXPORT jbyteArray JNICALL Java_包名_类名_方法名,改为你现在使用的。(注意:可能是1个或者多个地方要改  #include后面的别改,那是生成so文件时候需要引用的)

问题二:无法生成so文件,不会弄,研究一番后发现是依赖库指定的绝对路径有问题。

解决办法:就是修改android.mk那个文件,把里面依赖库中的那个 库名.mk文件的路径 改为正确路径。

问题三:还是无法生成so文件,后来发现不同的ndk版本也会受到影响,我用的是r13,后来下载了r10,能用了。

解决办法:尝试不同版本的ndk。

问题四:so文件生成了,测试可以用,但是后来发现,有时候还是会出现那个,java.lang.UnsatisfiedLinkError: No implementation found for XXXXXXXXXXXXX....

简直崩溃,后来找了好多资料。

解决办法,在使用so文件的那个Activity中,加个静态代码块儿 static{

    System.loadLibrary("so文件名称");  //例如:so文件是 libABC.so  那么用的时候就是ABC就行了

}

弄了好几天终于解决了,希望遇到相同问题的人可以参考下。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:eclipseJNI项目迁移androidstudio相关问题-创新互联
本文地址:http://jkwzsj.com/article/epehd.html

其他资讯