Android(安卓)NDK 教程 - NDK环境配置和 Android(安卓)Studio 中的入门使用
我的环境: Ubuntu14.04 64bit、Android Studio1.5
Android NDK安装
下载地址:http://developer.android.com/ndk/downloads/index.html#download
选择对应的操作系统,然后下载对应文件
Windows上直接拷到目的目录,双击exe文件即可解压
Ubuntu上
ndk$ chmod a+x android-ndk-r10c-darwin-x86_64.bin
ndk$ ./android-ndk-r10c-darwin-x86_64.bin
配置环境变量
Windows
将ndk根目录加入到Path中,我的ndk根目录 :D:\android-ndk-r10e
Ubuntu
在~/.bashrc文件中添加(记得换成自己的ndk根目录):
NDK_HOME=~/Android/Ndk/android-ndk-r10e
export PATH=$NDK_HOME:$PATH
验证(Windows和Ubuntu方法相同)
在命令行输入ndk-build
配置成功显示下图信息:
在Android Studio中的使用
a)创建工程,并简单编写代码和UI
创建NativeUtil.java,输入如下内容:
MainActivity页面如图,点击Click会计算传入字符串的字节数
b)使用javah命令,进入工程的main目录,使用:javah -d jni -classpath <SDK_android.jar>;<APP_classes> <完整包名>
,会在main/jni目录下生成对应.h文件;例如:
javah -d jni -classpath D:\JAVA_HOME\android-sdk\platforms\android-17\android.jar;../../build/intermediates/classes/debug com.demo.kore.myndk.NativeUtil
说明:javah最后一个参数的包名对应的是NativeUtil.class文件,不是java文件;其位置如下:
javah生成的文件:com_demo_kore_myndk_NativeUtil.h 如下图:
c)在jni目录下创建一个main.c文件,并引用上面生成的.h文件,并实现其中的方法。
d)app目录结构如下图:
e)在app目录下的build.gradle文件中的defautlConfig{}标签内添加:
f)在工程目录下的gradle.properties文件中添加下图内容:
android.useDeprecatedNdk=true
g)在工程目录下的local.properties文件中添加ndk本地目录,比如我的本地目录,记得换成自己的ndk目录
sdk.dir=D:\\JAVA_HOME\\android-sdk
h)MainActivity中onClick方法,如图,然后点击运行即可
i)运行结果:
说明:编译生成so库文件时,需要Android.mk文件,该文件由AS自动生成,其位置如下:
NDK中日志打印 - Log
a)需要在main.c文件头部中增加部分信息
b)在app目录下的build.gradle文件中的ndk标签添加如下内容
c)在main.c文件的方法中调用方法,然后运行即可
遇见错误
错误一:错误如下,解决方法:在gradle.properties中添:android.useDeprecatedNdk=true
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 “android.useDeprecatedNdk=true” in gradle.properties to continue using the current NDK integration.
错误二:错误如下,解决方法:在local.properties中添加本地ndk路径,例如:sdk.dir=D:\\JAVA_HOME\\android-sdk
参考链接:
ndk入门教程:http://jingyan.baidu.com/article/37bce2be191ed51003f3a278.html
ndk工程配置:http://blog.csdn.net/sodino/article/details/41946607
Android中NDK开发:http://blog.chinaunix.net/uid-12845622-id-5037887.html
Oracle官方jni文档:http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/intro.html
测试插件网址:http://tools.android.com/tech-docs/new-build-system/gradle-experimental
更多相关文章
- Android(安卓)使用Okhttp进行文件下载
- android webview 使用以及一些异常处理及上传文件问题
- Android数据存储方式
- android 按钮点击效果 imageview button imagebutton均可
- android资源类型
- Android开发之动态库调用
- Android(安卓)如何自定义apk打包的包名
- Android(安卓)启动另外activity并返回结果
- NPM 和webpack 的基础使用