Android JNI实现计算器demo



          通过JNI实现四则运算详细步骤

1. 创建android工程MathJni

 

2.声明jni类型的javaMathUtil

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方法。实现里边的具体方法。[复杂的实现可以使用一些cIDE工具实现]

 

#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.mkapplication.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里运行效果:

 

  

 


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值