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

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 Studio NDK开发在C代码中将Log输出到logcat上面
  2. 22个值得收藏的android开源代码-UI篇
  3. [Android]混淆代码后生成带签名的apk
  4. 把android sdk 1.5源代码加入SDK
  5. Android代码内存优化建议-Android资源篇
  6. TextView文字阴影效果以及styles文件的使用
  7. 分析Android 根文件系统启动过程(init守护进程分析)

随机推荐

  1. Android 一张图理解getWidth和getMeasure
  2. Android资源目录
  3. Android之JNI和NDK的那些事
  4. 【笔记】android捕获触摸事件
  5. Android Initializing a Build Environme
  6. [Android] Android 监听WIFI
  7. Android 学习--ListView 的使用(二)
  8. Unity调用Android语音合成
  9. android Fragment学习
  10. Kotlin 踩坑日记(三) Android Studio 3.0.0