JNI基础
来源:互联网 发布:网络用语吃辣条啥意思 编辑:程序博客网 时间:2024/05/22 15:05
交叉编译
- 在一个平台下,编译出另一个平台能够执行的二进制的代码
- 平台: Windows,Mac OS,Linux
- 处理器:x86,arm,mips
交叉编译的原理
- 源代码->编译->链接->可执行程序
- 模拟其他平台特性
交叉编译的工具链
- 多个工具的集合,一个工具使用完后接着调用下一个工具
常见工具
- NDK : Native Development kit : 开发jni必备,就是模拟其他平台特性来编译代码的工具
- CDT : C/C++ Development tools
- cygwin:一个模拟器,可以在Windows下运行Linux指令
NDK 目录结构
- docs:帮助文档
- build/tools:Linux的批处理文件
- platforms:对应平台C/C++的编译的头文件和类库
- prebuild:预编译
- samples:JNI样例
- source : NDK源码
- toolchains :工具链
- ndk-build.cmd : 编译打包C代码的一个指令
使用Jni
- 在项目根目录下创建jni文件夹
- 在jni文件夹中创建C文件
- 在Java代码中,创建一个本地方法helloFromC
public native String helloFromC();
- 在Jni中定义函数实现这个方法,函数名必须为:Java_<packageName><className><methodName>。其中两个参数为:(JNIEnv* env, jobject obj)
- 返回一个字符串,用C定义一个字符串
char* cstr = "hello from c";
把C的字符串转换成Java的字符串
jstring jstr = (*env)->NewStringUTF(env,cstr);return jstr;
- 在jni中创建Android.mk文件
- 在C文件中添加<jni.h>头文件
- 在jni文件下执行ndk-build指令
Jni常见错误
- find Library return null
- CPU平台不匹配
- 加载类库时,写错类库名
- 本地方法找不到
- 忘记加载类库
- Jni方法名和native方法名不同
0 0
- JNI基础
- JNI基础
- JNI基础
- JNI基础
- JNI基础
- JNI基础
- jni基础
- Android JNI基础:什么是JNI
- Android JNI基础篇
- Android Jni基础学习
- JNI基础ABC
- JNI 入门基础
- java基础---JNI原理
- Android JNI开发基础
- Android基础--jni开发
- 安卓JNI基础
- Android jni基础篇
- jni 基础入门
- Android的屏幕适配
- 项目实训:搭建一台LAMP (Linux+Apache+Mysql+Php)架构的web服务器
- javax.persistence.RollbackException: Transaction marked as rollbackOnly异常出现的原因以及避免方法
- LeetCode 35题解
- Docker入门实践(一) 理解Docker
- JNI基础
- spring中的设计模式(一)
- CDNJS
- Android学习之路———————WebView
- DedeCms功能强大界面漂亮音乐插件
- 今天最后的冲刺
- JAVA基础day03 循环 函数运用及函数的重载
- 程序员之路——一个老程序员对刚上大学的学弟学妹的忠告
- caffe CNN train_val.prototxt 神经网络参数配置说明