ndk错误总结
2016-03-31 17:07
323 查看
1. ndk Unresolved inclusion: <jni.h>或者Type 'jint' could not be resolved
选中工程,右键->Properties,点击C/C++ General展开,点击 Path and Symbols,在右边Includes下,点击Add,把NDK文件夹下的jni头文件和相应的C++头文件添加进来。一定要填写完整的路径,比如我添加的两个路径分别是:
E:\AndroidNDK\android-ndk-r10c\toolchains\mipsel-linux-android-4.8\prebuilt\windows-x86_64\lib\gcc\mipsel-linux-android\4.8\include
E:\AndroidNDK\android-ndk-r10c\platforms\android-19\arch-arm\usr\include
点击ok,解决
2.make: *** No rule to make target `c:/user/android/jni/hello.c', neede
d by`c:/user/android/obj/local/armeabi/hello/hello.o'. Stop.
错误原因:工程目录改变或者修改了文件名,类名,导致重新编译的时候文件找不到
解决方法:找到相应的工程目录下,删除obj文件夹,然后重新编译。
3.ndk-build
编译多个CPU架构的动态链接库
如果有或创建Application.mk文件,则在该文件添加如下内容:
如果没有或不想使用Application.mk文件,则在ndk-build参数中添加
然后直接运行:
这个是生成所有的库,如果你单纯的只需要某一个,例如x86,可以直接执行ndk-build APP_ABI="x86"即可
4. java.lang.UnsatisfiedLinkError: Native method not found
错误1:方法写的有错误,Java_com_example_helloword2_MainActivity_add严格按照所要求的检查是否方法或参数有错误
或者大小写有误或者Java中没有写加载类的方法System.loadLibrary("hello");
错误2:添加extern "C" {方法体}
错误3:生成的so库不对应,比如你的机器cpu是armeabi-v7a,你生成的是armeabi,所以出错,解决办法,见上面第3条.
5. java.lang.UnsatisfiedLinkError: couldn't load hello:**findLibrary returned null **
错误1:生成的so库不对应,比如你的机器cpu是armeabi-v7a,你生成的是armeabi,所以出错,解决办法,见上面第3条.
错误2:System.loadLibrary("hello"); hello写错,库名写的不对
6.生成本地方法cd到src目录下,执行命令javah -jni com.example.aa.MainActivity(主类名)
7.编译生成so库,cd到项目目录下,ndk-build,如果ndk环境变量没有配置成功,可直接输入你下载的ndk全路径,如android-ndk-r9d/ndk-build
8.*** multiple target patterns. Stop
解决:将obj/目录删除,再重新编译即可
选中工程,右键->Properties,点击C/C++ General展开,点击 Path and Symbols,在右边Includes下,点击Add,把NDK文件夹下的jni头文件和相应的C++头文件添加进来。一定要填写完整的路径,比如我添加的两个路径分别是:
E:\AndroidNDK\android-ndk-r10c\toolchains\mipsel-linux-android-4.8\prebuilt\windows-x86_64\lib\gcc\mipsel-linux-android\4.8\include
E:\AndroidNDK\android-ndk-r10c\platforms\android-19\arch-arm\usr\include
点击ok,解决
2.make: *** No rule to make target `c:/user/android/jni/hello.c', neede
d by`c:/user/android/obj/local/armeabi/hello/hello.o'. Stop.
错误原因:工程目录改变或者修改了文件名,类名,导致重新编译的时候文件找不到
解决方法:找到相应的工程目录下,删除obj文件夹,然后重新编译。
3.ndk-build
编译多个CPU架构的动态链接库
如果有或创建Application.mk文件,则在该文件添加如下内容:
APP_ABI := armeabi armeabi-v7a x86
如果没有或不想使用Application.mk文件,则在ndk-build参数中添加
APP_ABI="armeabi armeabi-v7a x86 mips"
然后直接运行:
ndk-build APP_ABI="armeabi armeabi-v7a x86 mips"
这个是生成所有的库,如果你单纯的只需要某一个,例如x86,可以直接执行ndk-build APP_ABI="x86"即可
4. java.lang.UnsatisfiedLinkError: Native method not found
错误1:方法写的有错误,Java_com_example_helloword2_MainActivity_add严格按照所要求的检查是否方法或参数有错误
或者大小写有误或者Java中没有写加载类的方法System.loadLibrary("hello");
错误2:添加extern "C" {方法体}
错误3:生成的so库不对应,比如你的机器cpu是armeabi-v7a,你生成的是armeabi,所以出错,解决办法,见上面第3条.
5. java.lang.UnsatisfiedLinkError: couldn't load hello:**findLibrary returned null **
错误1:生成的so库不对应,比如你的机器cpu是armeabi-v7a,你生成的是armeabi,所以出错,解决办法,见上面第3条.
错误2:System.loadLibrary("hello"); hello写错,库名写的不对
6.生成本地方法cd到src目录下,执行命令javah -jni com.example.aa.MainActivity(主类名)
7.编译生成so库,cd到项目目录下,ndk-build,如果ndk环境变量没有配置成功,可直接输入你下载的ndk全路径,如android-ndk-r9d/ndk-build
8.*** multiple target patterns. Stop
解决:将obj/目录删除,再重新编译即可
相关文章推荐
- java 接口,抽象类 继承 归纳
- C++第二次作业
- *** Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:], /BuildRoot/Library/C
- SharePoint2013 IT Professional - Site Column& List Column
- 线程、进程和协程
- SpringMVC文件上传错误
- iscroll.js
- 向anna学习系统结构和测试流程
- 关于运算符重载的两种方式的优缺点比较
- AsyncTask异步任务解析
- 生成bundle,并部署到karaf下运行
- spark与Hadoop区别
- android 解析pdf 方案 使用mupdf
- Creating real time web GIS applications - part2
- 字串转16进制、转base64在速度对比。。。
- tmp
- Hbase 命令:快照操作
- 15个数排序
- 作业呀
- 【疯狂造轮子-iOS】JSON转Model系列之一