目录
一、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。
-
LOCAL_ADDITIONAL_DEPENDENCIES关键字
https://www.bbsmax.com/A/rV574kAXdP/ -
LOCAL_SHARED_LIBRARIES 与LOCAL_WHOLE_STATIC_LIBRARIES的区别
https://www.cnblogs.com/zl1991/p/6605305.html
https://blog.csdn.net/lyglostangel/article/details/43833591?locationNum=2&fps=1
https://blog.csdn.net/u010538765/article/details/54411682 (编译静态库与动态库) -
LOCAL_INIT_RC
https://www.jianshu.com/p/38cb409e0cf0
https://www.jianshu.com/p/38cb409e0cf0
Android7.0的init.rc的解耦机制,将服务的.rc编译到/etc/init/目录下去。 -
PRODUCT_COPY_FILES
http://blog.chinaunix.net/uid-1718717-id-376121.html
自动拷贝文件
三、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 条评论