Android NDK开发初记

3 篇文章 0 订阅
2 篇文章 0 订阅

为什么要用到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.运行
HelloWorld.c运行结果
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"); // 加上路径即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值