Android基础概念的学习笔记

1 Android原生编程

1.1 基础概念的文档链接

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脚本的能力,但本身并不是使用某种编程语言开发的程序。

相关推荐
龙湾开发3 分钟前
计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 13.几何着色器(二)爆炸效果&修改图元类型
c++·笔记·学习·3d·图形渲染·着色器
ooppoop45633 分钟前
嵌入式学习笔记 D21:双向链表的基本操作
笔记·学习·链表
肥肠可耐的西西公主43 分钟前
前端(vue)学习笔记(CLASS 6):路由进阶
前端·vue.js·学习
Camellia031143 分钟前
嵌入式学习--江协51单片机day8
嵌入式硬件·学习·51单片机
冷崖1 小时前
网络学习-epoll(四)
网络·学习
moxiaoran57532 小时前
Python学习笔记--使用Django操作mysql
笔记·python·学习
3D霸霸2 小时前
Stable Diffusion 学习笔记02
笔记·学习·stable diffusion
虾球xz2 小时前
游戏引擎学习第291天:跳跃的怪物与占据的树木
c++·学习·游戏引擎
每天吃饭的羊3 小时前
学习源码?
学习
北温凉3 小时前
【学习笔记】机器学习(Machine Learning) | 第七章|神经网络(2)
笔记·机器学习