CMake与NDK搭配使用时,可以配置的部分变量:
1. `ANDROID_PLATFORM`:指定Android的目标版本,对应`$NDK/platforms/`目录下的版本。通常情况下是`defaultConfig`中的`minSdkVersion`,这样就能确保所有大于等于`minSdkVersion`的设备都可以使用编译生成的库。 但是也有例外,比如:当`ANDROID_ABI=arm64-v8a`时,即使`minSdkVersion`为`18`,但是`ANDROID_PLATFORM=android-21`,因为从API21开始才支持64位库。这里的版本直接决定了使用`$NDK/platforms`目录下哪个系统版本的库和头文件。
2. `ANDROID_STL`:指定使用的STL库,STL库不是Android系统自带的,若使用静态库(`c++_static`),则会链接进目标库;若使用动态库(c++_shared),Gradle会将动态库(libc++_shared.so)和目标库一起打包。详情可参考[C++ 库支持](https://developer.android.com/ndk/guides/cpp-support.html?hl=zh-cn)。
3. `ANDROID_ARM_NEON`:指定CMake是否构建支持`NEON`的目标库。API大于等于23时,默认值为true,否则为false。

Cmake编译时,是通过`$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin`下的交叉编译工具进行编译和链接,`arm-linux-androideabi-4.9`表示对应abi架构和位数,例如:arm64就是`aarch64-linux-android-4.9`。
而链接时所依赖的系统库,则是在`$NDK/platforms/${ANDROID_PLATFORM}/${abi}/usr/lib`目录下。

NDK Cmake的更多相关文章

  1. Android NDK笔记

    目录 Android NDK笔记 AOSP Android repository Android SDK / SDK Tools NDK cmake && ninja lldb adb ...

  2. Android NDK开发及OpenCV初步学习笔记

    https://www.jianshu.com/p/c29bb20908da Android NDK开发及OpenCV初步学习笔记 Super_圣代 关注 2017.08.19 00:55* 字数 6 ...

  3. Android平台MediaCodec避坑指北

    https://www.jianshu.com/p/5d62a3cf0741 最近使用MediaCodec做编解码H264,写一点东西以免自己再次掉坑. 先说一下具体环境,使用的是,Windows10 ...

  4. (转载)Android之有效防止按钮多次重复点击的方法(必看篇)

    为了防止测试妹子或者用户频繁点击某个按钮,导致程序在短时间内进行多次数据提交or数据处理,那到时候就比较坑了~ 那么如何有效避免这种情况的发生呢? 我的想法是,判断用户点击按钮间隔时间,如果间隔时间太 ...

  5. Windows环境下使用Cmake ndk编译fdk-aac

     一.废话 最近学习,第一步就是编译.我们需要编译FFmpag,x264,fdk_aac,下面是x264,网上说的很多都是几百年前的,我亲测完美可用 还是那句话 我能力有限,但是我希望我写的东西能够让 ...

  6. c++/cmake /Android NDK 动态链接库交叉编译笔记

    项目使用cmake管理,由于项目的需要,核心代码要求跨 Linux/Windows/Android 三平台.Windows和Linux都好说,但Android NDK费了一番功夫还是没有解决.临时的解 ...

  7. JNI NDK (AndroidStudio+CMake )实现C C++调用Java代码流程

    JNI/NDK Java调用C/C++前言  通过第三篇文章讲解在实际的开发过程中Java层调用C/C++层的处理流程.其实我们在很大的业务里也需要C/C+ +层去调用Java层,这两层之间的相互调用 ...

  8. android studio使用CMake和NDK,实现应用自身被卸载时打开某一网址

    实现应用自身被卸载时打开某一网址的c代码 MyActivity: public class MyActivity extends Activity { /** * Called when the ac ...

  9. AndroidStudio2.2 Preview3中NDK开发之CMake和传统 JNI在目录结构和配置文件上的区别(转载)

    自从AndroidStudio更新到2.2,就有了CMake和传统JNI两种开发NDK的方法,主要就是在目录结构和build.gradle上的区别,下面我们将分别介绍目录区别和build.gradle ...

随机推荐

  1. 个人永久性免费-Excel催化剂功能第56波-获取Excel对象属性相关自定义函数

    之前零散开发过一些自定义函数获取Excel对象属性,此次再细细地把有价值的属性都一一给开发完成,某些场景下,有这些小函数还是可以比较方便地实现一些通过Excel界面没法轻松获取到的信息. 修复与更新 ...

  2. springboot启动代码(自用)

    1.springboot配置解释 @AutoConfigurationPackage //自动配置包 //@Import(AutoConfigurationPackages.Registrar.cla ...

  3. 俩台服务器搭建redis集群5.0.4

    俩台服务器搭建redis集群 1.俩服务器分别新建目录:usr/local/redis-cluster 2.下载源码并解压编译(使用redis版本5.0.4) 3.tar xzf redis-5.0. ...

  4. EF Core懒人小技巧之拒绝DbSet

    前言 最近在项目中使用EF Core的频率越来越高,当项目比较大的时候,疯狂往DbContext中加各种DbSet,你会不会特难受?如果你是一键生成的大佬,那么请忽略本文.本文旨在不写 DbSet,那 ...

  5. SSM整合环境搭建demo

    1.项目目录结构 2.项目中用的jar包 3.web.xml(其中主要配置spring与springmvc) <?xml version="1.0" encoding=&qu ...

  6. rabbitMQ_helloworld(一)

    在下图中,“P”是我们的生产者,“C”是我们的消费者.中间的框是队列 - RabbitMQ代表消费者的消息缓冲区. 本例使用maven构建项目,在pom.xml中添加一下依赖 <dependen ...

  7. Linux 文件系统相关的基本概念

    本文介绍 Linux 文件系统相关的基本概念. 硬盘的物理组成 盘片硬盘其实是由单个或多个圆形的盘片组成的,按照盘片能够容纳的数据量,分为单盘(一个硬盘里面只有一个盘片)或多盘(一个硬盘里面有多个盘片 ...

  8. UR机器人通信--上位机通信(python)

    一.通信socket socket()函数 Python 中,我们用 socket()函数来创建套接字,语法格式如下: socket.socket([family[, type[, proto]]]) ...

  9. jenkins部署自动化项目备注

    一.定时任务部署: 第一个*表示分钟,取值0~59 第二个*表示小时,取值0~23 第三个*表示一个月的第几天,取值1~31 第四个*表示第几月,取值1~12 第五个*表示一周中的第几天,取值0~7, ...

  10. git的使用学习笔记

    一.git Git 是一个开源的分布式版本控制系统,项目版本管理工具,可以在本地提交修改再合并到主分支上,最为出色的是它的合并跟踪(merge tracing)能力. 可以通过Linux命令进行增加, ...