AndroidStudio使⽤NDK编译CC++代码使⽤原⽣库
主要内容:
创建⽀持 C/C++ 的新项⽬
向现有项⽬添加 C/C++ 代码并编译
使⽤CMake和CMakeLists组合
使⽤ndk-build、、Application.mk组合
要为应⽤编译和调试原⽣代码,⾸先需要以下组件:
:这套⼯具集允许您为 Android 使⽤ C 和 C++ 代码,并提供众多平台库,让您可以管理原⽣ Activity 和访问物理设备组件,例如传感器和触摸输⼊。
:⼀款外部构建⼯具,可与 Gradle 搭配使⽤来构建原⽣库。如果您只计划使⽤ ndk-build,则不需要此组件。
:⼀种调试程序,Android Studio 使⽤它来。
没有,点SDK Manager去下载。
创建⽀持 C/C++ 的新项⽬
Android Studio 2.2 或更⾼版本,⽤于构建原⽣库的默认⼯具是 CMake。
创建⽀持原⽣代码(C/C++)的项⽬需要做⼀下步骤:
1. 在向导的 Configure your new project 部分,选中 Include C++ Support 复选框。
2. 点击 Next。
3. 正常填写所有其他字段并完成向导接下来的⼏个部分。
4. 在向导的 Customize C++ Support 部分,您可以使⽤下列选项⾃定义项⽬:
C++ Standard:使⽤下拉列表选择您希望使⽤哪种 C++ 标准。选择 Toolchain Default 会使⽤默认的 CMake 设置。
Exceptions Support:如果您希望启⽤对 C++ 异常处理的⽀持,请选中此复选框。如果启⽤此复选框,Android Studio 会将 -fexceptions 标志添加到模块级 adle ⽂件的 cppFlags 中,Gradle 会将其传递到 CMake。
Runtime Type Information Support:如果您希望⽀持 RTTI,请选中此复选框。如果启⽤此复选框,Android Studio 会将 -frtti 标志添加到模块级 adle ⽂件的 cppFlags 中,Gradle 会将其传递到 CMake。
5. 点击 Finish。
在 Android Studio 完成新项⽬的创建后,请从 IDE 左侧打开 Project 窗格并选择 Android 视图。如图 所⽰,Android Studio 将添加cpp 和 External Build Files 组:
注:此视图⽆法反映磁盘上的实际⽂件层次结构,⽽是将相似⽂件分到⼀组中,简化项⽬导航。
在 cpp 组中,您可以到属于项⽬的所有原⽣源⽂件、标头和预构建库。对于新项⽬,Android Studio 会创建⼀个⽰例 C++ 源⽂件native-lib.cpp,并将其置于应⽤模块的 src/main/cpp/ ⽬录中。本⽰例代码提供了⼀个简单的 C++ 函数 stringFromJNI(),此函数可以返回字符串“Hello from C++”。
在 External Build Files 组中,您可以到 CMake 或 ndk-build 的构建脚本。与 adle ⽂件指⽰ Gradle 如何构建应⽤⼀
样,CMake 和 ndk-build 需要⼀个构建脚本来了解如何构建您的原⽣库。对于新项⽬,Android Studio 会创建⼀个 CMake 构建脚本,并将其置于模块的根⽬录中。
点击 Run 后,Android Studio 将在您的 Android 设备或者模拟器上构建并启动⼀个显⽰⽂字“Hello from C++”的应⽤。
向现有项⽬添加 C/C++ 代码并编译
使⽤CMake和CMakeLists组合构建native原⽣代码
创建新的原⽣源⽂件(c/c++源⽂件)
要在应⽤模块的主源代码集中创建⼀个包含新建原⽣源⽂件的 cpp/ ⽬录,请按以下步骤操作:
1. 从 IDE 的左侧打开 Project 窗格并从下拉菜单中选择 Project 视图。
2. 导航到 您的模块-> src,右键点击 main ⽬录,然后选择 New -> Directory。
3. 为⽬录输⼊⼀个名称(例如 cpp)并点击 OK。
4. 右键点击您刚刚创建的⽬录,然后选择 New -> C/C++ Source File。
5. 为您的源⽂件输⼊⼀个名称,例如 native-lib。
6. 从 Type 下拉菜单中,为您的源⽂件选择⽂件扩展名,例如 .cpp。
1. 点击 Edit File Types ,您可以向下拉菜单中添加其他⽂件类型,例如 .cxx 或 .hxx。在弹出的 C/C++ 对话框中,从 Source
Extension 和 Header Extension 下拉菜单中选择另⼀个⽂件扩展名,然后点击 OK。
7. 如果您还希望创建⼀个标头⽂件,请选中 Create an associated header 复选框。
8. 点击 OK。
创建 CMake 构建脚本
1. 从 IDE 的左侧打开 Project 窗格并从下拉菜单中选择 Project 视图。
2. 右键点击 您的模块 的根⽬录并选择 New > File。
3. 输⼊“”作为⽂件名并点击 OK。
注:CMake 构建脚本是⼀个纯⽂本⽂件,必须将其命名为 。
要指⽰ CMake 从原⽣源代码创建⼀个原⽣库,请将 和 命令添加到您的构建脚本中:
# Sets the minimum version of CMake required to build your native library.android模拟点击
# This ensures that a certain set of CMake features is available to
# your build.
cmake_minimum_required(VERSION 3.4.1)
# Specifies a library name, specifies whether the library is STATIC or
# SHARED, and provides relative paths to the source code. You can
# define multiple libraries by adding multiple add.library() commands,
# and CMake builds them for you. When you build your app, Gradle
# automatically packages shared libraries with your APK.
add_library( # Specifies the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/native-lib.cpp )
在Java代码中加载库
static {
System.loadLibrary(“native-lib”);
}
gradle关联CMake
使⽤as UI功能菜单
1. 从 IDE 左侧打开 Project 窗格并选择 Android 视图。
2. 右键点击您想要关联到原⽣库的模块(例如 app 模块),并从菜单中选择 Link C++ Project with Gradle。从下拉菜单中,选择
CMake。使⽤ Project Path 旁的字段为您的外部 CMake 项⽬指定 脚本⽂件。
⼿动配置 Gradle
要⼿动配置 Gradle 以关联到您的原⽣库,您需要将 externalNativeBuild {} 块添加到模块级 adle ⽂件中,并使⽤ cmake {} 对其进⾏配置:
android {
...
defaultConfig {...}
buildTypes {...}
// Encapsulates your external native build configurations.
externalNativeBuild {
// Encapsulates your CMake build configurations.
cmake {
// Provides a relative path to your CMake build script.
path ""
}
}
}
使⽤ndk-build、、Application.mk组合构建native代码
创建jni⽂件夹
你的模块(⽐如app模块),右键菜单->New->Folder->JNI Folder,创建JNI ⽂件夹。
jni⽬录下创建C/C++源⽂件
参照上⾯CMake部分所说的如何创建原⽣源⽂件
:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)
:
APP_ABI :=all
最后的⽂件结构下
配置gradle
使⽤菜单
1. 从 IDE 左侧打开 Project 窗格并选择 Android 视图。
2. 右键点击您想要关联到原⽣库的模块(例如 app 模块),并从菜单中选择 Link C++ Project with Gradle。从下拉菜单中,选择ndk-
build。使⽤ Project Path 旁的字段指定Android.mk⽂件路径。
⼿动配置
android {
.
..
defaultConfig {...}
buildTypes {...}
externalNativeBuild {
ndkBuild {
path 'src/main/jni/Android.mk'
}
}
}
demo地址
as使⽤的是3.1.4

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。