您的位置:首页 > 移动开发 > Android开发

Android JNI学习之二 demo

2010-09-28 13:58 218 查看
Android JNI学习之二 demo

主要参考了文章http://www.cnblogs.com/wmj/archivse/2010/07/25/1784872.html

1. 建立android工程,两个类,一个是activity,一个包含声明native方法的类


package org.simon;

public class Nadd {

static {

System.loadLibrary("Nadd");

}

public native int nadd(int a, int b);

}


2. 用JDK自带的javah生成.h头文件。

具体办法参见前一篇文章

/article/6187716.html

3. 编辑.c文件实现native方法。

com_hello_jnitest_Nadd.c文件:
#include <stdlib.h>
#include "com_hello_jnitest_Nadd.h"
JNIEXPORT jint JNICALL Java_com_hello_jnitest_Nadd_nadd(JNIEnv * env, jobject c, jint a, jint b)
{
return (a+b);
}


4. 下载工具链,并安装

在这里
http://www.codesourcery.com/gnu_toolchains/arm/download.html
Windows: http://www.codesourcery.com/gnu_toolchains/arm/portal/package3400/public/arm-none-linux-gnueabi/arm-2008q3-41-arm-none-linux-gnueabi.exe

Linux: http://www.codesourcery.com/gnu_toolchains/arm/portal/package3399/public/arm-none-linux-gnueabi/arm-2008q3-41-arm-none-linux-gnueabi.bin

我当时用的是ubuntu(10.4)平台

所以是linux那个链接



5. 编译。c文件产生so文件

root@ubuntu:~/project/JNI/JNItest# /root/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc -I /home/tools/jdk1.6.0_21/include -I /home/tools/jdk1.6.0_21/include/linux -fpic -c org_simon_Nadd.c

root@ubuntu:~/project/JNI/JNItest# /root/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-ld -T /root/CodeSourcery/Sourcery_G++_Lite/arm-none-linux-gnueabi/lib/ldscripts/armelf_linux_eabi.xsc -share -o libNadd.so org_simon_Nadd.o



6. 将so文件push进模器

root@ubuntu:/home/tools/android-sdk-linux_x86-1.5_r1/tools# ./adb remount

remount succeeded

root@ubuntu:/home/tools/android-sdk-linux_x86-1.5_r1/tools# ./adb push /root/project/JNI/JNItest/libNadd.so /system/lib

28 KB/s (1969 bytes in 0.068s)



7. 运行工程,测试。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: