• NDK开发_笔记0


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

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

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

      · 使用场景

      · 下载NDK及相关工具

      · 创建一个本地项目

      · 构建和运行示例应用

      · APK分析器

    Getting Started

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

    使用场景

      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

        

  • 相关阅读:
    转:windows通过VNC访问远程ubuntu14.04 【 server】服务器
    【转】研究了代码质量后,开发速度提高了2倍,bug减少了15倍
    【转】PuTTY的ppk密钥与OpenSSH密钥之间的相互转换
    【转】outlook配置腾讯企业邮箱(腾讯企业邮箱imap服务器地址)
    【转】YApi结合swag管理和生成go项目restful API文档
    [转] 超高效!SwaggerYapi的秘密
    【转】SSH 远程登录很慢的解决方法
    [转]go语言io reader_如何从io.Reader 中读数据
    eslint 支持多个三目表达式
    33
  • 原文地址:https://www.cnblogs.com/gongxing/p/6155335.html
Copyright © 2020-2023  润新知