当前位置:编程学习 > JAVA >>

新版android jni hello-jni实例演示


第一次发帖有什么说的不对请多多指教
前面关于ndk和cygwin的安装及环境设置基本上与网上的其他搜搜大同小异,之后主要讲述关于如何实现hello-jni的个人经历。
windows下安装好ndk,cygwin后一般会测试ndk环境是否配置成功网上及一些老书上会说利用cygwin进入设好的环境变量地址输入build/host-setup.sh进行测试,不知道是版本太新还是什么原因,一直出错,个人认为只要你输入cd $ndk或者echo $ndk出现设置的环境变量地址就算配置成功了。
对于hello-jni的演示,在老版的ndk中利用的是make APP=hello-jni进行编译生成so文件,但是新版的NDK你会发现根本就不存在apps这个文件而是直接通过samples文件下的hello-jni进行编译的。所以新版中的编译生成so文件的步骤应该是:
    1.打开cygwin,输入cd $sdk 进入ndk的根目录,然后cd samples/hello-jni 目录,再输入$ndk/ndk-build
此时会对hello-jni工程进行编译生成一个libs文件夹,里面存放在生成libhello-jni文件。($ndk是你设置的环境变量量地址)。
    2.至此打开eclipse->file->import导入ndk里面的hello-jni工程,展开后得到一个hello-jni的android工程,打开创建的avd模拟器,对工程进行编译你会发现可以在模拟器中出现“hello from JNI”。
    在此算是成功编译了自带的第一个NDK程序,如果按照网上一些老版的方法,编译的时候会出现
    Caused by: java.lang.UnsatisfiedLinkError: Couldn't load libhello-jni: findLibrary returned null等关于无法连接的问题,主要原因是在没对.c文件进行编译生成os文件的时候,没有生成libs文件和os文件。因此只要按照以上第一步完成就可以解决问题。
    当然有部分人还会去改.h文件里的static {
        System.loadLibrary("hello-jni");
    }
    这里没有必要吧hello-jni改成libhello-jni不然还是不出现连不上库的错误。
第一次写希望大家能从中有所帮助特别是初学者,避免像我一样走一些不必要的弯路! Android JNI  hello-jni
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,