赞
踩
Android is the first free, open source, and fully customizable mobile platform. Android offers a full stack: an operating system, middleware, and key mobile applications. It also contains a rich set of APIs that allows third-party developers to develop great applications.
制作 cygwin 环境下的 Cross tool chain
在完全开源前,很多开发者在用 CodeSourcery 的 GNU Toolchains for ARM 。现在简单了,下载到源码 后,在 prebuild 目录下就有完整的 toolchain 用了。如果需要在其他系统环境下使用,可以去下载 android-toolchain-20081019.tar.bz2 源码重新编译。在 cygwin 下编译时,先检查一下 gcc make flex bison gettext-devel 等是否装全(编译过程中会用到 msgfmt 命令,cygwin 把它放到 gettext-devel 包里了),然后按照其 readme.txt 里的 linux 方式编译就可以了。cgywin 下有时会出现文件写失败的错误,用 chmod +w 修改即可解决。
在 <android source>/build/core/combo 目录下的 linux-arm.mk 文件对我们来说非常有帮助,其中 C_INCLUDES 描述 C 语言的所有头文件位置,在 android source 里找到这些目录,并复制到新编译好的 <toolchain>/arm-eabi/include 目录下,动态库在编译过的 <android source>/out/target/product/generic/system/lib 目录下,也可以从 Android SDK 的模拟器中 /system/lib 下找到这些文件,并复制到 <toolchain>/arm-eabi/lib 目录下。在 <android source>/build/core 下有 armelf.x armelf.xsc ,是以后编译必须的连接脚本。在 <android source>/out/target/product/generic/obj/lib 下的 crtbegin_static.o crtbegin_dynamic.o crtend_android.o 编译时还要根据自己情况选择并连接到可执行文件中去,当然也可以在程序 main 函数后加如下函数代替。
void _start(int argc, char **argv) { exit( main(argc, argv) ); }
First native C application on android
制作好了 toolchain ,就可以写个 hello.c 测试一下了。代码如下:
呵呵,又迈进一步 ...
The Java Native Interface (JNI) for Android
在 eclipse 里新建一个 android 项目,新增加一个类 hello.java :
修改主程序 onCreate 的代码,用来调用显示结果:
android 使用的 JNI 头文件在目录 <android source>/dalvik/libnativehelper/include/nativehelper 下。也许是为了提高 android 映射库函数的速度,android 另加了两个函数,在加载和释放库时被VM调用,即:jint JNI_OnLoad(JavaVM* vm, void*) 和 void JNI_OnUnload(JavaVM* vm, void*) 。通过 JNIEnv 的 RegisterNatives 用法把一个 JNINativeMethod 数组 注册到 VM 。<android source>/ dalvik/libcore/dalvik/src/main 加有个简单的例子,可以帮助理解 JNINativeMethod 中 signature 的写法。 共享库代码 libhello_jni.c :
编译并上传到模拟器:
在 eclipse 里运行 android 项目,即可看到正确结果。 测试环境 Android SDK 1.0-r2 ,测试代码及编译好的库和apk可以到 http://sites.google.com/site/oopsware/android 下载。
http://hi.baidu.com/oopsware/blog/item/5a86550152edf7d1267fb56e.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。