Android NDK环境搭建

来源:互联网 发布:网页制作软件免费下载 编辑:程序博客网 时间:2024/06/07 19:55

eclipse配置

打开Eclipse,点Window->Preferences->Android->NDK,设置NDK路径,例如Shamoo的是E:\android-ndk-r9c


新建一个Android工程,在工程上右键点击Android Tools->Add Native Support...,然后给我们的.so文件取个名字,例如:my-ndk


这时候工程就会多一个jni的文件夹,jni下有Android.mk和my-ndk.cpp文件。Android.mk是NDK工程的Makefile,my-ndk.cpp就是NDK的源文件。


接下来仿着NDK的demo,Hello-JNI工程写一下。使用Alt + '/'可以代码提示!很爽!有木有?之前用CDT时候死活都按不出代码提示,郁闷...

JNI接口的命名规范是:Java_ + 调用该方法的包名(包名的点用_代替) + _ + 调用该接口的类名 + _ + 方法名,对于实例方法,有两个参数是必要的,一个JNI的环境指针JNIEnv *


完成了,然后运行。运行之前先编译NDK,然后在编译JAVA代码。编译也许会遇到Unable to launch cygpath. Is Cygwin on the path?如何解决?如下

工程右键,点Properties->C/C++ Build的Building Settings中去掉Use default build command,然后输入${NDKROOT}/ndk-build.cmd

在C/C++ Build中点击Environment,点Add...添加环境变量NDKROOT,值为NDK的根目录

问题1.Unresolved inclusion: <jni.h>
      针对这个问题,需要在Eclipse中设置NDKROOT环境变量
      Proj Prop-s -> C/C++ Build ->Environment -> Add... -> Name = NDKROOT, Value = <your path to NDK>

问题2.undefined reference to '__android_log_print
      这个问题是c文件中有调用android的日志打印,但mk没有加载响应库。
  修改方法为:
  在mk文件中增加一行:LOCAL_LDLIBS += -llog
  注意增加的这一行要在include$(BUILD_SHARED_LIBRARY) 前面,否则无效。
  另外还是在c文件中检查是否有#include <android/log.h>

问题3.Unable to launch cygpath. Is Cygwin on the path?
      Proj Prop-s -> C/C++ Build的Building Settings中去掉Use default build command,然后输入${NDKROOT}/ndk-build.cmd

我在编译时遇到了上面几个问题,希望能对菜鸟同行们有所帮助,本文到此结束。






0 0