Android studio新建项目sdk要多少 4.0 sdkTools 没有LLDB选项

  1. 看到path里的路径了吗那就是你放CMakeLists嘚地方。
    这里我选择在main里新建一个cpp文件夹用来存放CMakeLists因为后面还要写cpp文件。

  2. 然后点击sync同步要是你的路径没写错应该就能看到CMakeLists里的Version 3.4.1变色了,那就是CMakeLists被正确识别的证明

  3. 在CMakeLists被正确的读取到后,我们就可以准备写C++源文件了在你的目录(我这里是src/main/cpp/)新建一个C++源文件,取名hello然后在CMakeLists里媔导入这个C++文件

    通过add_library将C++文件打包成库,就可以被JAVA文件引用这里面有三个参数
    SHARED: 库的类型,动态库表现为.so文件

  4. 要是以上都没问题,你就可鉯在JAVA里导入这个库了

  5. (可选)在cpp里面写一个以Java_开头的的空函数例如:

    这一步的主要作用是可以更方便的创建native函数,手动创建比较麻烦

  6. 在剛才在MainActivity中导入了动态库现在我们再声明一个native方法

    这时这个函数是报错的,因为它并不存在

    如果你有进行第8步,你就可以将鼠标指向函數名hello然后按下alt+Enter,它就会自动在你的hello.cpp里面创建一个hello函数你就可以通过ctrl+鼠标左键 查看并编辑这个函数了

    要是你没做第8步也不要紧,自己把這个函数写上就行写过一次后再创建新的native方法就直接在JAVA里声明,然后alt+Enter就可以直接在CPP里面生成对应函数
    如果你有做第8步,现在就可以把苐8步创建的空函数删掉了

  7. 现在我们就可以往里面添加功能了

    作用是返回一个jstring类型的字符串对应JAVA的String类型

  8. 这个新建的空白项目默认是个hello world项目,其功能是使用TextView在屏幕上显示“Hello World!”,现在我们将它改成我们自己的字符串


}

文/zzyyppqq(简书作者) 原文链接:/p/178a2169b7ff 著莋权归作者所有转载请联系作者获得授权,并标注“简书作者” 官方 Experimen

在上一篇的中介绍了使用gradle-experimental可以简化NDK的开发配置,其中提到了在运荇选项中有两个运行的配置选项appapp-native,其中的app-native就是用来运行和调试JNI开发的

可以看到程序在断点处暂停了,在左侧的状态里面可以看到变量的徝和指针地址:

从上面的图中可以看到除了Variables以外还有一个tab是LLDB,点击进入可以看到(lldb)的命令行在这里面我们可以输入LLDB的命令,帮助调试程序

  • print (p)打茚命令,打印变量以及其值

  • expr 可以在调试时动态执行指定表达式并打印结果,用于在调试过程中修改变量的值
    比如我们在程序里面定义int b=1;可鉯在断点的时候使用expr

LLDB是一个高效的c/c++的调试器他与LLVM编译器一起使用,提供了丰富的流程控制和数据检测,有效的帮忙我们调试程序LLDB是XCode中默認的调试器,Android studio新建项目sdk要多少中可以在SDK Tools中下载LLDB最

}

搭配使用 与 时您可以将 C 和 C++ 代码編译到 Gradle 与 APK 一起打包的原生库中,将这类代码添加到您的应用中您的 Java 代码随后可以通过 Java 原生接口 (JNI) 调用您的原生库中的函数。如果您想要详細了解如何使用 JNI 框架请阅读 。

Android studio新建项目sdk要多少 用于构建原生库的默认工具是 CMake由于很多现有项目都使用构建工具包编译其原生代码,Android studio新建项目sdk要多少 还支持 如果您想要将现有的 ndk-build 库导入到您的 Android studio新建项目sdk要多少 项目中,请参阅介绍如何配置 Gradle 以的部分不过,如果您在创建新嘚原生库则应使用

本页面介绍的信息可以帮助您使用所需构建工具设置 Android studio新建项目sdk要多少、创建或配置项目以支持 Android 上的原生代码,以及构建和运行应用

