最近在搞客户端应用,对这几天学到的东东做下小结。

1、Android是基于linux kernel,用C来写的部分代码。

2、Android应用程序是用java语言来写的,开发工具一般用eclipse。

3、Android应用程序如果想要调C写的代码怎么办?

这个也比较简单,我们先回想下在C#里是如何调C++的,想起来了一个关键词,就是DLLImport,具体的用法为:【DLLImport("user32.dll")】:告诉.NET的公共语言运行时CLR,我想调用的非托管代码在user32.dll中,帮我把这个DLL加载到内存中来,然后采用public static extern 返回值 方法名(参数),可以调用外部dll定义的方法了,不过,还有一个比较痛苦的事就是,不同语言下的类型转换,譬如:指针、数组的转换,要一个方法一个方法地调试了。

在Android平台上调C写的代码,道理、过程也差不多,只不过,也得破费一翻周折,先普及下linux上的相关知识:

.c--C语言代码文件

.cpp-C++语言的代码文件

.h-C或C++程序的头文件

.o --程序目标文件:就是源代码编译后但未进行链接的那此中间文件,相当于windows平台下的.obj文件。

.a--静态链接库文件,相当于windows平台下的.lib文件 。一般需要头文件,.h文件才能调用。

.so类库文件。

基础知识了解了,再理一个转换的过程:

a)首先要将c代码放到linux下(注:windows上也有linux虑拟机工具),编译成.a或.so文件。

b)在eclipse工具里就可以直接加载.a和.h文件,或者直接调成.so文件就可以编译。

c)在直接调成方法之后,也还有一件事就是:要进行Java Native Interface转换,跟上面提到的DLLImport类似。

更多相关文章

  1. 在代码中实现android:tint效果
  2. Android(安卓)Dalvik虚拟机介绍
  3. android 中 application 的使用
  4. Android(安卓)高手进阶教程(十三)之----Android(安卓)数据库SQLi
  5. Android(安卓)Drawable Resource学习(二)、BitmapDrawable和Bitmap
  6. [置顶] Android(安卓)65K问题之Multidex原理分析及NoClassDefFou
  7. Android(安卓)Studio NDK开发在C代码中将Log输出到logcat上面
  8. 跟我学android应用开发 之 第一个Android应用程序
  9. NPM 和webpack 的基础使用

随机推荐

  1. 利用百度词典API和Volley网络库开发的and
  2. 详解android:scaleType属性
  3. Android(安卓)DatePickerDialog 只显示年
  4. Android(安卓)EditText按下输入法软件的e
  5. android开发每日汇总【2011-10-31】
  6. android 开机启动程序
  7. Android高手应该精通哪些内容?
  8. Android热修复(二):以DexClassLoader类加载
  9. Android在TQ2440开发板上的移植
  10. Android应用实例之----基于Service与Cont