Android NDK开发中常用的gradle配置

文章目录

  • externalNativeBuild
    • 1.配置通用的 CMake 构建选项
    • 2.指定 CMakeLists.txt 文件的位置和 CMake 版本
  • 指定ndk版本

externalNativeBuild

下面的gradle代码包含两个externalNativeBuild {}

android {defaultConfig {externalNativeBuild {cmake {cppFlags ""}}}externalNativeBuild {cmake {path "src/main/cpp/CMakeLists.txt"version "3.22.1"}}}

下面来区分两个什么联系和区别。

1.配置通用的 CMake 构建选项

在 Android 开发中,CMake 通常用于构建使用 C++ 编写的本地代码。
build.gradle 文件中,使用了 externalNativeBuild 块配置 CMake 构建。

externalNativeBuild {cmake {cppFlags ""}
}

这部分代码表明正在配置 CMake 构建,并在其中设置了一些 C++ 编译标志(cppFlags)。
解析一下各个部分:

  • externalNativeBuild 是一个 Android Gradle 插件提供的用于配置本地构建系统的部分。
  • cmake 表明希望使用 CMake 进行构建。
  • cppFlags 允许设置 C++ 编译器的标志。在这里,设置的是一个空字符串,表示没有额外的标志。

可以根据需要,将适当的编译标志添加到 cppFlags 中,以满足的项目需求。这可能包括优化标志、宏定义等。

例如:

externalNativeBuild {cmake {cppFlags "-O3 -DDEBUG_MODE"}
}

-O3 是一个优化标志,而 -DDEBUG_MODE 是一个用于定义调试模式的宏。

2.指定 CMakeLists.txt 文件的位置和 CMake 版本

externalNativeBuild {cmake {path "src/main/cpp/CMakeLists.txt"version "3.22.1"}
}

这个块用于更详细地配置 CMake 构建。

  • path 指定了 CMakeLists.txt 文件的位置,该文件包含了关于如何构建本地代码的指令。在这里,它指定了 “src/main/cpp/CMakeLists.txt”。
  • version 指定了所使用的 CMake 版本。在这里,它指定了 “3.22.1” 版本。

这个块主要用于告诉 Gradle 在构建本地代码时应该使用哪个 CMakeLists.txt 文件以及使用哪个版本的 CMake。

指定ndk版本

在 Gradle 中指定 NDK(Android Native Development Kit)版本,可以使用 android.ndkVersion 属性。通常是在 Android Gradle 插件的 android 配置块中设置:

android {...ndkVersion "21.4.7075529" // 指定你想要的 NDK 版本...
}

除了 ndkVersion 属性之外,还可以在 local.properties 文件中使用 ndk.dir 属性指定 NDK 的路径。例如:

ndk.dir=/path/to/your/ndk

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/177608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【三维重建】摄像机标定(张正友相机标定法)

摄像机标定的目的是为了求解摄像机的内、外参数 求解投影矩阵M 通过建立特殊的场景,我们能过得到多对世界坐标和对应图像坐标 根据摄像机几何可知 : ,M是一个3*4的矩阵,令 通过一对点可以得到两个方程组,M中一共有11个…

SpringBoot : ch09 整合Redis

前言 当你的应用程序需要一个快速、可扩展的内存数据库时,Redis是一个非常流行的选择。通过将Redis与Spring Boot集成,你可以轻松地利用Redis的功能,例如缓存、会话存储和消息队列等,从而提升应用程序的性能和可伸缩性。 在本教…

1043 Is It a Binary Search Tree (二叉搜索树建树,性质)

题意:给定一个二叉树的前序遍历,判断是否为二叉搜索树 (碎碎念:一直拿不到满分,尝试了多种解法,最后挑了一个最常规的解法去一直debug才满分通过了,,这题花费了快4个小时了&#xf…

Java Elasticsearch 指标聚合

Elasticsearch指标聚合,就是类似SQL的统计函数,指标聚合可以单独使用,也可以跟桶聚合一起使用,下面介绍Java Elasticsearch指标聚合的写法。 实例: // 首先创建RestClient,后续章节通过RestClient对象进行…

时间序列预测学习笔记

目录 魔改测试代码: Basisformer论文介绍 魔改测试代码: import torch.nn as nn import torch.nn.utils.weight_norm as wn import matplotlib.pyplot as plt import torch import torch.nn.functional as F import time import math import numpy as npclass MLP_bottle(…

mongodb查询数据库集合的基础命令

基础命令 启动mongo服务 mongod -f /usr/local/mongodb/mongod.conf //注意配置文件路径停止mongo服务 关闭mongodb有三种方式: 一种是进入mongo后通过mongo的函数关闭; use admin db.shutdownServer()一种是通过mongod关闭; mongod --s…

Selenium 学习(0.14)——软件测试之测试用例设计方法——因果图法2【基本步骤及案例】

1、因果图法的基本步骤 2、案例分析 1)分析原因和结果 2)关联原因和结果 投入1元5角或2元,按下“可乐”,送出“可乐”【暂时忽略找零】 投入2元,按下“可乐”或“雪碧”。找零5角,送出“可乐”或“雪…

