您的位置:首页 > 移动开发 > Android开发

Android NDK开发初记

2015-11-07 10:14 375 查看
为什么要用到NDK

NDK的弊端

c程序调用java代码简单示例

为什么要用到NDK

1.核心代码的保护。由于apk 的java层代码容易被反编译,而c/c++反编译的难度较大,所以一些核心代码可以使用NDK开发。

2.驱动等底层开发。java代码是一次编译,到处运行,这些都是java虚拟机的功劳。不同平台的java虚拟机都封装了底层相关的操作,因此java应用层根本就接触不到底层的东西,而c/c++可以。例如WiFihost,WiFi热点的开发,将手机网络共享,供其他设备使用。

3.音频图像等处理。一些开源的音频图像处理库基本都是c/c++编写的,例如opencv、lame等。

4.嵌入式开发。车载系统的开发等。

NDK的弊端

1.可能影响常规软件的开发周期。一般软件仅仅使用SDK开发就够了,若是强行使用NDK,只是白白增加项目的难度与时长。

2.c/c++开发对于错误与内存控制较高,对于开发者的要求也就较高,并且易出错。

c程序调用java代码简单示例

1.创建HelloWorld.c 文件。(示例文件目录D:\Dev-Cpp_gr\Dev-Cpp\workspace\HelloWorld.c)。

2.打开HelloWorld.c 文件。(示例使用的是Dev-C++开源工具)。

3.编写c代码

#include "stdio.h"
void main()
{
printf("C Hello World!\n");
return;
}


4.运行



5.在HelloWorld.c 相同目录下编写HelloWorld.java文件。代码如下

public class HelloWorld{
public static void main(String[] args){
System.out.println("Java Hello World!");
}
}


6.打开cmd,进入java文件目录编译java文件(首先装jdk,并配置环境变量)



7.此时该目录下面有HelloWorld.c 和 HelloWorld.class文件了。这时候需要使用c代码调用java代码,将HelloWorld.c 修改如下:

#include "stdio.h"
void main()
{
printf("C Hello World!\n");
system("java HelloWorld"); // 命令与运行java文件一致
return;
}


8.运行HelloWorld.c



9.大功告成!若是HelloWorld.class 文件与 HelloWorld.c 文件不在同一个目录,则将HelloWorld.c 代码改动一下:

system("java -classpath D:\\Dev-Cpp_gr\\Dev-Cpp\\workspace HelloWorld"); // 加上路径即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: