专栏首页微卡智享Android NDK编程(一)---NDK介绍及环境搭建

Android NDK编程(一)---NDK介绍及环境搭建

前言

什么是NDK?

NDK全称为Native Development Kit,是Android的一个工具开发包,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。

NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。

NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。


  • 在Android开发中,使用 NDK开发的需求正逐渐增大
  • 但很多人却搞不懂 JNI 与 NDK 到底是怎么回事
  • 今天,我将先介绍JNI 与 NDK & 之间的区别,手把手进行 NDK的使用教学,希望你们会喜欢

从上面的讲的里面又说到了JNI,那JNI又是什么是呢

JNI全称为Java Native Interface,即 Java本地接口。它的作为为使得Java 与 本地其他类型语言(如C、C++)交互。


NDK与JNI的关系


Android Studio NDK的环境配置

我用的Android Studio的版本为3.3.2

在上面的工具栏里打开SDK Manager

然后我们点击SDK Tools

进入后里面的LLDB、CMAKE和NDK这三项都打上勾进行下载安装。

新建NDK项目

点击Start a new Android Studio project

找到最后一项Native C++,然后再点击Next。

注:3.3以前可以直接选空的Acitivty然后后面有选项是include C++打上勾,这块改变也是后来才找到,刚才始的时候也是一脸懵逼了

输入一个Name为vaccaendk,然后再点击Next

选择C++版本,可以选择C++11,C++14,我们这里默认即可。点击Finish就会创建项目

创建好后的项目可以从下图上看到,左侧多了一个CPP的包,里面有CMakeList.txt和native-lib.cpp的文件,在默认的MainActivity里面可以看到右侧红框里面上面是引用名为native-lib的库名,下面是一个stringFromJNI的一个demo例子

我们再来看看native-lib.cpp

这里面就是对应的Mainactivity里面stringFromJNI的C++的代码。到这里一个带有NDK的项目就创建完成了。

-END-

本文分享自微信公众号 - 微卡智享(VaccaeShare),作者:Vaccae

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • NanoMsg框架|Android Studio编译NanoMsg源码

    前面的章节已经把NanoMsg的简介,及C#相关的NNanoMsg使用Demo已经介绍完成了,今天这篇开始我们就要写关于Android怎么使用NanoMsg的文...

    Vaccae
  • C++创建动态库C#调用

    最近一直在学OpenCV,因为图像处理里面用C++效率要快不少,顺便就学习了一点C++的东西,由于WinForm中的程序我主要还是用C#来做,所以今天我们就看看...

    Vaccae
  • 学习《实时Opencv处理后的Camera图像Android NDK方法》笔记

    前面文章《OpenCV4Android中NDK开发(一)--- OpenCV4.1.0环境搭建》自己配置好了NDK的Opencv方法,因为在Android中使用...

    Vaccae
  • jni和ndk详解

    NDK(Native Development Kit)“原生”也就是二进制 android常用的开发方式是java封装的库,而这些库的底层实现是由C/C++实现...

    xiangzhihong
  • 教育时评:人工智能时代教师角色需要改变

    人工智能的飞速发展,将给未来教育带来哪些变革?这是当下社会热烈讨论的话题。"未来人才培养和人工智能的崛起是密切相关的。未来是更加智能化的时代,一定要高度重视新科...

    企鹅号小编
  • 评论:人工智能时代教师角色需要改变

    人工智能时代教师角色需要改变 人工智能的飞速发展,将给未来教育带来哪些变革?这是当下社会热烈讨论的话题。“未来人才培养和人工智能的崛起是密切相关的。未来是更加智...

    企鹅号小编
  • 腾讯云 MySQL 云数据库快速初始化的方法步骤

    如何快速初始化 MySQL 数据库?本文中老魏分享如何对已经买到的 MySQL 数据库执行初始化操作。

    用户5916266
  • 如何快速初始化腾讯云 MySQL 云数据库

    如何快速初始化 数据库?本文中老魏分享如何对已经买到的 MySQL 执行初始化操作。

    魏艾斯博客www.vpsss.net
  • 《Luna》测评|一段不算平凡的故事,VR游戏中的白月光

    生活没有时光机,也没有魔法棒,它变不出女巫和骑士,结局也未必美好。如果有一个世界,让人们可以逃离与躲藏,平静温柔的如同水一般的月光……

    VRPinea
  • 绘图: Python matplotlib简介

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! matplotlib是基于numpy的一套...

    Vamei

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动