Android studio 下JNI的使用

初次使用Android studio 开发JNI的项目,个人认为比Eclipse下的JNI简单的多,至少Android studio 下不用配置Android.mk(其实也需要Android.mk,只不过配置gradle时会自动生成罢了),不啰嗦了,看下面步骤:


1、创建IOCtrl.java , 里面声明Native方法,如下:
public class IOCtrl {
    public native int On();
    public native void Off();
}


2、生成.h文件 
使用终端(Terminal)工具
切换到Java目录下,cd app/src/main/java,
然后运行命令 javah com.demo.IOCtrl, 
在该目录下自动生成com_demo_IOCtrl.h 文件,生成代码如下:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_demo_IOCtrl */


#ifndef _Included_com_demo_IOCtrl
#define _Included_com_demo_IOCtrl
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_demo_IOCtrl
 * Method:    On
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_demo_IOCtrl_On(JNIEnv *, jobject);


/*
 * Class:     com_demo_IOCtrl
 * Method:    Off
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_demo_IOCtrl_Off(JNIEnv *, jobject);


#ifdef __cplusplus
}
#endif
#endif




3、创建jni目录,将生成的.h文件拷贝到该目录下,创建一个IOCtrl.c文件,实现头文件的方法。代码如下:


#include <jni.h>
jint JNICALL Java_com_demo_IOCtrl_On(JNIEnv * jenv, jobject obj)
{
     //将厂家提供的方法拷贝到这里
     return 0;
}


jint JNICALL Java_com_demo_IOCtrl_Off(JNIEnv * jenv, jobject obj)
{
    //将厂家提供的方法拷贝到这里

    return 0;
}



4、在调用的类中,添加
    static {
        System.loadLibrary("IOCtrl");
    }


    //打开IO口
    IOCtrl ioCtrl = new IOCtrl();
    ioCtrl.On();
    
    //关闭IO口
    IOCtrl ioCtrl = new IOCtrl();
    ioCtrl.Off();


5、打开build.gradle(Module中,不是在Project中)
  在defaultConfig标签下添加如下代码:
    ndk {
        moduleName "IOCtrl"
    }


6、打开gradle.properties,添加 android.useDeprecatedNdk=true




javah -encoding utf-8 com.xxx..MainActivity  


开始编译吧。这样就可以控制IO口了。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值