1.和大多shell文件一样,makefile中的#表示注释,一般都是#加要注释的内容。
2.ifdef...endif,表示如果定义了变量。例如:
# Only use ANDROID_BUILD_SHELL to wrap around bash.
ifdef ANDROID_BUILD_SHELL
SHELL := $(ANDROID_BUILD_SHELL)
else
SHELL := /bin/bash
endif
3.函数调用,很像变量的使用,也是以“$”来标识的,其语法如下:
$( )
或是
${ }
这里,就是函数名,make支持的函数不多。是函数的参数,参数间以逗号“,”分隔,而函数名和参数之间以“空格”分隔。函数调用以“$”开头,以圆括号或花括号把函数名和参数括起。感觉很像一个变量,是不是?函数中的参数可以使用变量,为了风格的统一,函数和变量的括号最好一样,如使用“$(subst a,b,$(x))”这样的形式,而不是“$(subst a,b,${x})”的形式。因为统一会更清楚,也会减少一些不必要的麻烦。
$(ANDROID_BUILD_SHELL),就是取得ANDROID_BUILD_SHELL的值。
4.a := b,将b的值赋给a。
5..SUFFIXES:是来定义或是删除后缀规则的。
.SUFFIXES: .hack .win
把后缀.hack和.win加入后缀列表中的末尾。
.SUFFIXES: # 删除默认的后缀
.SUFFIXES: .c .o .h # 定义自己的后缀
先清楚默认后缀,后定义自己的后缀列表。
6..DELETE_ON_ERROR
如果在Makefile中存在特殊目标“.DELETE_ON_ERROR”,make在执行过程中,如果规则的命令执行错误,将删除已经被修改的目标文件。
分享到:
相关推荐
`Android.mk`文件中可以定义多个编译模块,每个模块都由`include $(CLEAR_VARS)`开始,然后定义模块相关的变量,最后以`include $(BUILD_XXX)`结束。`$(CLEAR_VARS)`宏用于清除所有与编译相关的LOCAL_XXX变量,保留...
在Android源码编译过程中,开发者需要了解如何修改这些配置文件以定制自己的构建。例如,添加新模块、改变编译选项或优化性能。同时,理解如何使用`mm`(编译单个模块)和`m`(编译整个项目)等命令也非常重要。 ...
Android源码编译过程是Android开发中的核心环节,它涉及到一系列复杂的步骤,旨在将源代码转化为可以在Android设备上运行的二进制系统映像。这个过程对于开发者来说至关重要,因为它允许自定义和优化Android系统,以...
总的来说,Android源码编译是一个复杂而深入的过程,涉及多方面的技术知识。从源码下载、环境配置到编译和镜像制作,每个环节都需要开发者具备扎实的Linux基础、Git操作技能以及对Android系统结构的深刻理解。通过...
### Android源码编译make的错误处理 #### 一、概览 在进行Android源码编译的过程中,可能会遇到各种各样的错误。本文主要针对在Linux环境下编译Android 4.0.1版本源码时遇到的一些典型问题,提供详细的解决方案。 ...
在Android源码上编译APK是一个复杂但必要的过程,特别是当你需要开发具有系统权限的应用,例如修改系统时间或实现关机功能。以下是对整个流程的详细解释: 首先,你需要编译Android源码。这通常涉及到获取源码、...
在Eclipse开发环境中,Android源码编译后的调试工作也非常重要。Eclipse提供了几个关键视图:DDMS(Dalvik Debug Monitor Service)用于查看设备状态和内存信息;Java编辑视图是日常编码的主要界面;而Debug视图则在...
在《android源码编译及rom制作.pptx》这份文档中,主要讲解了如何进行Android源码的编译以及ROM的制作过程。这一过程对于那些希望深入了解Android操作系统工作原理、进行定制化开发或者想要为自己的设备创建个性化...
为了编写和编译C/C++代码,我们需要在`build.gradle`文件中配置NDK支持。打开`app/build.gradle`,在`defaultConfig`块中添加以下代码: ```groovy externalNativeBuild { ndkBuild { path 'src/main/jni/Android...
本文将详细介绍如何获取和编译Android系统的源码,以及在这个过程中可能遇到的关键知识点。 首先,获取Android系统源码通常需要通过Android开放源代码项目(AOSP)的官方仓库进行。你需要在本地设置一个Git环境,并...
* Makefile:makefile 文件,用于编译 Android 源码。 * bionic:bionic C 库,提供了基本的系统调用和库函数。 * bootable:启动引导相关代码,负责 Android 系统的启动过程。 * build:存放系统编译规则及 generic...
【压缩包子文件的文件名称列表】中的"external"可能是指Android源码树中的一个目录,通常包含用于构建Android系统的第三方库和组件。在这个目录下,可以找到libusb源码的相关构建脚本和配置文件,如`android.mk`,它...
`mm`是Android源码树中的一个脚本,它会自动定位并运行`Android.mk`文件,构建指定的模块。 - 编译完成后,会在`out`目录下生成对应的`.so`文件,这个文件将被Java代码加载并调用。 5. **Java层与JNI交互**: - ...
Android源码编译完成后,生成的系统映像可以烧录到设备上进行测试,也可以通过模拟器运行。这需要使用fastboot和adb工具,通过命令将系统映像传输到设备,并进行刷机。 对于初学者,理解和编译Android源码可能需要...
在Ubuntu环境下编译Android源码是一项复杂而关键的任务,它涉及...务必耐心细致,因为Android源码编译涉及的内容广泛且复杂。一旦成功编译,你将获得一个完整的Android系统镜像,可用于自定义设备或进一步的开发研究。
这个压缩包"Android系统源码的编译和分析.zip"包含三个重要的文件:Android源码分析.md、Android源码编译.md、Android源码下载.md,这些文件将帮助我们全面了解如何获取、编译以及解析Android的源代码。 首先,我们...
envsetup.sh 文件是 Android 编译过程中最重要的文件之一,该文件包含了多个函数,用于设置环境变量、检查产品和变量、设置文件路径、打印配置等。这些函数包括: * help():显示帮助信息 * get_abs_build_var():...
在Android 10及以上版本的源码中,构建Java代码和UI组件的过程相较于之前的版本有了一些变化,主要是引入了两种新的编译方式:Android.mk和Android.bp。这两种编译方式都是用于构建Android系统的模块,但它们各有...