Android中NDK的使用

在Android中调用用c/c++库可以实现逼格更高的功能,比如加密等等,毕竟Android底层是用C/C++语言实现的,

整体目录结构如下


建一个Java 类NdkJNiUtils

内容如下

static {
    System.loadLibrary("YanboberJniLibName");
}


public native String getName();

建一个目录JNI Folder(在Android模式的目录下)


将项目切换到project模式

利用命令行工具将NdkJNiUtils.java文件编译成.h文件(本工程中生成com_example_dell_myapplication_NdkJniUtils.h)

编写c文件,新建一个c文件testjni.c

#include "com_example_dell_myapplication_NdkJniUtils.h"
JNIEXPORT jstring JNICALL Java_com_example_dell_myapplication_NdkJniUtils_getName
(JNIEnv *env, jobject obj){
 return (*env)->NewStringUTF(env,"This just a test for Android Studio NDK JNI developer!");
 }

可以发现里面的方法名是有一定规律的Java_(.h文件名)_(调用的方法名,也就是NdkJNiUtils.java里面的getName)


最后很重要的是需要在 gradle.properties中加上下面一句

android.useDeprecatedNdk=true
否则有些会报下面的错误

Error:Execution failed for task ':app:compileDebugNdk'.
> Error: NDK integration is deprecated in the current plugin.  Consider trying the new experimental plugin.  For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental.  Set "$USE_DEPRECATED_NDK=true" in gradle.properties to continue using the current NDK integration.


测试:


运行之后在log中过滤


这与我们写的c文件中一样


源代码地址:https://github.com/dengjiangdun/AndroidNDK

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值