Android studio的NDK开发基础

来源:互联网 发布:js router 编辑:程序博客网 时间:2024/06/01 11:47

环境

我用的是android studio 2.2.3版本,直接在SDK Tools 中选择安装 NDK 和 CMake 即可。
这里写图片描述

然后新建项目的时候,选择Include C++ Support 选项
这里写图片描述

我们可以发现新建的项目在main下会出现一个cpp目录,src目录下会出现一个CMakeLists.txt
这里写图片描述

CMakeList.txt编译方式

cpp目录就是你写相关sdk代码的地方,CMakeLists.txt就是CMake的编译规则配置文件。选择Make Project编译一下,
这里写图片描述
编译成功就会如下提示:
这里写图片描述

cpp目录下就是放c/cpp的源码,和之前jni目录类似,
只是源码之间操作的时候 include头文件的时候会需要include一个比较完整的路径。

例如:第一种情况才可以正常引用到需要的头文件。
这里写图片描述

当然自己添加的文件是用“”include,而系统的依然用<>include是没问题的。

CMakeList.txt讲解

然后我们来大致将一下CMakeList.txt

#设置CMake最低编译版本。 cmake_minimum_required(VERSION...)...#创建库add_library(#第一个参数是设置新建的库的名称xxx-native-lib#第二个参数是设置库类型,静态(STATIC)/共享 SHAREDSHARED#后面就是提供源码的相对路径src/main/cpp/native-lib.cpp)...#这个里面可以帮你找你需要链接的其他的库#因为系统库被包含在默认的搜索路径,你只需要指定要添加的公共NDK库名称。find_library(#第一个参数是设置路径变量的名称log-lib#第二个参数是指定你想让CMake找到NDK库名称log)...#指定要链接到你的库的库。你可以链接多个库,就像你在构建脚本的定义,建立第三方库或系统库。target_link_libraries(#第一个参数是指定目标库,一般就是你当前这个库native-lib#链接的到的指定库。${log-lib})

如果我们需要设置一个固定的编译目录,就可以如下操作

set(SDK_PATH ${CMAKE_SOURCE_DIR}/src/main/sdk_src/)

然后在add_library就可以简单的调用到目录文件了

add_library( # Sets the name of the library.             native-lib             # Sets the library as a shared library.             SHARED             # Provides a relative path to your source file(s).             # Associated headers in the same location as their source             # file are automatically included.              ${SDK_PATH}/util/time_util.c )

嗯基本CMake开发就是这样配置的。

Android.mk编译方式

后面我们再提一下之前写过的Android.mk,然后使用ndk直接编译的方式。

建立Android.mk,到cpp目录下,或者src任意目录其实都可以的,只是Android.mk里面对应的源码路径进行修改即可。

这里写图片描述

然后我们在cmd模式下,切换到这个Android.mk文件目录下,执行你ndk目录下安装的ndk-build.cmd文件(例如我的目录是 C:\android\sdk\ndk-bundle\build\ndk-build.cmd),如下图

这里写图片描述

执行就可以编译了,编译log会打印对应导入的.c、cpp文件,和.a,编译生成.so文件这里写图片描述

如果需要清理旧的生成文件,只需要在加关键字clean就可以了,例如

>C:\android\sdk\ndk-bundle\build\ndk-build.cmd clean

这样的话,在android studio,两种ndk编译方式都大致过了一遍。

0 0
原创粉丝点击