Android JNI实现计算器demo
来源:互联网 发布:神仙劫翅膀进阶数据 编辑:程序博客网 时间:2024/04/27 14:40
通过JNI实现四则运算详细步骤
1.创建android工程MathJni
2.声明jni类型的java类MathUtil
package com.mathjni;
/**
*@authorluyg
*@desc实现四则运算的JNI方法
*/
publicclassMathUtil {
static {
System.loadLibrary("MathJni");
}
publicnativeint add(int num1 , int num2);
publicnativeint sub(int num1 , int num2);
publicnativeint squre(int num1 , int num2);
publicnativeint 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 JNICALLJava_com_mathjni_MathUtil_add(JNIEnv * een, jobject obj,jint num1 , jint num2)
{
returnnum1+num2;
}
JNIEXPORT jint JNICALLJava_com_mathjni_MathUtil_sub(JNIEnv * een, jobject obj,jint num1 , jint num2)
{
return num1-num2;
}
JNIEXPORT jint JNICALLJava_com_mathjni_MathUtil_squre(JNIEnv * een, jobject obj,jint num1 , jint num2)
{
return num1*num2;
}
JNIEXPORT jint JNICALLJava_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里运行效果:
- Android JNI实现计算器demo
- Android 计算器 demo
- JNI简单实现demo
- android JNI demo
- Android JNI Demo
- android NDK/JNI demo
- 微信小程序--计算器demo实现
- Android Studio 2.2 JNI Demo
- android JNI 简单demo(2)之JNI demo 编写
- android:人品计算器—第一个demo
- 计算器DEMO
- Android实现计算器功能
- android实现计算器功能
- Android计算器实现
- Android-CheckBox 实现计算器
- Android实现简单计算器
- android简单计算器实现
- Android简单计算器实现
- Role保存Menu
- android部分目录分析
- oracle课堂收录-函数举例
- Hihocoder #1095 : HIHO Drinking Game (微软笔试题)
- ZwCreateFile打开文件时出现SHARE_VIOLATION的问题的一种情况
- Android JNI实现计算器demo
- iOS富文本(一)属性化字符串
- iOS target
- 音频编码之opus(一)
- java 快速排序
- UNIX Tutorial for Beginners
- 杨氏矩阵及其变形
- asp.net 中把txt文件导入 vs2010的sql2008数据库的一张表中【已测试,可以实现】
- NavigationItem的Title不居中,BackButton修改它得title