Android Studio v2.3 进行NDK配置和使用

本文介绍在AndroidStudio中配置NDK的方法及创建支持C/C++的新项目的步骤。包括安装NDK、CMake和LLDB,创建项目时启用C++支持,并通过一个简单的示例演示如何编译和运行包含C++代码的应用。

1、概述

以前在eclipse上玩过NDK,现在想在Android Studio试试NDK,看了网上的一些教程,大多数比较老,步骤过时。本文根据最新android Studio版本进行NDK的配置,并进行基本使用。

2、环境配置

(1)安装NDK

这里写图片描述

  • 从菜单栏中选择Tools > Android > SDK Manager。
  • 点击SDK Tools选项卡。
  • 勾选LLDB,CMake和NDK。

1)The Android Native Development Kit (NDK): 让你能在 Android 上面使用 C 和 C++ 代码的工具集。

2)CMake: 外部构建工具。如果你准备只使用 ndk-build 的话,可以不使用它。

3)LLDB: Android Studio 上面调试本地代码的工具。

等待下载,下载完成后自动配置,无需手工操作,果然亲儿子,的确方便。

3、创建支持 C/C++ 的新项目

(1)在Configure your new project选项中,勾选Include C++ Support选项。

(2)点击 Next,后面的流程和创建普通的 Android studio 工程一样。

(3)在Customize C++ Support选项卡中

这里写图片描述

你有下面几种方式来自定义你的项目:

  • C++ Standard:点击下拉框,可以选择标准 C++,或者选择默认 CMake 设置的Toolchain Default选项。

  • Exceptions Support:如果你想使用有关 C++ 异常处理的支持,就勾选它。勾选之后,Android Studio 会在 module 层的 build.gradle 文件中的cppFlags中添加-fexcetions标志。

  • Runtime Type Information Support:如果你想支持 RTTI,那么就勾选它。勾选之后,Android Studio 会在 module 层的 build.gradle 文件中的cppFlags中添加-frtti标志。

(4)创建成功

这里写图片描述

  • cpp目录存放你所有 native code 的地方,包括源码,头文件,预编译项目等。对于新项目,Android Studio 创建了一个 C++ 模板文件:native-lib.cpp,并且将该文件放到了你的 app 模块的src/main/cpp/目录下。这份模板代码提供了一个简答的 C++ 函数:stringFromJNI(),该函数返回一个字符串:”Hello from C++”。

  • External Build Files目录是存放 CMake 或 ndk-build 构建脚本的地方。有点类似于 build.gradle 文件告诉 Gradle 如何编译你的 APP 一样,CMake 和 ndk-build 也需要一个脚本来告知如何编译你的 native library。对于一个新的项目,Android Studio 创建了一个 CMake 脚本:CMakeLists.txt,并且将其放到了你的 module 的根目录下。

4、编译运行

编译运行成功后,在 APP 中显示一段文字”Hello from C++”。

这里写图片描述

从编译到运行示例 APP 的流程简单归纳如下:

1)Gradle 调用外部构建脚本,也就是CMakeLists.txt。

2)CMake 会根据构建脚本的指令去编译一个 C++ 源文件,也就是native-lib.cpp,并将编译后的产物扔进共享对象库中,并将其命名为libnative-lib.so,然后 Gradle 将其打包到 APK 中。

3)在运行期间,APP 的 MainActivity 会调用System.loadLibrary()方法,加载 native library。而这个库的原生函数,stringFromJNI(),就可以为 APP 所用了。

4)MainActivity.onCreate() 方法会调用stringFromJNI(),然后返回 “Hello from C++”,并更新 TextView 的显示。

注意:Instant Run并不兼容使用了 native code 的项目。Android Studio 会自动禁止Instant Run功能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值