Android JNI环境搭建(一)

Android JNI环境搭建(一)

    最近学了很多,一直想写一个关于NDK的博客。但发现无从入手,在这里
我首先感谢@change0写的AndroidNDK开发(一)入门,确定写作的思路,个人
觉得写得很好,值得大家去读读。

    接下来进入正题,我将分为如下方面,让大家从0基础搭建AndroidStudio
Ndk发开环境:

    1)认识ndk
    2)下载ndk
    3)配置ndk
    5)验证ndk环境安装

1.认识NDK
1)NDK是什么?

    NDK:(native development kit)是一系列工具。它帮助开发者快速开发
C/C++的动态库,并将自动so和java应用一起打包成apk.

    NDK集成了交叉编译,并提供相应的mk文件隔离CPU、平台、ABI等差异,开
发人员只需简单修改mk文件(指出"那些文件需要编译","编译特性要求"等),就
可以创建出动态库


2)为什么使用NDK?

    (1) 代码的保护。由于apk的java层代码很容易被反编译,而C/C++库反
    编译较大

    (2) 可以很方便地使用现存的开源库。eg:OpenCV

    (3) 提高代码的执行效率。将要求高性能的应用逻辑使用C开发,从而
    提高程序执行效率

    (4) 便于移植。用C/C++写得库可以方便在其他的嵌入式平台上再次使用

2.下载NDK
下载NDK这里主要介绍两个种方式

    1)网址下载: http://wear.techbrood.com/tools/sdk/ndk/
    不过通过方法一定修改local.properties文件,在里面添加:

    //后面改成自己下载后解压的路径名
    ndk.dir=I:\\Android\\sdk\\android-ndk-r13


    2)AndroidStudio下载:如下图所示

下载图示:

3.配置NDK
这里主要配置:javah-jni、ndk-build、ndk-build clean

主要通过:Settings--->Tools--->External Tools

1)Javah–jni配置如图所示:

2)ndk-build配置如图所示:

3)ndk-build clean 配置如图所示:

4.验证安装
 由于接下来的过程,可能有的人不太理解,或者不知到这一步怎么来的,我采取
尽可能采用图片展示,最后我将把这个demo上传到github上。为大家参考

1)新建工程时,选择支持C++,其他默认就行


2)在新建中app/build.gradle中加入:

 sourceSets.main.jni.srcDirs = []
//禁止自带的ndk功能
sourceSets.main.jniLibs.srcDirs = ['src/main/libs','src/main/jniLibs']
//重定向so目录为src/main/libs和src/main/jniLibs,原来为src/main/jniLibs

注意:这里这样做,是有原因的。还记得我们配置的ndk-build时:
NDK_LIBS_OUT=$ModuleFileDir$/src/main/jniLibs 这个
就是指定了,编译生成动态库.so文件存放的位置


3)在src/main下创建一个目录角jni,并在该目录下的添加
application.mk和android.mk文件

4)编译生成头文件

5)新建源文件

6)构建so动态库:此时选择Tools--->External Tools-->ndk-build
如果都正确的话,会在jniLibs目录下生成相对应的so库文件


7)调用本地方法


8)最后附上该demo的github地址:
https://github.com/whjlingtu/Android_NDK_Demo.git

图片显示

1.app/build.gradle中添加:

2.android.mk中内容:

3.application.mk中内容:

4.生成头文件:

5.新建源文件

6.生成so文件

7.调用本地方法

参考资料:

@change0 :借鉴写作思路

水之笔记:ndk理论知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值