Android基础概念的学习笔记

news/2025/2/12 9:00:50/

1 Android原生编程

1.1 基础概念的文档链接

  • Android原生应用的一般流程 & 项目文件结构
  • Android.mk文件语法
  • Application.mk文件介绍

1.2 【Q】:ndk-build命令对于Application.mkAndroid.mk文件的处理顺序是什么样的呀?

Note:
Google的官方文档里面并没有没有十分明确而详细地说明ndk-build对于Application.mkAndroid.mk文件的处理顺序。

(1)关于ndk-build如何处理Android.mkApplication.mk文件的一些关键点

  1. Application.mk:这个文件是可选的,若存在则通常位于项目的jni/目录中。Application.mk文件定义了适用于整个项目的设置,如目标Android平台版本、要构建的CPU架构类型等。如果Application.mk存在于jni/目录下,ndk-build会首先读取它。
  2. Android.mk:这些文件位于项目的各个子目录中,并定义了如何编译这些目录中的源代码。每个Android.mk文件通常负责一个子项目或一个库。
  3. 执行顺序
    • 当在项目根目录中执行ndk-build时,它首先查找jni/目录中的Application.mk(如果存在)。
    • 然后,它会递归地搜索jni/目录及其子目录中的所有Android.mk文件,并根据这些文件中定义的依赖关系来确定编译顺序。
    • 每个Android.mk文件通常会被单独处理,以构建该文件定义的模块。
    • 如果Android.mk文件中定义了模块间的依赖关系,ndk-build将按照依赖顺序进行编译。

(2)具体的处理顺序可以通过查看ndk-build的源代码来了解

Phind:
虽然Google的官方文档没有明确说明这个处理顺序,不过,这个处理顺序是由ndk-build的源代码决定的,可以查看其源代码来了解。你可以在以下链接找到ndk-build的源代码:
[build/core - platform/ndk - Git at Google]
在这个链接中,你可以找到ndk-build的源代码,包括Application.mkAndroid.mk文件的处理顺序。

1.3 ndk-build:本质上是由make调用的一系列Makefile脚本

Q:“ndk-build工具实际上是.mk脚本”,是吗?

Claude-instant-100k:
是的,你的理解是正确的。
可以这么总结ndk-build:

  • ndk-build本身是一系列.mk脚本文件。
  • 这些.mk脚本文件使用Make语法定义了 Android NDK 项目构建的规则和依赖。
  • 在执行ndk-build命令时,实际上会在底层调用 gnu-make 工具。
  • Gnu-make 会解析和执行特定的.mk脚本,从而实现自动化构建 Android NDK 项目。
  • Gnu-make 具体在Windows上使用的是make.exe
  • 所以ndk-build本质上利用了Make语法的优势,实现了一个自动构建 Android NDK C/C++ 项目的脚本系统。
  • 因此并不是说ndk-build自己是用某种编程语言编写的,而是采用了Make这个DSL(领域特定语言)来进行自动构建流程。

总之,你说“ndk-build实际上是.mk脚本”,这个理解是正确的。它利用了Make脚本的能力,但本身并不是使用某种编程语言开发的程序。


http://www.ppmy.cn/news/1268779.html

相关文章

Python3开发笔记(简洁版)

一、开发编辑器 1. pycharm 2. IDLE(Python自带软件) 方法:Microsoft Store搜索 Python 安装 二、数据类型 Python中有以下几种主要的数据类型: 数字(Numbers)、 字符串(Strings&#xff09…

C++RTTI(运行时类型识别)介绍

介绍 RTTI(Run-Time Type Information)是C中的一个重要特性,它允许在运行时获取类型信息。 RTTI提供了两个主要的操作:dynamic_cast和typeid。这些操作在运行时检查类型,允许我们在运行时决定如何处理对象。 dynami…

【图像拼接】论文精读:A view-free image stitching network based on global homography

第一次来请先看这篇文章:【图像拼接(Image Stitching)】关于【图像拼接论文精读】专栏的相关说明,包含专栏使用说明、创新思路分享等(不定期更新) 图像拼接系列相关论文精读 Seam Carving for Content-Aware Image ResizingAs-Rigid-As-Possible Shape ManipulationAdap…

Python脚本打包

一.Windows操作系统 Python脚本打包 1.cmd窗口执行如下指令:pip install pyinstaller C:\Users\ZhuQing>pip install pyinstaller2.执行以下指令验证pyinstaller是否安装成功(pyinstaller) C:\Users\ZhuQing>pyinstaller3.被打包程序…

风速预测(三)EMD-LSTM-Attention模型

目录 1 风速数据EMD分解与可视化 1.1 导入数据 1.2 EMD分解 2 数据集制作与预处理 2.1 先划分数据集,按照8:2划分训练集和测试集 2.2 设置滑动窗口大小为7,制作数据集 3 基于Pytorch的EMD-LSTM-Attention模型预测 3.1 数据加载&#…

BUUCTF crypto做题记录(4)新手向

目录 一、大帝的密码武器 二、Windows系统密码 三、信息化时代的步伐 四、凯撒?替换?呵呵! 一、大帝的密码武器 下载的文件叫zip,应该是提示文件的后缀名是zip,把名字改成1.zip或者其他也行,主要保证后缀名是zip就…

springboot应用,cpu高、内存高问题排查

前几天,排查了2个生产问题。一个cpu高,一个内存高。今天把解决过程整理一下 文章目录 1、cpu高问题排查1.1、获取栈日志1.2、分析栈日志 2、内存高问题排查2.1、dump日志分析2.2、堆内存使用情况2.3、解决方案2.4、arthas trace解决问题2.5、总结 1、cp…

EasyRecovery2024苹果电脑mac破解版安装包下载

EasyRecovery是一款操作安全、价格便宜、用户自主操作的非破坏性的只读应用程序,它不会往源驱上写任何东西,也不会对源驱做任何改变。它支持从各种各样的存储介质恢复删除或者丢失的文件,其支持的媒体介质包括:硬盘驱动器、光驱、…