NDK开发_笔记0

  自谷歌搜索退出中国以来,谷歌对全球第二大市场中国的态度一直保持冷淡。但是北京时间12月8日,谷歌2016开发者大会在北京召开,同时专门针对中国的谷歌开发者网站已经上线:https://developers.google.cn/谷歌针对中国开发者的网站域名是cn结尾,网站内含谷歌开发者须要的全部产品,包括Android开发的须要的SDK、Android Studio和搜索、地图、Chrome等产品的API。皆为官方正版,并可无偿使用。html

OK,在进行NDK开发学习以前,首先下载Android Stdio和SDK,我安装了最新版的 AndroidStdio2.2.3 版本。java

下面抄下从该网站学习NDK的笔记:android

  · 使用场景编程

  · 下载NDK及相关工具app

  · 建立一个本地项目函数

  · 构建和运行示例应用工具

  · APK分析器性能

Getting Started

 

Native Development KitNDK)是一套工具集;该工具集容许android开发用户使用C/C++代码编程。学习

 

使用场景gradle

  1、对于设备运行高性能的追求(游戏、添加物理硬件等)

  2、重用本身或其余人开发的C/C++

 

Android Stdio2.2及以上版本的开发环境集成了构建系统,你能够用NDKC/C++代码编译成一个native库并经过Gradle工具将其打包到你的apk中。此时,你的Java代码就能够经过JNI接口调用Native Library中的函数。

 

想要学习更多Gradleandroid构建系统的知识,能够访问Configure Your Build

 

Android Stdio默认的本地库构建工具是CMake,但同时支持ndk-make,由于目前还有不少项目使用此工具构建本地库;若是你打算从头建立一个本地库,请使用CMake

 

下载 NDK 及相关工具

 

为了编译和调试本地代码,你须要下载如下工具:

The Android Native Development Kit (NDK):

  一套容许你在Android中使用C/C++的工具集。

CMake:

  独立于Gradle的外部构建工具,用于构建你的本地库;若是你想用ndk-build构建,那么你将不须要安装该组件。

LLDB:

  Android Studio用于调试本地代码的调试器。

你能够经过SDK Manager 安装以上3个组件:

  Tools > Android > SDK Manager > SDK Tools

  选择LLDB,CMake,NDK,进行下载。

 

建立一个本地项目

 

一旦你安装好了开发环境,就能够很轻松的建立一个支持C/C++的项目,具体步骤能够参考: Create a New Project with C/C++ Support

根据上面网址的操做要求,获得以下工程目录。

1)在 cpp 组中,您能够找到属于项目的全部原生源文件、标头和预构建库。

对于新项目,Android Studio 会建立一个示例 C++ 源文件 native-lib.cpp,并将其置于应用模块的 src/main/cpp/ 目录中。本示例代码提供了一个简单的 C++ 函数 stringFromJNI(),此函数能够返回字符串“Hello from C++”。要了解如何向项目添加其余源文件,请参阅介绍如何建立新的原生源文件的部分。

(2) External Build Files 组中,您能够找到 CMake ndk-build 的构建脚本。

build.gradle 文件指示 Gradle 如何构建应用同样,CMake ndk-build 须要一个构建脚原本了解如何构建您的原生库。对于新项目,Android Studio 会建立一个 CMake 构建脚本 CMakeLists.txt,并将其置于模块的根目录中。要详细了解此构建脚本的内容,请参阅介绍如何建立 Cmake 构建脚本的部分。

 

构建和运行示例应用

点击 Run 从菜单栏运行应用 后,Android Studio 将在个人手机上构建并启动一个显示文字“Hello from C++”的应用。

 

下面的概览介绍了构建和运行示例应用时会发生的事件:

1Gradle 调用您的外部构建脚本 CMakeLists.txt

2CMake 按照构建脚本中的命令将 C++ 源文件 native-lib.cpp 编译到共享的对象库中,并命名为 libnative-lib.soGradle 随后会将其封装到 APK 中。

3)运行时,应用的 MainActivity 会使用 System.loadLibrary()  加载原生库。如今,应用可使用库的原生函数 stringFromJNI()

4MainActivity.onCreate() 调用 stringFromJNI(),这将返回“Hello from C++”并使用这些文字更新 TextView

下面是根据理解画出的构建运行流程图,不对的地方,欢迎你们批评指正,多谢。

注:Instant Run 与使用原生代码的项目不兼容。Android Studio 会自动停用此功能。

 

APK分析器

若是您想要验证 Gradle 是否已将原生库封装到 APK ,可使用 APK 分析器

  (1)选择 Build > Analyze APK

     

  (2) app/build/outputs/apk/ 目录中选择 APK 并点击 OK

    

   (3)如图 3 中所示,您会在 APK 分析器窗口的 lib/<ABI>/ 下看到 libnative-lib.so

    

相关文章
相关标签/搜索