27
2017
09

NDK开发笔记—ndk环境安装及其搭建

ndk环境安装及其搭建

软件下载

链接:http://pan.baidu.com/s/1cev9FK

密码:7yab

当然其他版本的也可以,建议不要用最新的

注意:执行Javah的时候生成头文件是对Java文件所生成的.class进行处理的命令

可以简单的使用gradle配置

使用gradle,你再也不用手动添加Android.mk和Application.mk文件,一切在build.gradle文件中就都能搞定,在这里我们直接贴出build.gradle中ndk相关的配置:

遇到问题:

#### eclipse adt 选择ndk目录时不识别,出现“Not a valid NDK directory”

  • 解决方案

    在ndk的主目录下创建一个ndk-build空文件,关闭对话框再次尝试

相关的一些配置:

需要在
gradle.properties文件中
添加

android.useDeprecatedNdk = true

androidStudio配置

AndroidStudio没有像Eclipse那样的一键add native support,相对来说比较麻烦

下面就介绍在AndroidStudio中如何实现类似于Eclipse的add native support功能(也就是进行NDK开发的步骤)。

1、新建一个Android工程,这一步就不多说了;
2、在AndroidStudio中配置NDK路径,方法是:
  • (1)先下载NDK并安装(这句基本是废话);

    • (2)点菜单栏的File->ProjectStructure…->在打开的窗口中左侧选中SDKLocation->在右侧Android NDK Location中填入NDK目录所在路径,如下图所示:

image
image

3、编译生成.class文件,方法是:

点菜单栏的Build->Make Project,如下图所示

image

这时,在工程的app/build/intermediates下就会生成classes文件夹,打开classes目录下的debug目录就会看到以你的包名命名的各级文件夹,最里边文件夹下有你的Java类对应的.class文件;

4、确定你要引用本地方法的类:

比如你想在MainActivity中引用本地方法,那么你先用

来声明本地代码库,然后定义几个natvie方法,比如

public native String getStringFromNative();
static {

 System.loadLibrary("myNativeLib");

}

做完这些工作就可以进行下一步了。

5、使用javah命令行生成jni目录及对应的头文件:

如图所示,打开命令行编辑工具后,cd到工程的src/main/java目录,输入

javah -d ../jni 你的包名.引用本地方法的类的名称

image

 javah -d ../jni com.example.lixinyu.myapplication2.MainActivity

我直接用了MainActivity类做为调用JNI的Java类,你也可以写一个自己的类,之后就等吧,构建完成后就会在工程的src/main目录下生成一个jni目录,下边还包含.h头文件,如下图所示:
image

6、配置build.gradle文件

这里的build.gradle是指app模块下的build.gradle,不是整个工程的build.gradle文件。在模块的build.gradle的defaultConfig下加入以下idk配置:

ndk {

      moduleName"myNativeLib"

      ldLibs "log", "z", "m"

      abiFilters "armeabi", "armeabi-v7a", "x86"

}
7、配置local.properties文件

打开工程目录下的local.properties,感觉这一步是自动配置的,或者说在你一开始在AndroidStudio中指定NDK目录时已经自动生成了。我的AndroidStudio在打开local.properties已经有了

ndk.dir=/Develop/Android/android-ndk-r10e

这一行,所以就不用配了;

8、配置gradle.properties

打开工程目录下的gradle.properties文件(注意不是build.gradle,而是gradle.properties),在文件的最后一行加入

android.useDeprecatedNdk=true
9、写一个.c文件测试一下是否运行正常
  • 点菜单栏的Build->Make Project编译一下工程
  • 看看在工程目录下app/build/intermediates/ndk/debug/lib目录下是否成功生成了相应的.so文件
  • 如果以上配置都正确的话这里是会生成对应平台的.so文件的
如果对ndk不了的同学们可以一下参考博客:

NDK探究之旅:

NDK和JNI初探及其联系和区别

NDK探究之旅《一》——对jni和NDK的认识

NDK探究之旅《二》——C语言的基本认识

NDK探究之旅《三》—C语言的输入输出函数

NDK探究之旅《四》——指针的强化理解

NDK探究之旅《五》——指针和数组之间的关系

NDK探究之旅《六》—函数的指针、结构体、枚举、宏定义

NDK探究之旅《七》—函数指针,宏定义的优缺点及应用场景

NDK探究之旅《八》——jni的开发流程规范及环境配置

NDK探究之旅《九》——jni开发中常见的错误及其注意事项

NDK探究之旅《十》——ndk项目实战之Androidstudio开发经验总结

NDK探究之旅《十一》—C代码调用Java代码之项目实战

NDK项目实战—高仿360手机助手之卸载监听

关于更多:

2017上半年技术文章集合—184篇文章分类汇总

相信自己,没有做不到的,只有想不到的

如果你觉得此文对您有所帮助, 欢迎关注微信公众号:终端研发部 这里不仅仅学到的是技术

技术+职场

(欢迎关注学习和交流)

上一篇:ImageView控件 下一篇:Please change caller according to com.intellij.openapi.project.IndexNotReadyException documentation