1.交叉编译 在Linux下的文件主要是.elf等格式 在window下执行的文件为.EXE JNI就是联系两者 谷歌提供了一个工具-NDK
2.步骤: 1. 在java中定义方法 public native String sayHello();
2. 在工程中创建jni 文件夹,并创建hello.c 文件 在其中编写C代码;
3. 先声明 #include<stdio.h>
#include<stdlib.h>
#include<jni.h>//jobject jobj 谁调用了这个方法 就这指的是谁 当前是MainActivity.this
jstring Java_com_andson_jnihellodemo_MainActivity_sayHello( JNIEnv* env,jobject jobj ){}
4. 创建并编写Android.mk (创建关联文件) (标明 C文件和库文件)文件在ADT文件中
5. 在工程文件下运行 cmd ndk -build(编译)
6. 在Java 中调用方法前 加载动态链接库 System.loadLibrary(" andson ");
注意的点:
3.只要修改C代码 都需要重新编译;
4.Java的方法中如果有下划线 在C代码中需要加 1 ;还可以使用javah 的方法生成头文件
5.支持什么运行系统 是看是否在编译的时候再Application.mk 文件中是否选择了相关系统
6. android tool 的 add native surpport 改文件成C