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功能。
                  
                  
                  
                  
                            
本文介绍在AndroidStudio中配置NDK的方法及创建支持C/C++的新项目的步骤。包括安装NDK、CMake和LLDB,创建项目时启用C++支持,并通过一个简单的示例演示如何编译和运行包含C++代码的应用。
          
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					367
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            