美文网首页Android开发
Android Stuido 使用cMake构建NDK项目

Android Stuido 使用cMake构建NDK项目

作者: 若尘若辰 | 来源:发表于2017-01-03 11:07 被阅读0次

    Android Stuido 使用cMake构建NDK项目#

    不觉得,Android studio(as)已经面市好多年了,记得13年笔者刚开始接触Android的时候,as还是试用版本,现在as发展地如火如荼,正在逐渐地取代之前的Android开发工具eclipse adt,然而,as对于ndk的支持却不是那么地好,开发起来并没有eclipse开发那么方便。as 2.2版本后,终于正式支持ndk了,本文就来讲解如何使用as 2.2(或者更高的版本)来构建ndk项目。

    下载NDK和构建工具##

    为了在代码中使用c/c++,我们需要:

    • 你的Android stuido版本在2.2或者更高;
    • 下载Android NDK(Native Develop Kit),其允许在你的代码中使用c或c++代码;
    • CMake,一个外部构建工具
    • LLDB,as可以用来调试原生代码

    我们打开SDK Manager来安装ndk,CMake和LLDB。

    1. 依次选择Tools->Android->SDK Manager
    2. 点击 SDK Tools 标签
    3. 选中 LLDB、CMake 和 NDK 旁的复选框
    4. 点击Apply
    5. 结束后点Finish

    这样NDK的环境就搭建好啦

    构建第一个NDK项目##

    创建NDK项目与创建其他项目类似,不过NDK项目需要:

    1. 在Configure your new project 部分,选中 Include C++ Support 复选框
    2. 在向导的 Customize C++ Support 部分,您可以使用下列选项自定义项目:
      • C++ Standard
      • Exceptions Support
      • Runtime Type Information Support
    3. 点击Finish

    as完成新项目的构建后,我们发现as多了Cpp和External Build Files两个文件夹

    项目结构
    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,并将其置于模块的根目录中。

    运行第一个NDK项目

    点击Run,然后选择安装设备,该NDK项目就会安装在手机上,主界面将会显示一个“Hello from C++”。构建该应用时,将会执行以下动作:

    1. Gradle 调用您的外部构建脚本 CMakeLists.txt。
    2. CMake 按照构建脚本中的命令将 C++ 源文件 native-lib.cpp 编译到共享的对象库中,并命名为 libnative-lib.so。
    3. 运行时,应用的 MainActivity 会使用 System.loadLibrary() 加载原生库。现在,应用可以使用库的原生函数 stringFromJNI()。
    4. MainActivity.onCreate() 调用 stringFromJNI(),这将返回“Hello from C++”并使用这些文字更新 TextView。

    这样,第一个NDK应用就完成了。
    本文参考自:https://developer.android.com/studio/projects/add-native-code.html

    相关文章

      网友评论

        本文标题:Android Stuido 使用cMake构建NDK项目

        本文链接:https://www.haomeiwen.com/subject/uawgvttx.html