感受Android带给我们的新体验
By: 海市蜃楼 | In: Android开发
8 六 2010Here’s a very rough overview of how you can develop native code with the Android NDK:
1/ Run build/host-setup.sh to configure the NDK
2/ Place your native sources under $PROJECT/jni/…
3/ Write $PROJECT/jni/Android.mk to describe your sources to the NDK build system
4/ Write apps/<myapp>/Application.mk to describe your application and the native sources it needs to the NDK build system
5/ Build your native code by running “make APP=<myapp> ” in the top-level NDK directory.
The last step will copy, in case of success, the stripped shared libraries your application needs to your application’s root project directory. You will then need to generate your final .apk through the usual means.
按照上述步骤,我们说明在每一步中可能存在的错误【第一步,我们就不在这里详细说了,网上有很多不错的文章】。
常见错误说明:

错误的原因估计是(cat : Linux命令,显示文件的内容):工程名与Aplication.mk中的APP_MOUDLES不一致。
这个错误的主要原因是:编译C文件为最后的so库文件需要2个文件:Application.mk、Android.mk,如下图所示:
MK文件如何设置,看了上面的图一目了然【详细的说明还是要去看文档】,以下几点需要注意:

这个错误只要大家仔细看下就明白是C 的编译错误,C 代码无法编译。
如何编写C文件【native file】中的函数说明?从Java Source File推导出C/C++ Native File,可以参考以下4步:
1) 编译java文件【Java sources:包含我们需要的native函数】,如下图所示:
2) 使用命令javac JNITest.jva && javah JNITest,命令运行后增加了2个文件:
JNITest.jva编译后的文件JNITest.class、JNITest.h,这个文件就是我们需要的头文件,如下图所示:
3) 修改函数名,如何修改?我们先分析Android-NDK中的例子程序:
按照上面的规则修改就可以了。
4) 将上面的函数声明拷贝出来,在jni文件中创建一个*.c文件,按照上述函数结构实现函数,如下图所示:
这样我们就从Java Source File一步一步的得到C/C++ Native File。
库文件的加载:
编译后的so文件是libJNITest.so,而实际加载的库文件名是: JNITest【这实际上是Unix的“规范”,在Android NDK的文档OVERVIEW.txt中有详细说明】;还有Linux系统区分大小写的,所以如果上面的代码中,将加载的库文件名写成jnitest,也会导致运行崩溃。

这里有一群热爱开发的人,我们的文章以原创、翻译为主,包含了我们对Android的认识,对Android的研究,以及一些开发心得和感想,如果 你喜欢我们的站点,喜欢我们的文章,欢迎拍砖,欢迎交流。希望新版的mo-Android能够为你带来更好的体验。
5 Responses to Android NDK使用常见错误
mlianghua
六月 16th, 2010 at 3:34 下午
可以集成到eclipse中,使用起来更方便
SEO培训
七月 7th, 2010 at 10:47 下午
你好!交换一下链接吧1我的QQ597329561
Ryan
七月 17th, 2010 at 11:09 上午
您好~我是国内某财经报纸记者,想对安卓系统的开发生态有更深入的了解~ 不知道能否发一个邮件到我邮箱 XUWEI.ASIA@HOTMAIL.COM,希望能和您好好交流一下~
cheapest cell phone plans
七月 17th, 2010 at 10:06 下午
Done! Works fine just have to put things back to where they were.
全集然文明
七月 19th, 2010 at 8:59 下午
事物共有的规律,知识的原子能,创造:全集然文明