计算机系统应用教程网站

网站首页 > 技术文章 正文

Android Studio NDK(工程配置篇) android ndk教程

btikc 2024-10-27 08:33:58 技术文章 7 ℃ 0 评论

在Android Studio中开发NDK和以往的Eclipse ADT不同,现在Android Studio除了支持Android.mk之外还支持使用CMake来作为其c/c++的构建工具。

Android.mk

用于向构建系统描述源文件和共享库。 它实际上是一小段一小段的Makefile 片段。主要用于定义构建系统和环境变量所未定义的项目范围设置。

配置项目

在Android Studio(截止2.3.3版本)中使用Android.mk需要自己手动来进行配置(Gradle)。

图1

如图1

打开project中需要添加ndk的module的build.gradle,

图中的配置意思是:

1、 android.debugConfig.externalNativeBuild

配置编译过程的参数

可以添加如下图2的配置:

图2

如果熟悉c/c++开发,应该对cflag/cppflag这些参数不陌生。具体需要根据项目来进行配置。比如需要使用c++11

则可以配置:

cppFlags "-std=c++11 "

在图1中配置的abiFilters是指定编译指定cpu架构x86与armeabi-v7a两种。

2、 android.debugConfig.ndk

装载打包配置

在图1中的配置表示只会将x86与armeabi-v7a打包进入apk,

这个配置可以保证,如果引用的第三方库存在全架构的库文件,而不会把所有的都打包进入apk中。

3、 android.externalNativeBuild

构建配置文件路径

这个路径可以随意填写,相对路径地址与build.gradle文件同级。

编写好Android.mk之后,当我们在执行打包的时候就会先将配置的静态/动态编译出来。

跨平台的编译配置工具,它可以根据配置来生成不同平台、不同编译器的Makefile、vs sln等。通过编写CMakeLists.txt可以控制编译过程。

Cmake的配置方法与Android.mk的方式基本一样。区别只在两个externalNativeBuild中的ndkBuild换成cmake就可以了。

CMakeLists.txt的语法相对比Android.mk更简单。

使用的比较多的配置就下面几种:

set(x y)

设置一个变量x 值为y

file(GLOB x y z …)

集合x存放有y、z…,一般涌来配置自己的源文件

add_library(x STATIC/SHARED IMPORTED)

添加一个静态/动态库,方式为导入

set_target_properties(x PROPERTIES IMPORTED_LOCATION y)

配合上面的使用设置导入路径

include_directories(x)

引入头文件路径x, 这样我们自己编写的代码中能够使用 #include <> 而不需要使用#include ""

add_subdirectory(x)

会去查找src/main/cpp/librtmp目录下查找CMakeLists.txt文件,并加入到当前构建中(分模块)

target_link_libraries(x y z …)

链接库(就是配置我们自己编写的c/c++的依赖,和java中配置jar包一个意思)

给大家看一个我工程当中用到的一个例子:

在例子中第四行我引入了另一个CMakeLists.txt,在这个txt中会编译一个静态库,能够作为预编译库来使用:

......

(CMakeLists.txt高亮是我自己编写的一个IDEA/Android Studio插件)

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表