一、Android.mk的概念

https://www.cnblogs.com/welhzh/p/4532142.html (分类十分详细,包括编译各种类型的库的模板)

https://www.cnblogs.com/gamesky/p/11369156.html

https://blog.csdn.net/zjy764219923/article/details/88396561 (mk语法)

https://blog.csdn.net/zxc024000/article/details/82823249

https://www.cnblogs.com/tang-skillhunter/p/9133947.html

https://www.cnblogs.com/liulaolaiu/archive/2012/04/27/11744959.html (必看好文)

https://www.cnblogs.com/yyxt/p/4013283.html

http://blog.sina.com.cn/s/blog_e31a00bc0102xu7n.html

https://www.cnblogs.com/mojies/p/16449226.html

二、常用关键字解释说明

https://www.cnblogs.com/MMLoveMeMM/articles/3673561.html (文章写得很详细,但是关于静态库与动态库是否拷贝的地方讲的不对)

  • LOCAL_MODULE_TAGS

LOCAL_MODULE_TAGS 模块的 tag, 为 debug / eng / tests / optional / samples / shell_ash / shell_mksh 等 tag 的组合, 一个模块可有多个Tag。
user: 指该模块只在 user 版本下才编译
eng: 指该模块只在 eng 版本下才编译
tests: 指该模块只在 tests 版本下才编译
optional: 指该模块在所有版本下都编译

如果某个模块没有通过 LOCAL_MODULE_TAGS 指定标记,则其标记默认设置为 optional。仅当 PRODUCT_PACKAGES 的产品配置需要可选模块时,系统才会安装可选模块
该变量在 build/target/product/base.mk 和 build/target/product/core.mk 里有赋值,这是所有产品都将继承的基础配置, 另外每个设备可在自己的产品配置文件 device_.mk 里设置该变量,添加更多的模块。
如果当前目录或者父目录有
_GPL*的文件,那么将自动添加gnu的tag。

三、mk语法

1.mk中的特殊符号

1.反斜杠(\)是换行符

2.$符号
执行宏、取变量值
常用宏的解释:https://www.dazhuanlan.com/2019/12/07/5deb12b5cfe16/

2.添加多个依赖库

如下,将库用空格隔开。

LOCAL_STATIC_JAVA_LIBRARIES := libarity android-support-v4 guava

也可以+=

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4

3.如何在mk文件打印日志

$(info 你想打印的内容)


0 条评论

发表回复

您的电子邮箱地址不会被公开。