实验性 Gradle 的用户注意事项:如果您是以下任意一种情况,请考虑并使用 CMake 或 ndk-build 构建原生库:您的原生项目已经使用 CMake 或者 ndk-build;但是您想要使用稳定版本的 Gradle 构建系统;或者您希望支持插件工具例如 。否则您可以继续。

下载 NDK 和构建工具


要为您的应用编译和调试原生代码您需要以下组件:

  • :这套工具集允许您为 Android 使用 C 和 C++ 代码,并提供众多平台库让您可以管理原生 Activity 和访问物理设备组件,例如传感器和触摸輸入
  • :一款外部构建工具,可与 Gradle 搭配使用来构建原生库如果您只计划使用 ndk-build,则不需要此组件

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


创建支持原生代码的項目与类似,不过前者还需要额外几个步骤:

  1. 正常填写所有其他字段并完成向导接下来的几个部分

    图 2. 您的原生源文件和外部构建脚本的 Android 視图组。

    :此视图无法反映磁盘上的实际文件层次结构而是将相似文件分到一组中,简化项目导航

  1. 在 cpp 组中,您可以找到属于项目的所有原生源文件、标头和预构建库对于新项目,Android studio新建项目sdk要多少 会创建一个示例 C++ C++”要了解如何向项目添加其他源文件,请参阅介绍如哬的部分
  2. 需要一个构建脚本来了解如何构建您的原生库。对于新项目Android studio新建项目sdk要多少 会创建一个 CMake 构建脚本 CMakeLists.txt,并将其置于模块的根目录Φ要详细了解此构建脚本的内容,请参阅介绍如何的部分

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

: 与使用原生代码的项目不兼容Android studio新建项目sdk要多少 会自动停用此功能。

如果您想要验证 Gradle 是否已将原生库打包到 APK 中可以使用 :

向现有项目添加 C/C++ 玳码


如果您希望向现有项目添加原生代码,请执行以下步骤:

    • 如果您已经拥有原生代码或想要导入预构建的原生库则可以跳过此步骤。
  1. 将您的原生源代码构建到库中。如果导入和关联预构建库或平台库您也需要此构建脚本。
  2. 提供一个指向您的 CMake 或 ndk-build 脚本文件的路径。Gradle 使鼡构建脚本将源代码导入您的

配置完项目后您可以使用 从 Java 代码中访问您的原生函数。要构建和运行应用只需点击 Run 。Gradle 会以依赖项的形式添加您的外部原生构建流程用于编译、构建原生库并将其随

要在应用模块的主源代码集中创建一个包含新建原生源文件的 cpp/ 目录,请按以丅步骤操作:

如果您的原生源文件还没有 CMake 构建脚本则您需要自行创建一个并包含适当的 CMake 命令。CMake 构建脚本是一个纯文本文件您必须将其命名为 CMakeLists.txt。本部分介绍了您应包含到构建脚本中的一些基本命令用于在创建原生库时指示 CMake 应使用哪些源文件。

:如果您的项目使用 ndk-build则鈈需要创建 CMake 构建脚本。提供一个指向您的  文件的路径。

要创建一个可以用作 CMake 构建脚本的纯文本文件请按以下步骤操作:

    :您可以在所需的任意位置创建构建脚本。不过在配置构建脚本时,原生源文件和库的路径将与构建脚本的位置相关

现在,您可以添加 CMake 命令对您的构建脚本进行配置。要指示 CMake 从原生源代码创建一个原生库请将  和  命令添加到您的构建脚本中:

CMake 使用以下规范来为库文件命名:

例如,如果您在构建脚本中指定“native-lib”作为共享库的名称CMake 将创建一个名称为 libnative-lib.so 的文件。不过在 Java 代码中加载此库时,请使用您在 CMake 构建脚本中指定嘚名称:

:如果您在 CMake 构建脚本中重命名或移除某个库您需要先清理项目,Gradle 随后才会应用更改或者从 APK 中移除旧版本的库要清理项目,請从菜单栏中选择 Build > Clean Project

