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编译方式都大致过了一遍。
- Android studio的NDK开发基础
- Android Studio NDK开发基础
- android studio的ndk开发
- NDK开发基础①使用Android Studio编写NDK
- NDK开发基础①使用Android Studio编写NDK
- [Android]Android Studio上的NDK开发
- Android studio NDK开发
- Android Studio开发NDK
- Android Studio ndk开发
- Android studio开发NDK
- Android Studio NDK开发
- Android Studio NDK 开发
- android studio ndk 开发
- Android Studio NDK开发
- Android Studio NDK开发
- Android Studio NDK开发
- Android Studio NDK开发
- Android Studio NDK 开发
- Fiddler的实践心得(四):修改request的body
- unity检测键盘的按键名称-JS
- Oracle 之利用BBED跳过归档日志实现恢复(二)
- Tensorflow 自定义loss的情况下初始化部分变量
- Python入门(七):生成列表、条件过滤、多层表达式
- Android studio的NDK开发基础
- 深入理解Java中为什么内部类可以访问外部类的成员
- 111. Minimum Depth of Binary Tree
- vue搭建简单项目(新手操作)
- leecode 第一题 TWO SUM
- 《剑指offer》—1、二维数组中的查找
- 贪心算法-翻硬币
- 合并顺序表A和B,并且升序排序 到&Lc
- edittext的长度过长,给提示