美文网首页
Mac下Android Studio v2.2.3 进行NDK配

Mac下Android Studio v2.2.3 进行NDK配

作者: 达叔darren | 来源:发表于2016-12-27 00:01 被阅读0次

    在Mac下用Android Studio进行NDK开发时碰到一些问题,而网上的一些资料并不全面或者已经过时,所以自己总结了一下,希望对后面的开发者有一些帮助。

    1. 安装Android Studio

    直接从下载页下载最新stable版本的的dmg格式安装,一键安装轻松自在。我下载的是2.2.3版本,可以用迅雷下载链接

    PS:在此吐槽下Android Studio的更新速度(包括非stable版本),一个月基本有>=2个版本更新,总给我一种不靠谱的感觉,为啥不只发stable版本,还我一个清静的世界。

    2. NDK环境配置

    要编译和调试本地代码(native code),你需要下面的组件:

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

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

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

    你可以使用 SDK Manager 来安装上述组件:

    1)打开一个项目,从菜单栏中选择Tools > Android > SDK Manager

    2)点击SDK Tools选项卡。

    3)勾选LLDB,CMakeNDK

    图1 SDK Tools设置NDK

    Note: 我在设置的时候,一开始�SDK Tools下是没有 LLDB、CMake和NDK选项的。进入SDK Update Sites选项卡确认Android Repository被选中。

    图2 SDK Update Sites设置

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

    创建一个支持 native code 的项目和创建普通的 Android studio 工程很像。但是有几点需要留意的地方:

     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)点击 “Finish”。

    当 Android Studio 完成新项目创建后,打开Project面板,选择Android视图。Android Studio 会添加cppExternal Build Files目录。

    * 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

    当你点击Run按钮,Android Studio 会编译并启动一个 APP ,然后在 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功能。

    更多详细资料可查看参考资料。

    5. 参考资料:

    在 Android Studio 2.2 中愉快地使用 C/C++

    AndroidStudio2.2开发NDK的正确姿势

    相关文章

      网友评论

          本文标题:Mac下Android Studio v2.2.3 进行NDK配

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