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

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应用程序框架层和系统运行库层日志系统源代码分析
  2. Android(安卓)sdk更新代理配置
  3. android实现退出时关闭所有activity
  4. Android下载完文件打开
  5. Android(安卓)对.properties文件的读取
  6. Delphi Android(安卓)USB声明文件
  7. Android(安卓)AsyncTask异步实现大文件下载
  8. LIstview的使用和数据填充
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android开发环境迁移到Android Stdio 3.5
  2. Android 高级UI
  3. [置顶] android 新浪微博客户端的表情功
  4. AndroidStudio Build过程解析
  5. Android方法数
  6. Android——内存篇:Android中5种最常见的
  7. android详细解释键盘和鼠标事件
  8. 为了获取下一个10亿用户,Google的布局其实
  9. Android 企业需求与开发者状况简析(转)
  10. Android内核开发:序