Android Studio NDK,JNI编程入门

笔者因为项目需要,所以研究了一下NDK编程,主要是讲一些方法放到.so库中用来加载,增加代码的保密性,以下是整理的NDK入门笔记。



首先我们需要创建一个普通的项目



然后安装NDK

安装完成之后


接下来我们可以进行代码的编写了

首先在app下的java目录下建立java文件

然后添加native方法




建立JNI目录



然后在命令行下进入到java目录  输入: javah -d ../jni com.xxx.xxx.ndkdemo.JniUtils



现在  可以看到jni目录下生成了c 的头文件



然后在jni目录中建立.c或者.cpp文件用来编写C或者c++代码:





在新建的.c文件中添加如下代码:




在app的build.gradle中的defaultConfig标签下添加

ndk{
            moduleName "helloworld"//生成的so名字
            ldLibs "log", "z", "m"
            abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。
        }



进行编译之后



可以看到build/intermediates/ndk/debug/lib下已经生成了3种架构下的.so库:



接下来开始调用.so库中的方法,在MainActivity中添加如下代码:




现在终于可以直接运行在手机上了  少年心好累...



接下来我们准备实现.so的常规调用了,毕竟一个项目中.so文件一般是放在libs目录下的嘛

先把jni目录删除,然后将三个架构的.so库剪切到libs中,并且将编译生成的ndk目录删除,用于确定真实调用,然后在build.gradle

中的android标签下配置jni引用路径:




再次运行至手机...




OK  ,关于NDK编程以及引用.so库入门就告一段落了,希望能对你产生帮助。

笔者注:.so文件可以看作是一个加密的jar包,所以要调用它必须要有相同包名,也就是要与.h和.c中声明的方法的路径一致才能调用,所以常规的方法是将调用代码打包成jar文件,然后外部调用打包后的jar中的方法来间接调用.so中的方法。在此就不给出实例了,欢迎读者联系笔者反馈问题以及技术讨论。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值