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