NDK第一章--认识NDK及简单的输出hello world

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36946260/article/details/77735290

交叉编译

  • 在一个平台下,编译出另一个平台能够执行的二进制代码
  • 平台:windows,mac,os,linux
  • 处理器:x86,arm,mips

交叉编译的原理

  • 源代码–>编译–>连接–>可执行程序
  • 模拟其他的平台特性

交叉编译的工具链

  • 多个工具的集合,一个工具使用完后按着调用下一个工具

常见工具

  • NDK:native developement kit: 开发jni必备,就是模拟其他平台特性来编译代码的工具
  • CDT:c/c++ development tools:高亮显示c语音关键字
  • cygwin:一个模拟器,可以在windows下运行linux指令

NDK目录结构

  • docs:帮助文档
  • build/tools: 预编译使用的二进制可执行文件
  • sample:jni的使用例子
  • source: ndk的编码
  • toolchains:工具链
  • ndk—build.cmd:编译打包c代码的一个指令

使用jni的步骤:(以下为调用c方法输出hello world为例)

  1. 在项目中根目录下创建jni文件夹
  2. 在jni文件中创建一个c文件
  3. 在java代码中,创建一个本地方法helloFromC:
    public native String helloFromC();
  4. 在jni中定义函数实现这个方法,函数名必须为: “jstring Java_包名类名方法名(JNIEnv env,jobject obj)”
    jstring Java_com_wangzp_packet_MainActivity_helloFromC(JNIEnv env,jobject obj)
  5. 返回一个字符串,用c定义一个字符串:
    char* cstr = “hello form c”
  6. 把c的字符串转换成java字符串
    jstring jstr = (*env)->NewStringUTF(env,cstr)
  7. 在jni中创建Android.mk文件
  8. 在c文件中添加头文件“jni.h”头文件
  9. 在jni文件夹下执行ndk-build.cmd指令

猜你喜欢

转载自blog.csdn.net/qq_36946260/article/details/77735290