eclipse JNI项目迁移android studio相关问题
2017-06-29 09:55
316 查看
最近在弄项目迁移,eclipse上的项目用到了JNI,需要转移到android studio,本来对JNI就不太懂,这下更麻烦了,遇到各种问题,过程痛苦不堪。不过终于做完了,把遇到问题记录下来,同时也能让遇到相关问题的人参考一下。
首先,我是把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就行了
}
弄了好几天终于解决了,希望遇到相同问题的人可以参考下。
本文出自 “移动平台开发” 博客,请务必保留此出处http://liuxudong1001.blog.51cto.com/10877072/1885151
首先,我是把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就行了
}
弄了好几天终于解决了,希望遇到相同问题的人可以参考下。
本文出自 “移动平台开发” 博客,请务必保留此出处http://liuxudong1001.blog.51cto.com/10877072/1885151
相关文章推荐
- FBReader导入eclipse 和Androidstudio相关问题
- Android studio项目迁移问题及解决方案
- Android eclipse项目迁移至Android Studio所遇问题记录
- eclipse项目转android studio的问题
- Android ADT 中的项目迁移到 Android Studio出现编码乱码问题
- 将Eclipse项目导入Android Studio出现中文乱码的问题
- 带jni和其他项目依赖的eclipse项目转换成android studio项目
- Eclipse项目迁移到Studio中存在的问题
- Android —— Studio导入Eclipse项目方法以及出现的问题
- Android Studio导入Eclipse的Android项目问题的小结
- Eclipse项目转Android studio项目遇到的问题
- eclipse项目转Androidstudio项目过程中遇到的一系列问题及解决办法
- android项目从Eclipse迁移到Android studio中常见问题解决方法
- 从eclipse到Android studio/迁移eclipse的Android项目到Android studio平台的注意事项
- eclipse安卓项目转成android studio的项目不能添加远程依赖包的问题
- svn中的eclipse项目迁移到android studio中 以及android sdk更新方法
- Android项目从Eclipse迁移到Android Studio的过程和一些问题汇总
- eclipse中项目导入到android studio出现的Manifest merger failed问题
- 将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_C/C++
- 使用eclipse+git插件开发android项目时遇到的问题及解决