androidStudio jni 简单入门

androidStudio中实现jni的步骤:


1.新建一个android项目
2.给该项目配置好NDK的路径
3.新建一个类,在该类中声明一个native方法
4.在main目录下新建一个jni目录
5.打开studio的命令窗口,输入命令 cd app\src\main 进入到main目录下
6.输入命令 javah -d jni -classpath ..\..\build\intermediates\classes\debug [native 方法所在的类的全路径 如com.ljy.jni.JniUtils] 
7.输入完上诉命令后回车可生成.h的头文件
8.新建一个.c文件,在c文件中实现头文件中的方法
9.在当前module中的build.grade文件下defaultConfig节点追加下面代码
ndk{
moduleName "JniUtils" //指定生成的.so文件的文件名称
ldLibs "log"
abiFilters "armeabi", "armeabi-v7a", "x86" //指定支持的平台,如果不写的话就是全部
}

10.通过以上步骤,简单的jni测试项目就完成了,但是还需要在native所在的类中添加静态代码块{System.loadLibrary("[.so文件名称--也就是上面ndk中 moduleName的名字]")}
之后就可以用native所在的类调用native方法实现java和c交互了


11.运行项目后,进入build文件夹的intermediates-->ndk--->debug-->lib下面可以找到生成的.so文件,将该文件全部拷贝到项目的libs下面
12.进入项目的build.grade根目录下,增加一个节点,代码如下:
sourceSets.main {
        jniLibs.srcDir 'libs'
    }


13.这样以后就可以删除整个jni目录了^_^


14.12和13可以合并为在main下新建一个jniLibs文件夹,然后将所有的.so文件拷贝到该文件夹下面即可


我的项目层次结构:




源码:


public class JniUtils {
    public static native String getStringFromC();//声明native方法
    static {
        System.loadLibrary("JniUtils");
    }
}
 
在as的命令行输入:
F:\csdn_load\MyFirstJni>cd jni\src\main
 
执行上述命令后再输入:
F:\csdn_load\MyFirstJni\jni\src\main>
javah -d jni -classpath ..\..\build\intermediates\classes\debug com.ljy.jni.JniUtils
回车后可以看到jni目录下面多了一个com_ljy_jni_JniUtils.h的文件
 
新建.c文件,代码如下:
#include<stdio.h>
#include<stdlib.h>
#include "com_ljy_jni_JniUtils.h"
JNIEXPORT jstring JNICALL Java_com_ljy_jni_JniUtils_getStringFromC
        (JNIEnv *env, jclass jclass){
    return (*env)->NewStringUTF(env,"你好,我是菜鸟,请尽情吐槽!");
}

在MainActivity中输出:
Log.e(TAG,"String from C:"+JniUtils.getStringFromC());

运行项目:
得到的结果是:

 
就这样吧,简单吧,ps:太难的我也不会。。。。。。。。。。。。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值