1、前言
现在大家在开发android app 都往Android studio上来了。但是因为一直以来studio 对ndk的支持并没有很出色,所以做ndk开发的还在用eclipse。studio用了却是也不想回去用studio了,慢慢的studio对ndk的支持也会越来越好的。这里记录下studio ndk 环境的搭建。
注:Android studio搭建ndk 环境是很快的。只是用起来对c的支持并不是很友好目前还。
2、ndk 环境搭建
- 下载最新的Android studio 与 最新的ndk。其中 Android studio环境搭建该篇不做熬述。
ndk官方下载地址:http://developer.android.com/intl/zh-cn/ndk/downloads/index.html
下载对应版本解压。 Android studio配置ndk指向路径
file -> Project Structure -> SDK location -> Android NDK locaton:E:\work\android\android-ndk-r11
其实想说到这里就配置完了咯,可以在project 里的local.properties文件里看到生成的这么几行配置:
ndk.dir=E:\work\android\android-ndk-r11
sdk.dir=E:\work\android\AppData\Local\Android\sdkdemo验证
翻阅了一些博客。该篇的demo不错简单易操作:http://blog.csdn.net/yanbober/article/details/45309049
http://blog.csdn.net/lincyang/article/details/44725529
注: java层写了函数名后 用javah命令生成.h文件,首先设置javah的环境变量重启生效。
如果路径有切到debug下:
javah -jni com.myapplication.jni.JniUtil
带路径的javah 命令:javah -d jni -classpath ../../build/intermediates/classes/debug com.myapplication.jni.JniUtil
很多blog都有说倒 用javah 生成.h文件。其实倒也是可以自己写,因为名字的样式基本都差不多,这是后话了
- 对工程的补充说明
android studio 的默认路径(gradle里可以重定义)
->默认的jni路径(c 语言路径)是 src/main/jni
->默认的.so路径是 src/jniLibs
->c文件根据配置编译出来的so是在app/build/intermediates/ndk/debug/lib/ 下。java层代码可以直接引用。
->如果是demo 工程调用.so文件是普通的方式把so库放在jniLibs下调用即可。这里想说的是直接在jni编译的的工程里 java调用c层System.loadLibrary是不需要jniLibs这种调用的 不然就混乱了
3、demo
制作了一个Android studio 的jni demo 其中头文件分自动生成了和手写两种
https://github.com/lckj686/JniDemoAs