Android调用jni全过程示例

个人记录下调用jni全过程,省的自己忘记了。哎。
有些需要准备的地方,ndk环境,ndk源码一份,cygwin要装好,配好profile。java要配好环境变量。

1.首先新建一个工程,建个类对调用native的方法进行声明。
复制代码
package  com.stay.jni;

public   class  CallNative {
    
public  CallNative() {
    }

    
static  { // 导入的lib名去掉前面的lib
        System.loadLibrary( " skytech " );
    }

    
public   native   byte [] readCmd(String path);

    
public   native   int  writeCmd( byte [] cmd, String path);
}
复制代码

2.build下项目,打开cmd,cd到该工程bin目录下,
D:\>cd D:\android\rayn\TestJni\bin

D:\android\rayn\TestJni\bin>javah -jni com.stay.jni.CallNative

然后在bin目录下会出现一个.h文件这是声明的头文件

3.我们要的是里面声明的方法,把我们要写的c文件改成相同的方法名就可以了。(我做了一件非常挫的事,把实现写到.h文件里了,一直拿.h文件去编译。。= =)

4.在工程里建个jni目录,将改好的c文件和mk文件(随便copy一个,改下路径和lib名就好啦)copy进去

5.将整个工程拷贝到ndk的samples目录里(D:\android-ndk-r5\samples)

6.打开cygwin、配好环境。打开cygwin.bat。进行编译。万事ok。这样就可以成功调用jni了。

Android调用jni全过程示例_第1张图片


附另一个jni项目的中的本地方法实现代码示例:

4) 编写本地方法
实现和由javah命令生成的头文件里面声明的方法名相同的方法。
代码2:
1 #include
2 #include "HelloWorld.h"
3 #include

4 JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!\n");
return;
}


你可能感兴趣的:(Android调用jni全过程示例)