软件测试测试文档编写

在软件测试中的流程中,测试文档也是一个重要的流程,所以测试人员也需要学习测试文档的编写和阅读。 一、定义:   测试文档(Testing Documentation)记录和描述了整个测试流程,它是整个测试活动中非常重要…

vscode注释插件「koroFileHeader」

前言 在vscode上进行前端开发,有几个流行的注释插件: Better CommentsTodo TreekoroFileHeaderDocument ThisAuto Comment Blocks 在上面的插件中我选择 koroFileHeader 做推荐,原因一是使用人数比较多(最多的是 Better Commen…

NAS-DIP: Learning Deep Image Prior with Neural Architecture Search

NAS-DIP: 用神经结构搜索学习深度图像先验 论文链接:https://arxiv.org/abs/2008.11713 项目链接:https://github.com/YunChunChen/NAS-DIP-pytorch Abstract 最近的研究表明,深度卷积神经网络的结构可以用作解决各种逆图像恢复任务的结构…

《算法通关村——位运算在查找重复元素中的妙用》

《算法通关村——位运算在查找重复元素中的妙用》 在海量数据中,此时普通的数组、链表、Hash、树等等结构有无效了 ,因为内存空间放不下了。而常规的递归、排序,回溯、贪心和动态规划等思想也无效了,因为执行都会超时&#xff0c…

C#-关于日志的功能扩展

目录 一、日志Sink(接收器) 二、Trace追踪实现日志 三、日志滚动 一、日志Sink(接收器) 安装NuGet包:Serilog Sink有很多种,这里介绍两种: Console接收器(安装Serilog.Sinks.Console); File接收器(安装…

Python批量裁剪图像尺寸、压缩图像大小代码实现

from PIL import Image import os import iodef resize_images_in_directory(directory, target_size(240, 240), max_file_size_kb500): #保证处理后的图像集 大小为240*240 且不超过 500Kfor filename in os.listdir(directory):if filename.lower().endswith((.png, .jpg, .…

「go module」一文总结 go mod 入门使用

文章目录 什么是 Go Modules为什么要使用 Modules怎么使用前置条件项目初始化如何安装/管理依赖?依赖安装 go get版本选择方式 替换版本 replace间接依赖 && go mod tidy远程代理 总结 什么是 Go Modules Module 是 Go 的依赖管理工具。 核心概念 Module…

云原生系列Go语言篇-泛型Part 1

“Don’t Repeat Yourself”是常见的软件工程建议。与其重新创建一个数据结构或函数,不如重用它,因为对重复的代码保持更改同步非常困难。在像 Go 这样的强类型语言中,每个函数参数及每个结构体字段的类型必须在编译时确定。这种严格性使编译…

使用vue脚手架创建vue项目

Vue是一个流行的前端框架,可以用简洁的语法和组件化的思想开发单页面应用。Vue脚手架是一个官方提供的命令行工具,它可以帮你快速搭建和配置vue项目的基本结构和依赖。 本文介绍如何使用vue脚手架创建一个vue2项目,并选择一些常用的功能和插件…

git修改远程地址

你好!如果你想在提交时更改项目的提交地址,你可以按照以下步骤进行操作,具体的步骤可能因使用的版本控制工具而异,以下是在Git中的示例: 查看当前远程仓库地址: 使用以下命令查看当前项目的远程仓库地址&am…

Java开源ETL工具-Kettle

一、背景 公司有个基于Kettle二次开发产品主要定位是做一些数据ETL的工作, 所谓的ETL就是针对数据进行抽取、转换以及加载的过程,说白了就是怎么对原始数据进行清洗,最后拿到我们需要的、符合规范的、有价值的数据进行存储或者分析的过程。 一般处理ETL的…

可观测性项目开发与学习ing

http1,2,3的区别 HTTP/1.0、HTTP/1.1、HTTP/2 和 HTTP/3 是不同版本的协议,它们在以下方面有所不同: HTTP/1.0: 是最早的版本,主要特点如下: 每个请求和响应都需要建立一个新的 TCP 连接。不支持持久连接(Keep-Alive&…

【从浅识到熟知Linux】基本指令之man、uname和bc

🎈归属专栏:从浅学到熟知Linux 🚗个人主页:Jammingpro 🐟每日一句:干完饭写篇博客放松一下。 文章前言:本文介绍man、uname和bc指令用法并给出示例和截图。 文章目录 man基本语法功能选项无选项…