最近忙啊,好久没有写博客了,都不知道如何写了,今天就随便写点,不要介意哈!
我们就了解一下Android.mk文件中的内容啦!
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_STATIC_JAVA_LIBRARIES := com.android.phone.common
LOCAL_PACKAGE_NAME := Contacts
LOCAL_CERTIFICATE := shared
LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags
include $(BUILD_PACKAGE)
# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))
我们对以上代码解释一下:
1. LOCAL_PATH := $(call my-dir)
作用:用于在查找源文件。其中“my-dir”是由编译系统提供的宏函数,用于返回当前的路径(即包含Android.mk的文件目录)。
2. include $(CLEAR_VARS)
作用:清除许多LOCAL_XXX变量(例如:LOCAL_MODULE,LOCAL_SRC_FILES等等)。其中“CLEAR_VARS”是由编译系统提供的。我们可以在android的目录下的/build/core/config.mk文件中看到其定义,为CLEAR_VARS :=$(BUILD_SYSTEM)/clear_vars.mk。
3. LOCAL_MODULE_TAGS := optional
作用:指定该模块在哪个版本下编译。LOCAL_MODULE_TAGS :=user/ eng /tests/ optional
user:指定该模块只在user版本下才编译
eng:指定该模块只能在eng版本下才编译
tests:指定该模块只能在tests版本下才编译
optional:指该模块在所有版本下都编译
4.
LOCAL_SRC_FILES := $(call all-java-files-under, src)
这是要编译的源代码文件列表。只要列出要传递给编译器的文件,因为编译系统会自动计算依赖。
all-java-files-under在definitions.mk中定义(在build/core中)
5. LOCAL_STATIC_JAVA_LIBRARIES := com.android.phone.common
作用:引入第三方jar包
语法:LOCAL_STATIC_JAVA_LIBRARIES :=library_name
其中library_name可以理解为一个命名空间
所以引入com.android.phone.common,这样就可以使用com.android.phone.common中的类文件了。
6. LOCAL_PACKAGE_NAME := Contacts
这个变量表示了这个包的名字,即这个文件最终生成的apk的名称
7.LOCAL_CERTIFICATE := shared
指定签名时以那种密钥签名。有platform、shared、media、testkey
8. LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags
作用主要是压缩、优化、混淆类文件,具体的功能还不理解。
9. include $(BUILD_PACKAGE)
作用是将该目录下的模块编译成package(即apk文件),默认存在/system/app下。
如果是include $(BUILD_SHARED_LIBRARY),表示将目录下的文件编译为共享库文件(即so档),默认存在/system/lib下。
10. include $(call all-makefiles-under,$(LOCAL_PATH))
表示需要build该目录下的子目录的文件,这样编译系统就会在当前目录下的子目录寻找Android.mk来编译so库等其他程序。
就写到这了,其中有些也不是很了解。后续继续深入学习!!!!!
分享到:
相关推荐
《跟我一起写makefile》和《gnumakefile》是两本关于makefile的重要学习资料,它们涵盖了构建自动化工具make的使用、配置以及优化等多个方面。makefile是软件开发中的核心部分,它允许开发者通过简洁的规则定义来...
这个压缩包“Makefile学习参考资料.zip”包含了两份PDF文档,分别是“跟我一起学Makefile.pdf”和“gun_make.pdf”,很可能是关于Makefile的基础教程和GNU Make的官方文档。 在Makefile中,最重要的概念是目标...
9. 开发者对makefile的掌握程度 能否熟练编写makefile,也是评价一个开发者是否具备完成大型工程能力的标志之一。在处理包含大量源文件的大型项目时,一个合理配置的makefile显得尤为重要。 通过以上知识点的概述,...
《Makefile学习手册》是一本专门针对Makefile开发的详细指南,旨在帮助读者从基础到深入地理解并掌握这一强大的构建工具。Makefile是软件工程中用于自动化编译和链接过程的重要文件,尤其在Unix/Linux环境中广泛使用...
学习Makefile不仅是掌握其语法,更重要的是理解其背后的编译和链接机制。通过合理组织Makefile,可以高效地管理和自动化复杂的构建过程。对于程序员来说,了解Makefile是走向专业化的必经之路。特别是当涉及到跨平台...
《makefile学习三件套 电子书》是一个针对makefile技术的综合学习资源,它包含了三个核心部分:《gnu make》、《GNU make中文手册》和《跟我一起写Makefile》。这些文档旨在帮助读者深入理解和掌握makefile的编写与...
### Make工具及makefile规则学习 #### 一、Make工具的功能 Make工具是一种自动化构建工具,主要用于管理和构建大型软件项目。其主要功能包括: - **避免不必要的重复编译**:通过检查文件的时间戳来确定哪些文件...
Makefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料....
* 学习曲线陡峭:Makefile 的语法非常复杂,需要花费一些时间来学习和掌握。 * 不好 debug:Makefile 的错误信息不够明确, debug 相对困难。 Makefile 是一个功能强大且灵活的自动化编译工具,在软件开发过程中...
Makefile学习笔记 Makefile是一个编译系统自动构建工具,它可以根据源文件的变化自动编译和链接对象文件,并生成执行文件。Makefile文件包含了一系列的规则和命令,这些规则和命令描述了如何从源文件生成目标文件。...
Makefile学习教程: 跟我一起写 Makefile 0 Makefile概述 0.1 关于程序的编译和链接 1 Makefile 介绍 1.1 Makefile的规则 1.2 一个示例 1.3 make是如何工作的 1.4 makefile中使用变量 1.5 让make自动推导 ...
make中文手册等 小测试: # Readme: # use: make config # use: make dir # use: make # use: make clean # use: make rebuild # use: make cleanall # use: make test # use: make
压缩包中的三份PDF文件分别对应以上三本书的内容,它们构成了一个完整的makefile学习资源库。首先,你可以通过《跟我一起写makefile》快速入门,了解makefile的基本构造和使用。然后,深入研究GNU Make Manual,掌握...
标题中提到的“Makefile教程”是指关于Makefile的学习资料,而“Makefile快速学习资料”说明本资料是为快速掌握Makefile编写的入门级教程。Makefile是Unix系统中的一个工具程序,主要用于软件开发中的自动化编译。它...
通过学习和理解`makefile`,程序员不仅可以更好地组织和管理代码,还能提升大型项目的构建效率,这对于成为一名专业的Linux C程序员来说是必不可少的技能。因此,深入学习`makefile`的编写规则和实践是每个Linux C...
这个`makefile学习用测试文件.rar`很显然是为了帮助初学者理解和掌握`Makefile`的基本概念和用法。在本文中,我们将深入探讨`Makefile`的主要组成部分,以及如何编写和使用它来编译和管理项目。 `Makefile`的核心...
总结来说,这个“makefile示例程序”是一个很好的学习资源,通过它你可以掌握如何编写和使用Makefile来自动化构建项目,提高开发效率。在实际工作中,无论是小型的个人项目还是大型的团队协作,Makefile都是一个不可...