预构建的 NDK 库已经存在于 Android 平台上,因此您无需再构建或将其打包到 APK 中。由于 NDK 库已经是 CMake 搜索路径的一部分您甚至不需偠在您的本地 NDK 安装中指定库的位置 - 只需要向 CMake 提供您希望使用的库的名称,并将其关联到您自己的原生库

将  命令添加到您的 CMake 构建脚本中以萣位 NDK 库,并将其路径存储为一个变量您可以使用此变量在构建脚本的其他部分引用

为了确保您的原生库可以在 log 库中调用函数,您需要使鼡 CMake 构建脚本中的  命令关联库:

NDK 还以源代码的形式包含一些库您在构建和关联到您的原生库时需要使用这些代码。您可以使用 CMake 构建脚本中嘚 add_library() 命令将源代码编译到原生库中。要提供本地 NDK 库的路径您可以使用 ANDROID_NDK 路径变量,Android studio新建项目sdk要多少 会自动为您定义此变量

添加预构建库與为 CMake 指定要构建的另一个原生库类似。不过由于库已经预先构建,您需要使用  标志告知 CMake 您只希望将库导入到项目中:

然后您需要使用  命令指定库的路径,如下所示

某些库为特定的 CPU 架构(或)提供了单独的软件包,并将其组织到单独的目录中此方法既有助于库充分利鼡特定的 CPU 架构,又能让您仅使用所需的库版本要向 CMake 构建脚本中添加库的多个 ABI 版本,而不必为库的每个版本编写多个命令您可以使用 ANDROID_ABI 路徑变量。此变量使用 或者 而让其使用的一组经过筛选的 ABI。例如:

:如果您希望打包一个并不是构建时依赖项的预构建库(例如在添加屬于 imported-lib 依赖项的预构建库时)则不需要执行以下说明来关联库。

在您构建应用时Gradle 会自动将导入的库打包到 APK 中。您可以使用 验证 Gradle 将哪些库咑包到您的 APK 中如需了解有关 CMake 命令的详细信息,请参阅 

要将 Gradle 关联到您的原生库,您需要提供一个指向 CMake 或 ndk-build 脚本文件的蕗径在您构建应用时,Gradle 会以依赖项的形式运行 CMake 或 ndk-build并将共享的库打包到您的 APK 中。Gradle 还使用构建脚本来了解要将哪些文件添加到您的 Android studio新建项目sdk要多少 项目中以便您可以从 Project 窗口访问这些文件。如果您的原生源文件没有构建脚本则需要先,然后再继续

指定可选参数和标志。與 defaultConfig {} 块中的其他属性类似您也可以在构建配置中为每个产品风味重写这些属性。

例如如果您的 CMake 或 ndk-build 项目定义多个原生库,您可以使用 targets 属性僅为给定产品风味构建和打包这些库中的一部分以下代码示例说明了您可以配置的部分属性:

要详细了解配置产品风味和构建变体,请參阅如需了解您可以使用 arguments 属性为 CMake 配置的变量列表,请参阅

默认情况下,Gradle 会针对  将您的原生库构建到单独的 .so 文件中并将其全部打包到您的 APK 中。如果您希望

在大多数情况下您只需要在 ndk {} 块中指定 abiFilters(如上所示),因为它会指示 Gradle 构建和打包原生库的这些版本不过,如果您希朢控制 Gradle 应当构建的配置并独立于您希望其打包到 APK

为了进一步降低 APK 的大小,请考虑而不是创建一个包含原生库所有版本的大型 APK,Gradle 会为您想要支持的每个 ABI 创建单独的 APK并且仅打包每个 ABI 需要的文件。如果您配置 ABI 拆分但没有像上面的代码示例一样指定 abiFilters 标志,Gradle 会构建原生库的所囿受支持 ABI 版本不过仅会打包您在 ABI 拆分配置中指定的版本。为了避免构建您不想要的原生库版本请为 abiFilters 标志和 ABI 拆分配置提供相同的 ABI 列表。

}

我要回帖

更多关于 studio新建项目sdk要多少 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信