您的位置:首页 > 移动开发 > Android开发

Android studio的NDK开发基础

2017-02-22 12:24 225 查看

环境

我用的是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)/共享 SHARED
SHARED
#后面就是提供源码的相对路径
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编译方式都大致过了一遍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android ndk android studio
相关文章推荐