Android JNI实现计算器demo
2015-10-26 19:39
627 查看
通过JNI实现四则运算详细步骤
1.
创建android工程MathJni
2.声明jni类型的java类MathUtil
package com.mathjni;
/**
*
@author
luyg
*
@desc
实现四则运算的JNI方法
*/
public
classMathUtil {
static {
System.loadLibrary("MathJni");
}
public
native
int add(int
num1 , int num2);
public
native
int sub(int
num1 , int num2);
public
native
int squre(int
num1 , int num2);
public
native
int dived(int
num1 , int num2);
}
3.
通过命令编译生成JNI的.h文件
找到MathUtil.class文件所在的目录,通过javah命令生成
com_mathjni_MathUtil.h文件
[说明:先要进入到工程编译后的classes这级目录即可。
使用javah命令的时候,注意后边的JNI文件要带路径]
生成的.h文件在工程的classes这一级目录下:
4.
实现.h文件:
将生成的com_mathjni_MathUtil.h复制到项目的jni文件下,创建一个com_mathjni_MathUtil.cpp方法。实现里边的具体方法。[复杂的实现可以使用一些c的IDE工具实现]
#include
<jni.h>
#include
<stdio.h>
#include
<stdlib.h>
#include
"com_mathjni_MathUtil.h"
JNIEXPORT jint JNICALL
Java_com_mathjni_MathUtil_add(JNIEnv * een, jobject obj,jint num1 , jint num2)
{
returnnum1+num2;
}
JNIEXPORT jint JNICALL
Java_com_mathjni_MathUtil_sub(JNIEnv * een, jobject obj,jint num1 , jint num2)
{
return num1-num2;
}
JNIEXPORT jint JNICALL
Java_com_mathjni_MathUtil_squre(JNIEnv * een, jobject obj,jint num1 , jint num2)
{
return num1*num2;
}
JNIEXPORT jint JNICALL
Java_com_mathjni_MathUtil_dived(JNIEnv * een, jobject obj,jint num1 , jint num2)
{
return num1/num2;
}
5.
创建android.mk和application.mk文件。
1)android.mk文件:定义源文件及编译成动态链接库
2)application.mk文件:指定编译后so文件在libs下的目录
6.在Cgwin里使用ndk命令编译so文件
1)进入MathUtil项目所在的目录
2)使用ndk-build命令编译so
3) 在项目的libs生成了so文件
7.调用测试
把so文件复制到asset目录下。调用对应的方法测试
8.android里运行效果:
通过JNI实现四则运算详细步骤
1.
创建android工程MathJni
2.声明jni类型的java类MathUtil
package com.mathjni;
/**
*
@author
luyg
*
@desc
实现四则运算的JNI方法
*/
public
classMathUtil {
static {
System.loadLibrary("MathJni");
}
public
native
int add(int
num1 , int num2);
public
native
int sub(int
num1 , int num2);
public
native
int squre(int
num1 , int num2);
public
native
int dived(int
num1 , int num2);
}
3.
通过命令编译生成JNI的.h文件
找到MathUtil.class文件所在的目录,通过javah命令生成
com_mathjni_MathUtil.h文件
[说明:先要进入到工程编译后的classes这级目录即可。
使用javah命令的时候,注意后边的JNI文件要带路径]
生成的.h文件在工程的classes这一级目录下:
4.
实现.h文件:
将生成的com_mathjni_MathUtil.h复制到项目的jni文件下,创建一个com_mathjni_MathUtil.cpp方法。实现里边的具体方法。[复杂的实现可以使用一些c的IDE工具实现]
#include
<jni.h>
#include
<stdio.h>
#include
<stdlib.h>
#include
"com_mathjni_MathUtil.h"
JNIEXPORT jint JNICALL
Java_com_mathjni_MathUtil_add(JNIEnv * een, jobject obj,jint num1 , jint num2)
{
returnnum1+num2;
}
JNIEXPORT jint JNICALL
Java_com_mathjni_MathUtil_sub(JNIEnv * een, jobject obj,jint num1 , jint num2)
{
return num1-num2;
}
JNIEXPORT jint JNICALL
Java_com_mathjni_MathUtil_squre(JNIEnv * een, jobject obj,jint num1 , jint num2)
{
return num1*num2;
}
JNIEXPORT jint JNICALL
Java_com_mathjni_MathUtil_dived(JNIEnv * een, jobject obj,jint num1 , jint num2)
{
return num1/num2;
}
5.
创建android.mk和application.mk文件。
1)android.mk文件:定义源文件及编译成动态链接库
2)application.mk文件:指定编译后so文件在libs下的目录
6.在Cgwin里使用ndk命令编译so文件
1)进入MathUtil项目所在的目录
2)使用ndk-build命令编译so
3) 在项目的libs生成了so文件
7.调用测试
把so文件复制到asset目录下。调用对应的方法测试
8.android里运行效果:
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android NDK开发之:配置环境的详解
- Android开发的IDE、ADT、SDK、JDK、NDK等名词解释
- Android提高之使用NDK把彩图转换灰度图的方法
- Android使用Jni实现压力锅数据检测效果示例
- JAVA中JNI的简单使用分享
- c++ mk文件出错Jni调用产生java.lang.UnsatisfiedLinkError错误解决方法
- 探讨:如何在NDK中呼叫Java的class
- 安卓应用开发通过java调用c++ jni的图文使用方法
- Java调用c++库
- Android App 增量更新实例(Smart App Updates)
- 每周总结20130814——Android NDK环境的搭建和使用,YUV420SP格式图像的处理
- Android NDK开发简介
- Android NDK开发之Jni的数据类型
- Android NDK pthreads详细使用
- Android Studio中NDK开发傻瓜教程(CMake)
- JNI_Android项目中调用.so动态库实现详解
- javah命令的使用(新鲜小尝试)